changeset 140:c3880d67f906

more tabs
author Frank Benoit <benoit@tionex.de>
date Mon, 21 Jan 2008 23:52:45 +0100
parents 35300367f4d4
children 9a61fc56eb56
files dwt/accessibility/AccessibleFactory.d dwt/graphics/TextLayout.d dwt/widgets/Link.d dwtexamples/controlexample/ControlExample.d dwtexamples/controlexample/ExpandBarTab.d dwtexamples/controlexample/GroupTab.d dwtexamples/controlexample/LabelTab.d dwtexamples/controlexample/LinkTab.d dwtexamples/controlexample/ListTab.d dwtexamples/controlexample/MenuTab.d dwtexamples/controlexample/ProgressBarTab.d dwtexamples/controlexample/RangeTab.d dwtexamples/controlexample/SashTab.d dwtexamples/controlexample/ScaleTab.d dwtexamples/controlexample/ScrollableTab.d dwtexamples/controlexample/SliderTab.d dwtexamples/controlexample/SpinnerTab.d dwtexamples/controlexample/Tab.d dwtexamples/controlexample/TabFolderTab.d dwtexamples/controlexample/TableTab.d dwtexamples/controlexample/TextTab.d
diffstat 21 files changed, 450 insertions(+), 286 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/accessibility/AccessibleFactory.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwt/accessibility/AccessibleFactory.d	Mon Jan 21 23:52:45 2008 +0100
@@ -307,8 +307,7 @@
     static void unregisterAccessible (Accessible accessible) {
         auto controlHandle = accessible.getControlHandle ();
         auto widgetType = OS.G_OBJECT_TYPE (cast(GTypeInstance*)controlHandle);
-        AccessibleFactory factory = Factories[widgetType];
-        if (factory !is null) {
+        if ( auto factory = widgetType in Factories ) {
             factory.removeAccessible (accessible);
         }
     }
--- a/dwt/graphics/TextLayout.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwt/graphics/TextLayout.d	Mon Jan 21 23:52:45 2008 +0100
@@ -119,18 +119,18 @@
     if (attrList !is null) return;
     char[] segmentsText = getSegmentsText();
     OS.pango_layout_set_text (layout, toStringz(segmentsText), segmentsText.length);
-    if (styles.length == 2 && styles[0].style == null && ascent == -1 && descent == -1 && segments == null) return;
+    if (styles.length is 2 && styles[0].style is null && ascent is -1 && descent is -1 && segments is null) return;
     auto ptr = OS.pango_layout_get_text(layout);
     attrList = OS.pango_attr_list_new();
     //PangoAttribute* attribute = new PangoAttribute();
     wchar[] charsW = null;
     wchar[] segmentsTextW = toString16( segmentsText );
     int segementsWLength = segmentsTextW.length;
-    if ((ascent != -1  || descent != -1) && segementsWLength > 0) {
+    if ((ascent !is -1  || descent !is -1) && segementsWLength > 0) {
         auto iter = OS.pango_layout_get_iter(layout);
         if (iter is null) DWT.error(DWT.ERROR_NO_HANDLES);
         PangoRectangle* rect = new PangoRectangle();
-        if (ascent != -1) rect.y =  -(ascent  * OS.PANGO_SCALE);
+        if (ascent !is -1) rect.y =  -(ascent  * OS.PANGO_SCALE);
         rect.height = (Math.max(0, ascent) + Math.max(0, descent)) * OS.PANGO_SCALE;
         int lineCount = OS.pango_layout_get_line_count(layout);
         charsW = new wchar[segementsWLength + lineCount * 2];
@@ -169,7 +169,7 @@
     int offsetCount = 0;
     for (int i = 0; i < charsW.length; i++) {
         wchar c = charsW[i];
-        if (c == LTR_MARK || c == RTL_MARK || c == ZWNBS || c == ZWS) {
+        if (c is LTR_MARK || c is RTL_MARK || c is ZWNBS || c is ZWS) {
             offsetCount++;
         }
     }
@@ -177,7 +177,7 @@
     offsetCount = 0;
     for (int i = 0; i < charsW.length; i++) {
         wchar c = charsW[i];
-        if (c == LTR_MARK || c == RTL_MARK || c == ZWNBS || c == ZWS) {
+        if (c is LTR_MARK || c is RTL_MARK || c is ZWNBS || c is ZWS) {
             invalidOffsets[offsetCount++] = i;
         }
     }
@@ -185,7 +185,7 @@
     for (int i = 0; i < styles.length - 1; i++) {
         StyleItem styleItem = styles[i];
         TextStyle style = styleItem.style;
-        if (style == null) continue;
+        if (style is null) continue;
         int start = translateOffset(styleItem.start);
         int end = translateOffset(styles[i+1].start - 1);
         int byteStart = (OS.g_utf8_offset_to_pointer(ptr, start) - ptr);
@@ -193,7 +193,7 @@
         byteStart = Math.min(byteStart, slen);
         byteEnd = Math.min(byteEnd, slen);
         Font font = style.font;
-        if (font != null && !font.isDisposed()) {
+        if (font !is null && !font.isDisposed()) {
             auto attr = OS.pango_attr_font_desc_new (font.handle);
             attr.start_index = byteStart;
             attr.end_index = byteEnd;
@@ -212,7 +212,7 @@
             OS.pango_attr_list_insert(attrList, attr);
         }
         Color foreground = style.foreground;
-        if (foreground != null && !foreground.isDisposed()) {
+        if (foreground !is null && !foreground.isDisposed()) {
             GdkColor* fg = foreground.handle;
             auto attr = OS.pango_attr_foreground_new(fg.red, fg.green, fg.blue);
             attr.start_index = byteStart;
@@ -220,7 +220,7 @@
             OS.pango_attr_list_insert(attrList, attr);
         }
         Color background = style.background;
-        if (background != null && !background.isDisposed()) {
+        if (background !is null && !background.isDisposed()) {
             GdkColor* bg = background.handle;
             auto attr = OS.pango_attr_background_new(bg.red, bg.green, bg.blue);
             attr.start_index = byteStart;
@@ -228,7 +228,7 @@
             OS.pango_attr_list_insert(attrList, attr);
         }
         GlyphMetrics metrics = style.metrics;
-        if (metrics != null) {
+        if (metrics !is null) {
             PangoRectangle* rect = new PangoRectangle();
             rect.y =  -(metrics.ascent * OS.PANGO_SCALE);
             rect.height = (metrics.ascent + metrics.descent) * OS.PANGO_SCALE;
@@ -239,7 +239,7 @@
             OS.pango_attr_list_insert(attrList, attr);
         }
         int rise = style.rise;
-        if (rise != 0) {
+        if (rise !is 0) {
             auto attr = OS.pango_attr_rise_new (rise * OS.PANGO_SCALE);
             attr.start_index = byteStart;
             attr.end_index = byteEnd;
@@ -345,10 +345,10 @@
     if (selectionBackground !is null && selectionBackground.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
     gc.checkGC(GC.FOREGROUND);
     int length = text.length;
-    bool hasSelection = selectionStart <= selectionEnd && selectionStart != -1 && selectionEnd != -1;
+    bool hasSelection = selectionStart <= selectionEnd && selectionStart !is -1 && selectionEnd !is -1;
     GCData data = gc.data;
     auto cairo = data.cairo;
-    if (flags != 0 && (hasSelection || (flags & DWT.LAST_LINE_SELECTION) != 0)) {
+    if (flags !is 0 && (hasSelection || (flags & DWT.LAST_LINE_SELECTION) !is 0)) {
         PangoLogAttr* attrs;
         int nAttrs;
         PangoLogAttr* logAttr = new PangoLogAttr();
@@ -356,7 +356,7 @@
         int lineCount = OS.pango_layout_get_line_count(layout);
         auto ptr = OS.pango_layout_get_text(layout);
         auto iter = OS.pango_layout_get_iter(layout);
-        if (selectionBackground == null) selectionBackground = device.getSystemColor(DWT.COLOR_LIST_SELECTION);
+        if (selectionBackground is null) selectionBackground = device.getSystemColor(DWT.COLOR_LIST_SELECTION);
         if (cairo !is null && OS.GTK_VERSION >= OS.buildVERSION(2, 8, 0)) {
             Cairo.cairo_save(cairo);
             GdkColor* color = selectionBackground.handle;
@@ -375,7 +375,7 @@
                 lineEnd = OS.g_utf8_strlen(ptr, -1);
             }
             bool extent = false;
-            if (lineIndex == lineCount - 1 && (flags & DWT.LAST_LINE_SELECTION) != 0) {
+            if (lineIndex is lineCount - 1 && (flags & DWT.LAST_LINE_SELECTION) !is 0) {
                 extent = true;
             } else {
                 if (attrs is null) OS.pango_layout_get_log_attrs(layout, &attrs, &nAttrs);
@@ -383,7 +383,7 @@
                 if (!( logAttr.bitfield0 & 0x01 /* PangoLogAttr.is_line_break is Bit0 */)) {
                     if (selectionStart <= lineEnd && lineEnd <= selectionEnd) extent = true;
                 } else {
-                    if (selectionStart <= lineEnd && lineEnd < selectionEnd && (flags & DWT.FULL_SELECTION) != 0) {
+                    if (selectionStart <= lineEnd && lineEnd < selectionEnd && (flags & DWT.FULL_SELECTION) !is 0) {
                         extent = true;
                     }
                 }
@@ -392,10 +392,10 @@
                 int lineX = x + OS.PANGO_PIXELS(rect.x) + OS.PANGO_PIXELS(rect.width);
                 int lineY = y + OS.PANGO_PIXELS(rect.y);
                 int height = OS.PANGO_PIXELS(rect.height);
-                if (ascent != -1 && descent != -1) {
+                if (ascent !is -1 && descent !is -1) {
                     height = Math.max (height, ascent + descent);
                 }
-                int width = (flags & DWT.FULL_SELECTION) != 0 ? 0x7fffffff : height / 3;
+                int width = (flags & DWT.FULL_SELECTION) !is 0 ? 0x7fffffff : height / 3;
                 if (cairo !is null && OS.GTK_VERSION >= OS.buildVERSION(2, 8, 0)) {
                     Cairo.cairo_rectangle(cairo, lineX, lineY, width, height);
                     Cairo.cairo_fill(cairo);
@@ -413,7 +413,7 @@
             OS.gdk_gc_set_foreground(gc.handle, data.foreground);
         }
     }
-    if (length == 0) return;
+    if (length is 0) return;
     if (!hasSelection) {
         if (cairo !is null && OS.GTK_VERSION >= OS.buildVERSION(2, 8, 0)) {
             Cairo.cairo_move_to(cairo, x, y);
@@ -427,9 +427,9 @@
         length = OS.g_utf8_strlen(OS.pango_layout_get_text(layout), -1);
         selectionStart = translateOffset(selectionStart);
         selectionEnd = translateOffset(selectionEnd);
-        if (selectionForeground == null) selectionForeground = device.getSystemColor(DWT.COLOR_LIST_SELECTION_TEXT);
-        if (selectionBackground == null) selectionBackground = device.getSystemColor(DWT.COLOR_LIST_SELECTION);
-        bool fullSelection = selectionStart == 0 && selectionEnd == length - 1;
+        if (selectionForeground is null) selectionForeground = device.getSystemColor(DWT.COLOR_LIST_SELECTION_TEXT);
+        if (selectionBackground is null) selectionBackground = device.getSystemColor(DWT.COLOR_LIST_SELECTION);
+        bool fullSelection = selectionStart is 0 && selectionEnd is length - 1;
         if (fullSelection) {
             if (cairo !is null && OS.GTK_VERSION >= OS.buildVERSION(2, 8, 0)) {
                 auto ptr = OS.pango_layout_get_text(layout);
@@ -549,9 +549,9 @@
     int w, h;
     OS.pango_layout_get_size(layout, &w, &h);
     int wrapWidth = OS.pango_layout_get_width(layout);
-    int width = OS.PANGO_PIXELS(wrapWidth != -1 ? wrapWidth : w);
+    int width = OS.PANGO_PIXELS(wrapWidth !is -1 ? wrapWidth : w);
     int height = OS.PANGO_PIXELS(h);
-    if (ascent != -1 && descent != -1) {
+    if (ascent !is -1 && descent !is -1) {
         height = Math.max (height, ascent + descent);
     }
     return new Rectangle(0, 0, width, height);
@@ -575,7 +575,7 @@
     checkLayout();
     computeRuns();
     int length = text.length;
-    if (length == 0) return new Rectangle(0, 0, 0, 0);
+    if (length is 0) return new Rectangle(0, 0, 0, 0);
     if (start > end) return new Rectangle(0, 0, 0, 0);
     start = Math.min(Math.max(0, start), length - 1);
     end = Math.min(Math.max(0, end), length - 1);
@@ -764,7 +764,7 @@
     int y = OS.PANGO_PIXELS(rect.y);
     int width = OS.PANGO_PIXELS(rect.width);
     int height = OS.PANGO_PIXELS(rect.height);
-    if (ascent != -1 && descent != -1) {
+    if (ascent !is -1 && descent !is -1) {
         height = Math.max (height, ascent + descent);
     }
     return new Rectangle(x, y, width, height);
@@ -843,7 +843,7 @@
     PangoLayoutLine* line = new PangoLayoutLine();
     memmove(line, OS.pango_layout_get_line(layout, lineIndex), PangoLayoutLine.sizeof);
     if (line.runs is null) {
-        auto font = this.font != null ? this.font.handle : device.systemFont.handle;
+        auto font = this.font !is null ? this.font.handle : device.systemFont.handle;
         auto lang = OS.pango_context_get_language(context);
         auto metrics = OS.pango_context_get_metrics(context, font, lang);
         ascent = OS.pango_font_metrics_get_ascent(metrics);
@@ -952,12 +952,12 @@
     int length = text.length;
     if (!(0 <= offset && offset <= length)) DWT.error(DWT.ERROR_INVALID_RANGE);
     if (forward) {
-        if (offset == length) return length;
+        if (offset is length) return length;
     } else {
-        if (offset == 0) return 0;
+        if (offset is 0) return 0;
     }
     int step = forward ? 1 : -1;
-    if ((movement & DWT.MOVEMENT_CHAR) != 0) return offset + step;
+    if ((movement & DWT.MOVEMENT_CHAR) !is 0) return offset + step;
     PangoLogAttr* attrs;
     int nAttrs;
     OS.pango_layout_get_log_attrs(layout, &attrs, &nAttrs);
@@ -968,18 +968,18 @@
     offset = validateOffset(offset, step);
     while (0 < offset && offset < length) {
         *logAttr = attrs[ offset ];
-        if (((movement & DWT.MOVEMENT_CLUSTER) != 0) && ( logAttr.bitfield0 & (1<<4/*is_cursor_position*/))) break;
-        if ((movement & DWT.MOVEMENT_WORD) != 0) {
+        if (((movement & DWT.MOVEMENT_CLUSTER) !is 0) && ( logAttr.bitfield0 & (1<<4/*is_cursor_position*/))) break;
+        if ((movement & DWT.MOVEMENT_WORD) !is 0) {
             if (forward) {
                 if (logAttr.bitfield0 & (1<<6/*is_word_end*/)) break;
             } else {
                 if (logAttr.bitfield0 & (1<<5/*is_word_start*/)) break;
             }
         }
-        if ((movement & DWT.MOVEMENT_WORD_START) != 0) {
+        if ((movement & DWT.MOVEMENT_WORD_START) !is 0) {
             if (logAttr.bitfield0 & (1<<5/*is_word_start*/)) break;
         }
-        if ((movement & DWT.MOVEMENT_WORD_END) != 0) {
+        if ((movement & DWT.MOVEMENT_WORD_END) !is 0) {
             if (logAttr.bitfield0 & (1<<6/*is_word_end*/)) break;
         }
         offset = validateOffset(offset, step);
@@ -1013,7 +1013,7 @@
  */
 public int getOffset(Point point, int[] trailing) {
     checkLayout();
-    if (point == null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
+    if (point is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
     return getOffset(point.x, point.y, trailing);
 }
 
@@ -1043,7 +1043,7 @@
 public int getOffset(int x, int y, int[] trailing) {
     checkLayout();
     computeRuns();
-    if (trailing != null && trailing.length < 1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
+    if (trailing !is null && trailing.length < 1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
 
     /*
     * Feature in GTK.  pango_layout_xy_to_index() returns the
@@ -1090,7 +1090,7 @@
 public int getOrientation() {
     checkLayout();
     int baseDir = OS.pango_context_get_base_dir(context);
-    return baseDir == OS.PANGO_DIRECTION_RTL ? DWT.RIGHT_TO_LEFT : DWT.LEFT_TO_RIGHT;
+    return baseDir is OS.PANGO_DIRECTION_RTL ? DWT.RIGHT_TO_LEFT : DWT.LEFT_TO_RIGHT;
 }
 
 /**
@@ -1135,12 +1135,12 @@
     int[] result = new int[styles.length * 2];
     int count = 0;
     for (int i=0; i<styles.length - 1; i++) {
-        if (styles[i].style != null) {
+        if (styles[i].style !is null) {
             result[count++] = styles[i].start;
             result[count++] = styles[i + 1].start - 1;
         }
     }
-    if (count != result.length) {
+    if (count !is result.length) {
         int[] newResult = new int[count];
         System.arraycopy(result, 0, newResult, 0, count);
         result = newResult;
@@ -1167,16 +1167,16 @@
     int nSegments = segments.length;
     if (nSegments <= 1) return text;
     int len = text.length;
-    if (len == 0) return text;
-    if (nSegments == 2) {
-        if (segments[0] == 0 && segments[1] == len) return text;
+    if (len is 0) return text;
+    if (nSegments is 2) {
+        if (segments[0] is 0 && segments[1] is len) return text;
     }
     char[] oldChars = text[0..len].dup;
     char[] newChars = new char[len + nSegments];
     int charCount = 0, segmentCount = 0;
-    wchar separator = getOrientation() == DWT.RIGHT_TO_LEFT ? RTL_MARK : LTR_MARK;
+    wchar separator = getOrientation() is DWT.RIGHT_TO_LEFT ? RTL_MARK : LTR_MARK;
     while (charCount < len) {
-        if (segmentCount < nSegments && charCount == segments[segmentCount]) {
+        if (segmentCount < nSegments && charCount is segments[segmentCount]) {
             newChars[charCount + segmentCount++] = separator;
         } else {
             newChars[charCount + segmentCount] = oldChars[charCount++];
@@ -1247,11 +1247,11 @@
     TextStyle[] result = new TextStyle[styles.length];
     int count = 0;
     for (int i=0; i<styles.length; i++) {
-        if (styles[i].style != null) {
+        if (styles[i].style !is null) {
             result[count++] = styles[i].style;
         }
     }
-    if (count != result.length) {
+    if (count !is result.length) {
         TextStyle[] newResult = new TextStyle[count];
         System.arraycopy(result, 0, newResult, 0, count);
         result = newResult;
@@ -1300,7 +1300,7 @@
 public int getWidth () {
     checkLayout ();
     int width = OS.pango_layout_get_width(layout);
-    return width != -1 ? OS.PANGO_PIXELS(width) : -1;
+    return width !is -1 ? OS.PANGO_PIXELS(width) : -1;
 }
 
 /**
@@ -1340,9 +1340,9 @@
     checkLayout();
     int mask = DWT.LEFT | DWT.CENTER | DWT.RIGHT;
     alignment &= mask;
-    if (alignment == 0) return;
-    if ((alignment & DWT.LEFT) != 0) alignment = DWT.LEFT;
-    if ((alignment & DWT.RIGHT) != 0) alignment = DWT.RIGHT;
+    if (alignment is 0) return;
+    if ((alignment & DWT.LEFT) !is 0) alignment = DWT.LEFT;
+    if ((alignment & DWT.RIGHT) !is 0) alignment = DWT.RIGHT;
     int al = OS.PANGO_ALIGN_LEFT;
     switch (alignment) {
         case DWT.CENTER: al = OS.PANGO_ALIGN_CENTER; break;
@@ -1373,7 +1373,7 @@
 public void setAscent (int ascent) {
     checkLayout();
     if (ascent < -1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
-    if (this.ascent == ascent) return;
+    if (this.ascent is ascent) return;
     freeRuns();
     this.ascent = ascent;
 }
@@ -1399,7 +1399,7 @@
 public void setDescent (int descent) {
     checkLayout();
     if (descent < -1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
-    if (this.descent == descent) return;
+    if (this.descent is descent) return;
     freeRuns();
     this.descent = descent;
 }
@@ -1424,7 +1424,7 @@
     checkLayout ();
     if (font !is null && font.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
     if (this.font is font) return;
-    if (font !is null && font == this.font ) return;
+    if (font !is null && font ==/*eq*/ this.font ) return;
     this.font = font;
     OS.pango_layout_set_font_description(layout, font !is null ? font.handle : null);
 }
@@ -1479,10 +1479,10 @@
     checkLayout();
     int mask = DWT.RIGHT_TO_LEFT | DWT.LEFT_TO_RIGHT;
     orientation &= mask;
-    if (orientation == 0) return;
-    if ((orientation & DWT.LEFT_TO_RIGHT) != 0) orientation = DWT.LEFT_TO_RIGHT;
-    int baseDir = orientation == DWT.RIGHT_TO_LEFT ? OS.PANGO_DIRECTION_RTL : OS.PANGO_DIRECTION_LTR;
-    if (OS.pango_context_get_base_dir(context) == baseDir) return;
+    if (orientation is 0) return;
+    if ((orientation & DWT.LEFT_TO_RIGHT) !is 0) orientation = DWT.LEFT_TO_RIGHT;
+    int baseDir = orientation is DWT.RIGHT_TO_LEFT ? OS.PANGO_DIRECTION_RTL : OS.PANGO_DIRECTION_LTR;
+    if (OS.pango_context_get_base_dir(context) is baseDir) return;
     OS.pango_context_set_base_dir(context, baseDir);
     OS.pango_layout_context_changed(layout);
 }
@@ -1526,14 +1526,14 @@
  */
 public void setSegments(int[] segments) {
     checkLayout();
-    if (this.segments == null && segments == null) return;
-    if (this.segments != null && segments !=null) {
-        if (this.segments.length == segments.length) {
+    if (this.segments is null && segments is null) return;
+    if (this.segments !is null && segments !is null) {
+        if (this.segments.length is segments.length) {
             int i;
             for (i = 0; i <segments.length; i++) {
-                if (this.segments[i] != segments[i]) break;
+                if (this.segments[i] !is segments[i]) break;
             }
-            if (i == segments.length) return;
+            if (i is segments.length) return;
         }
     }
     freeRuns();
@@ -1556,7 +1556,7 @@
 public void setStyle (TextStyle style, int start, int end) {
     checkLayout();
     int length = text.length;
-    if (length == 0) return;
+    if (length is 0) return;
     if (start > end) return;
     start = Math.min(Math.max(0, start), length - 1);
     end = Math.min(Math.max(0, end), length - 1);
@@ -1587,11 +1587,11 @@
     }
     if (0 <= high && high < styles.length) {
         StyleItem item = styles[high];
-        if (item.start is start && styles[high + 1].start - 1 == end) {
+        if (item.start is start && styles[high + 1].start - 1 is end) {
             if (style is null) {
                 if (item.style is null) return;
             } else {
-                if (style==item.style) return;
+                if (style ==/*eq*/ item.style) return;
             }
         }
     }
@@ -1652,18 +1652,18 @@
  */
 public void setTabs(int[] tabs) {
     checkLayout();
-    if (this.tabs == null && tabs == null) return;
-    if (this.tabs!= null && tabs != null) {
-        if (this.tabs.length == tabs.length) {
+    if (this.tabs is null && tabs is null) return;
+    if (this.tabs!is null && tabs !is null) {
+        if (this.tabs.length is tabs.length) {
             int i;
             for (i = 0; i <tabs.length; i++) {
-                if (this.tabs[i] != tabs[i]) break;
+                if (this.tabs[i] !is tabs[i]) break;
             }
-            if (i == tabs.length) return;
+            if (i is tabs.length) return;
         }
     }
     this.tabs = tabs;
-    if (tabs == null) {
+    if (tabs is null) {
         OS.pango_layout_set_tabs(layout, device.emptyTab);
     } else {
         auto tabArray = OS.pango_tab_array_new(tabs.length, true);
@@ -1697,8 +1697,8 @@
  */
 public void setText (char[] text) {
     checkLayout ();
-    if (text == null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
-    if (text==/*eq*/this.text) return;
+    if (text is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
+    if (text ==/*eq*/this.text) return;
     freeRuns();
     this.text = text;
     styles = new StyleItem[2];
@@ -1725,13 +1725,13 @@
  */
 public void setWidth (int width) {
     checkLayout ();
-    if (width < -1 || width == 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
+    if (width < -1 || width is 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
     freeRuns();
-    OS.pango_layout_set_width(layout, width == -1 ? -1 : width * OS.PANGO_SCALE);
+    OS.pango_layout_set_width(layout, width is -1 ? -1 : width * OS.PANGO_SCALE);
 }
 
 static final bool isLam(int ch) {
-    return ch == 0x0644;
+    return ch is 0x0644;
 }
 
 static final bool isAlef(int ch) {
@@ -1768,7 +1768,7 @@
  */
 int translateOffset(int offset) {
     int length = text.length;
-    if (length == 0) return offset;
+    if (length is 0) return offset;
     if (invalidOffsets is null) return offset;
     for (int i = 0; i < invalidOffsets.length; i++) {
         if (offset < invalidOffsets[i]) break;
@@ -1782,10 +1782,10 @@
  */
 int untranslateOffset(int offset) {
     int length = text.length;
-    if (length == 0) return offset;
+    if (length is 0) return offset;
     if (invalidOffsets is null) return offset;
     for (int i = 0; i < invalidOffsets.length; i++) {
-        if (offset == invalidOffsets[i]) {
+        if (offset is invalidOffsets[i]) {
             offset++;
             continue;
         }
@@ -1802,7 +1802,7 @@
     do {
         offset += step;
         while (0 <= i && i < invalidOffsets.length) {
-            if (invalidOffsets[i] == offset) break;
+            if (invalidOffsets[i] is offset) break;
             i += step;
         }
     } while (0 <= i && i < invalidOffsets.length);
--- a/dwt/widgets/Link.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwt/widgets/Link.d	Mon Jan 21 23:52:45 2008 +0100
@@ -111,8 +111,8 @@
  * @see Widget#getStyle
  */
 public this (Composite parent, int style) {
+    static_this();
     super (parent, style);
-    static_this();
 }
 
 /**
--- a/dwtexamples/controlexample/ControlExample.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/ControlExample.d	Mon Jan 21 23:52:45 2008 +0100
@@ -44,7 +44,6 @@
 import dwtexamples.controlexample.CoolBarTab;
 //import dwtexamples.controlexample.DateTimeTab;
 import dwtexamples.controlexample.DialogTab;
-/+
 import dwtexamples.controlexample.ExpandBarTab;
 import dwtexamples.controlexample.GroupTab;
 import dwtexamples.controlexample.LabelTab;
@@ -54,14 +53,13 @@
 import dwtexamples.controlexample.ProgressBarTab;
 import dwtexamples.controlexample.SashTab;
 import dwtexamples.controlexample.ScaleTab;
-+/
 import dwtexamples.controlexample.ShellTab;
-/+
 import dwtexamples.controlexample.SliderTab;
 import dwtexamples.controlexample.SpinnerTab;
 import dwtexamples.controlexample.TabFolderTab;
 import dwtexamples.controlexample.TableTab;
 import dwtexamples.controlexample.TextTab;
+/+
 import dwtexamples.controlexample.ToolBarTab;
 import dwtexamples.controlexample.ToolTipTab;
 import dwtexamples.controlexample.TreeTab;
@@ -149,7 +147,6 @@
             new CoolBarTab (this),
             //new DateTimeTab (this),
             new DialogTab (this),
-            /+
             new ExpandBarTab (this),
             new GroupTab (this),
             new LabelTab (this),
@@ -159,14 +156,13 @@
             new ProgressBarTab (this),
             new SashTab (this),
             new ScaleTab (this),
-            +/
-            shellTab = new ShellTab(this)
-            /+
+            shellTab = new ShellTab(this),
             new SliderTab (this),
             new SpinnerTab (this),
             new TabFolderTab (this),
             new TableTab (this),
-            new TextTab (this),
+            new TextTab (this)
+            /+
             new ToolBarTab (this),
             new ToolTipTab (this),
             new TreeTab (this),
@@ -253,7 +249,6 @@
                     images = new Image[imageData.length];
 
                     for (int i = 0; i < imageData.length; ++i) {
-                        Stdout.formatln( "try {}", i );
                         InputStream sourceStream = new ByteArrayInputStream( imageData[i] );
                         ImageData source = new ImageData(sourceStream);
                         if (imageTypes[i] is DWT.ICON) {
--- a/dwtexamples/controlexample/ExpandBarTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/ExpandBarTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -23,6 +23,9 @@
 import dwt.widgets.Label;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+
 class ExpandBarTab : Tab {
     /* Example widgets and groups that contain them */
     ExpandBar expandBar1;
@@ -67,10 +70,10 @@
         // First item
         Composite composite = new Composite (expandBar1, DWT.NONE);
         composite.setLayout(new GridLayout ());
-        new Button (composite, DWT.PUSH).setText("DWT.PUSH");
-        new Button (composite, DWT.RADIO).setText("DWT.RADIO");
-        new Button (composite, DWT.CHECK).setText("DWT.CHECK");
-        new Button (composite, DWT.TOGGLE).setText("DWT.TOGGLE");
+        (new Button (composite, DWT.PUSH)).setText("DWT.PUSH");
+        (new Button (composite, DWT.RADIO)).setText("DWT.RADIO");
+        (new Button (composite, DWT.CHECK)).setText("DWT.CHECK");
+        (new Button (composite, DWT.TOGGLE)).setText("DWT.TOGGLE");
         ExpandItem item = new ExpandItem (expandBar1, DWT.NONE, 0);
         item.setText(ControlExample.getResourceString("Item1_Text"));
         item.setHeight(composite.computeSize(DWT.DEFAULT, DWT.DEFAULT).y);
@@ -80,14 +83,14 @@
         // Second item
         composite = new Composite (expandBar1, DWT.NONE);
         composite.setLayout(new GridLayout (2, false));
-        new Label (composite, DWT.NONE).setImage(display.getSystemImage(DWT.ICON_ERROR));
-        new Label (composite, DWT.NONE).setText("DWT.ICON_ERROR");
-        new Label (composite, DWT.NONE).setImage(display.getSystemImage(DWT.ICON_INFORMATION));
-        new Label (composite, DWT.NONE).setText("DWT.ICON_INFORMATION");
-        new Label (composite, DWT.NONE).setImage(display.getSystemImage(DWT.ICON_WARNING));
-        new Label (composite, DWT.NONE).setText("DWT.ICON_WARNING");
-        new Label (composite, DWT.NONE).setImage(display.getSystemImage(DWT.ICON_QUESTION));
-        new Label (composite, DWT.NONE).setText("DWT.ICON_QUESTION");
+        (new Label (composite, DWT.NONE)).setImage(display.getSystemImage(DWT.ICON_ERROR));
+        (new Label (composite, DWT.NONE)).setText("DWT.ICON_ERROR");
+        (new Label (composite, DWT.NONE)).setImage(display.getSystemImage(DWT.ICON_INFORMATION));
+        (new Label (composite, DWT.NONE)).setText("DWT.ICON_INFORMATION");
+        (new Label (composite, DWT.NONE)).setImage(display.getSystemImage(DWT.ICON_WARNING));
+        (new Label (composite, DWT.NONE)).setText("DWT.ICON_WARNING");
+        (new Label (composite, DWT.NONE)).setImage(display.getSystemImage(DWT.ICON_QUESTION));
+        (new Label (composite, DWT.NONE)).setText("DWT.ICON_QUESTION");
         item = new ExpandItem (expandBar1, DWT.NONE, 1);
         item.setText(ControlExample.getResourceString("Item2_Text"));
         item.setHeight(composite.computeSize(DWT.DEFAULT, DWT.DEFAULT).y);
@@ -114,28 +117,28 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {expandBar1};
+        return [ cast(Widget) expandBar1];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Spacing"};
+    char[][] getMethodNames() {
+        return ["Spacing"];
     }
 
     /**
      * Gets the short text for the tab folder item.
      */
-    public String getShortTabText() {
+    public char[] getShortTabText() {
         return "EB";
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "ExpandBar";
     }
 
--- a/dwtexamples/controlexample/GroupTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/GroupTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -21,6 +21,9 @@
 import dwt.widgets.Group;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+
 class GroupTab : Tab {
     Button titleButton;
 
@@ -49,7 +52,7 @@
         titleButton.setText (ControlExample.getResourceString("Title_Text"));
 
         /* Add the listeners */
-        titleButton.addSelectionListener (new SelectionAdapter () {
+        titleButton.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setTitleText ();
             }
@@ -113,21 +116,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {group1};
+        return [ cast(Widget) group1];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"ToolTipText"};
+    char[][] getMethodNames() {
+        return ["ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Group";
     }
 
--- a/dwtexamples/controlexample/LabelTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/LabelTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -20,6 +20,10 @@
 import dwt.widgets.Label;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.AlignableTab;
+
 class LabelTab : AlignableTab {
     /* Example widgets and groups that contain them */
     Label label1, label2, label3, label4, label5, label6;
@@ -127,21 +131,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {label1, label2, label3, label4, label5, label6};
+        return [ cast(Widget) label1, label2, label3, label4, label5, label6 ];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Text", "ToolTipText"};
+    char[][] getMethodNames() {
+        return ["Text", "ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Label";
     }
 
--- a/dwtexamples/controlexample/LinkTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/LinkTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -22,6 +22,9 @@
 import dwt.widgets.Link;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+
 class LinkTab : Tab {
     /* Example widgets and groups that contain them */
     Link link1;
@@ -37,7 +40,7 @@
     /**
      * Creates the "Example" group.
      */
-    void createExampleGroup () {
+    override void createExampleGroup () {
         super.createExampleGroup ();
 
         /* Create a group for the list */
@@ -50,7 +53,7 @@
     /**
      * Creates the "Example" widgets.
      */
-    void createExampleWidgets () {
+    override void createExampleWidgets () {
 
         /* Compute the widget style */
         int style = getDefaultStyle();
@@ -83,22 +86,22 @@
      */
     Widget [] getExampleWidgets () {
 //       temporary code for photon
-        if (link1 !is null) return new Widget [] {link1};
-        return new Widget[] {};
+        if (link1 !is null) return [ cast(Widget) link1 ];
+        return null;
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Text", "ToolTipText"};
+    char[][] getMethodNames() {
+        return ["Text", "ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Link";
     }
 
--- a/dwtexamples/controlexample/ListTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/ListTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -19,27 +19,35 @@
 import dwt.widgets.List;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.ScrollableTab;
+
 class ListTab : ScrollableTab {
 
     /* Example widgets and groups that contain them */
     List list1;
     Group listGroup;
 
-    static String [] ListData1 = {ControlExample.getResourceString("ListData1_0"),
-                                  ControlExample.getResourceString("ListData1_1"),
-                                  ControlExample.getResourceString("ListData1_2"),
-                                  ControlExample.getResourceString("ListData1_3"),
-                                  ControlExample.getResourceString("ListData1_4"),
-                                  ControlExample.getResourceString("ListData1_5"),
-                                  ControlExample.getResourceString("ListData1_6"),
-                                  ControlExample.getResourceString("ListData1_7"),
-                                  ControlExample.getResourceString("ListData1_8")};
+    static char[] [] ListData1;
 
     /**
      * Creates the Tab within a given instance of ControlExample.
      */
     this(ControlExample instance) {
         super(instance);
+        if( ListData1.length is 0 ){
+            ListData1 = [
+                ControlExample.getResourceString("ListData1_0"),
+                ControlExample.getResourceString("ListData1_1"),
+                ControlExample.getResourceString("ListData1_2"),
+                ControlExample.getResourceString("ListData1_3"),
+                ControlExample.getResourceString("ListData1_4"),
+                ControlExample.getResourceString("ListData1_5"),
+                ControlExample.getResourceString("ListData1_6"),
+                ControlExample.getResourceString("ListData1_7"),
+                ControlExample.getResourceString("ListData1_8")];
+        }
     }
 
     /**
@@ -77,21 +85,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {list1};
+        return [cast(Widget) list1];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Items", "Selection", "ToolTipText", "TopIndex"};
+    char[][] getMethodNames() {
+        return ["Items", "Selection", "ToolTipText", "TopIndex" ];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "List";
     }
 }
--- a/dwtexamples/controlexample/MenuTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/MenuTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -26,6 +26,10 @@
 import dwt.widgets.MenuItem;
 import dwt.widgets.Shell;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import tango.util.Convert;
+
 class MenuTab : Tab {
     /* Widgets added to the "Menu Style", "MenuItem Style" and "Other" groups */
     Button barButton, dropDownButton, popUpButton, noRadioGroupButton, leftToRightButton, rightToLeftButton;
@@ -36,13 +40,14 @@
 
     /* Variables used to track the open shells */
     int shellCount = 0;
-    Shell [] shells = new Shell [4];
+    Shell [] shells;
 
     /**
      * Creates the Tab within a given instance of ControlExample.
      */
     this(ControlExample instance) {
         super(instance);
+        shells = new Shell [4];
     }
 
     /**
@@ -116,8 +121,8 @@
 
         /* Set the size, title and open the shell. */
         shell.setSize (300, 100);
-        shell.setText (ControlExample.getResourceString("Title") + shellCount);
-        shell.addPaintListener(new PaintListener() {
+        shell.setText (ControlExample.getResourceString("Title") ~ to!(char[])(shellCount));
+        shell.addPaintListener(new class() PaintListener {
             public void paintControl(PaintEvent e) {
                 e.gc.drawString(ControlExample.getResourceString("PopupMenuHere"), 20, 20);
             }
@@ -213,17 +218,17 @@
         closeAllButton.setText (ControlExample.getResourceString("Close_All_Shells"));
 
         /* Add the listeners */
-        createButton.addSelectionListener(new SelectionAdapter() {
+        createButton.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected(SelectionEvent e) {
                 createButtonSelected(e);
             }
         });
-        closeAllButton.addSelectionListener(new SelectionAdapter() {
+        closeAllButton.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected(SelectionEvent e) {
                 closeAllShells ();
             }
         });
-        subMenuButton.addSelectionListener(new SelectionAdapter() {
+        subMenuButton.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected(SelectionEvent e) {
                 subSubMenuButton.setEnabled (subMenuButton.getSelection ());
             }
@@ -293,19 +298,19 @@
         }
     }
 
-    String getMenuItemText(String item) {
-        bool cascade = item.equals("Cascade");
+    char[] getMenuItemText(char[] item) {
+        bool cascade = ( item == "Cascade");
         bool mnemonic = mnemonicsButton.getSelection();
         bool accelerator = acceleratorsButton.getSelection();
-        char acceleratorKey = item.charAt(0);
+        char acceleratorKey = item[0];
         if (mnemonic && accelerator && !cascade) {
-            return ControlExample.getResourceString(item + "WithMnemonic") + "\tCtrl+Shift+" + acceleratorKey;
+            return ControlExample.getResourceString(item ~ "WithMnemonic") ~ "\tCtrl+Shift+" ~ acceleratorKey;
         }
         if (accelerator && !cascade) {
-            return ControlExample.getResourceString(item) + "\tCtrl+Shift+" + acceleratorKey;
+            return ControlExample.getResourceString(item) ~ "\tCtrl+Shift+" ~ acceleratorKey;
         }
         if (mnemonic) {
-            return ControlExample.getResourceString(item + "WithMnemonic");
+            return ControlExample.getResourceString(item ~ "WithMnemonic");
         }
         return ControlExample.getResourceString(item);
     }
@@ -313,7 +318,7 @@
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Menu";
     }
 }
--- a/dwtexamples/controlexample/ProgressBarTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/ProgressBarTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -20,6 +20,10 @@
 import dwt.widgets.ProgressBar;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.RangeTab;
+
 class ProgressBarTab : RangeTab {
     /* Example widgets and groups that contain them */
     ProgressBar progressBar1;
@@ -83,28 +87,28 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {progressBar1};
+        return [ cast(Widget) progressBar1];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Selection", "ToolTipText"};
+    char[][] getMethodNames() {
+        return ["Selection", "ToolTipText"];
     }
 
     /**
      * Gets the short text for the tab folder item.
      */
-    public String getShortTabText() {
+    public char[] getShortTabText() {
         return "PB";
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "ProgressBar";
     }
 
--- a/dwtexamples/controlexample/RangeTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/RangeTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -22,6 +22,9 @@
 import dwt.widgets.Spinner;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+
 abstract class RangeTab : Tab {
     /* Style widgets added to the "Style" group */
     Button horizontalButton, verticalButton;
@@ -68,7 +71,7 @@
         maximumSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        maximumSpinner.addSelectionListener(new SelectionAdapter () {
+        maximumSpinner.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetMaximum ();
             }
@@ -96,7 +99,7 @@
         minimumSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        minimumSpinner.addSelectionListener (new SelectionAdapter () {
+        minimumSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetMinimum ();
             }
@@ -126,7 +129,7 @@
         selectionSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        selectionSpinner.addSelectionListener(new SelectionAdapter() {
+        selectionSpinner.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected(SelectionEvent event) {
                 setWidgetSelection ();
             }
--- a/dwtexamples/controlexample/SashTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/SashTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -28,6 +28,9 @@
 import dwt.widgets.Text;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+
 class SashTab : Tab {
     /* Example widgets and groups that contain them */
     Sash hSash, vSash;
@@ -37,25 +40,8 @@
     Text text;
     Button smoothButton;
 
-    static String [] ListData0 = {ControlExample.getResourceString("ListData0_0"),
-                                  ControlExample.getResourceString("ListData0_1"),
-                                  ControlExample.getResourceString("ListData0_2"),
-                                  ControlExample.getResourceString("ListData0_3"),
-                                  ControlExample.getResourceString("ListData0_4"),
-                                  ControlExample.getResourceString("ListData0_5"),
-                                  ControlExample.getResourceString("ListData0_6"),
-                                  ControlExample.getResourceString("ListData0_7"),
-                                  ControlExample.getResourceString("ListData0_8")};
-
-    static String [] ListData1 = {ControlExample.getResourceString("ListData1_0"),
-                                  ControlExample.getResourceString("ListData1_1"),
-                                  ControlExample.getResourceString("ListData1_2"),
-                                  ControlExample.getResourceString("ListData1_3"),
-                                  ControlExample.getResourceString("ListData1_4"),
-                                  ControlExample.getResourceString("ListData1_5"),
-                                  ControlExample.getResourceString("ListData1_6"),
-                                  ControlExample.getResourceString("ListData1_7"),
-                                  ControlExample.getResourceString("ListData1_8")};
+    static char[] [] ListData0;
+    static char[] [] ListData1;
 
     /* Constants */
     static final int SASH_WIDTH = 3;
@@ -64,8 +50,32 @@
     /**
      * Creates the Tab within a given instance of ControlExample.
      */
-    SashTab(ControlExample instance) {
+    this(ControlExample instance) {
         super(instance);
+        if( ListData0.length is 0 ){
+            ListData0 = [
+                ControlExample.getResourceString("ListData0_0"),
+                ControlExample.getResourceString("ListData0_1"),
+                ControlExample.getResourceString("ListData0_2"),
+                ControlExample.getResourceString("ListData0_3"),
+                ControlExample.getResourceString("ListData0_4"),
+                ControlExample.getResourceString("ListData0_5"),
+                ControlExample.getResourceString("ListData0_6"),
+                ControlExample.getResourceString("ListData0_7"),
+                ControlExample.getResourceString("ListData0_8")];
+        }
+        if( ListData1.length is 0 ){
+            ListData1 = [
+                ControlExample.getResourceString("ListData1_0"),
+                ControlExample.getResourceString("ListData1_1"),
+                ControlExample.getResourceString("ListData1_2"),
+                ControlExample.getResourceString("ListData1_3"),
+                ControlExample.getResourceString("ListData1_4"),
+                ControlExample.getResourceString("ListData1_5"),
+                ControlExample.getResourceString("ListData1_6"),
+                ControlExample.getResourceString("ListData1_7"),
+                ControlExample.getResourceString("ListData1_8")];
+        }
     }
 
     /**
@@ -108,7 +118,7 @@
         hSash = new Sash (sashComp, DWT.HORIZONTAL | style);
 
         /* Add the listeners */
-        hSash.addSelectionListener (new SelectionAdapter () {
+        hSash.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 Rectangle rect = vSash.getParent().getClientArea();
                 event.y = Math.min (Math.max (event.y, SASH_LIMIT), rect.height - SASH_LIMIT);
@@ -118,7 +128,7 @@
                 }
             }
         });
-        vSash.addSelectionListener (new SelectionAdapter () {
+        vSash.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 Rectangle rect = vSash.getParent().getClientArea();
                 event.x = Math.min (Math.max (event.x, SASH_LIMIT), rect.width - SASH_LIMIT);
@@ -128,7 +138,7 @@
                 }
             }
         });
-        sashComp.addControlListener (new ControlAdapter () {
+        sashComp.addControlListener (new class() ControlAdapter {
             public void controlResized (ControlEvent event) {
                 resized ();
             }
@@ -163,21 +173,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {hSash, vSash};
+        return [ cast(Widget) hSash, vSash ];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"ToolTipText"};
+    char[][] getMethodNames() {
+        return ["ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Sash";
     }
 
--- a/dwtexamples/controlexample/ScaleTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/ScaleTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -22,6 +22,11 @@
 import dwt.widgets.Spinner;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.RangeTab;
+
+
 class ScaleTab : RangeTab {
     /* Example widgets and groups that contain them */
     Scale scale1;
@@ -96,7 +101,7 @@
         incrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        incrementSpinner.addSelectionListener (new SelectionAdapter () {
+        incrementSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent e) {
                 setWidgetIncrement ();
             }
@@ -124,7 +129,7 @@
         pageIncrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        pageIncrementSpinner.addSelectionListener (new SelectionAdapter () {
+        pageIncrementSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetPageIncrement ();
             }
@@ -135,21 +140,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {scale1};
+        return [ cast(Widget) scale1];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Selection", "ToolTipText"};
+    char[][] getMethodNames() {
+        return ["Selection", "ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Scale";
     }
 
--- a/dwtexamples/controlexample/ScrollableTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/ScrollableTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -16,6 +16,9 @@
 import dwt.widgets.Button;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+
 abstract class ScrollableTab : Tab {
     /* Style widgets added to the "Style" group */
     Button singleButton, multiButton, horizontalButton, verticalButton;
--- a/dwtexamples/controlexample/SliderTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/SliderTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -22,6 +22,10 @@
 import dwt.widgets.Spinner;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.RangeTab;
+
 class SliderTab : RangeTab {
     /* Example widgets and groups that contain them */
     Slider slider1;
@@ -96,7 +100,7 @@
         incrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        incrementSpinner.addSelectionListener (new SelectionAdapter () {
+        incrementSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent e) {
                 setWidgetIncrement ();
             }
@@ -124,7 +128,7 @@
         pageIncrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        pageIncrementSpinner.addSelectionListener (new SelectionAdapter () {
+        pageIncrementSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetPageIncrement ();
             }
@@ -152,7 +156,7 @@
         thumbSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        thumbSpinner.addSelectionListener (new SelectionAdapter () {
+        thumbSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetThumb ();
             }
@@ -163,21 +167,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {slider1};
+        return [ cast(Widget) slider1 ];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Selection", "ToolTipText"};
+    char[][] getMethodNames() {
+        return ["Selection", "ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Slider";
     }
 
--- a/dwtexamples/controlexample/SpinnerTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/SpinnerTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -26,6 +26,10 @@
 import dwt.widgets.TabFolder;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.RangeTab;
+
 class SpinnerTab : RangeTab {
 
     /* Example widgets and groups that contain them */
@@ -104,7 +108,7 @@
         incrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        incrementSpinner.addSelectionListener (new SelectionAdapter () {
+        incrementSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent e) {
                 setWidgetIncrement ();
             }
@@ -132,7 +136,7 @@
         pageIncrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        pageIncrementSpinner.addSelectionListener (new SelectionAdapter () {
+        pageIncrementSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetPageIncrement ();
             }
@@ -160,7 +164,7 @@
         digitsSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
 
         /* Add the listeners */
-        digitsSpinner.addSelectionListener (new SelectionAdapter () {
+        digitsSpinner.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent e) {
                 setWidgetDigits ();
             }
@@ -182,7 +186,7 @@
          * its preferred size, and then resizes the shell, we
          * recalculate the preferred size correctly.
          */
-        tabFolderPage.addControlListener(new ControlAdapter() {
+        tabFolderPage.addControlListener(new class() ControlAdapter {
             public void controlResized(ControlEvent e) {
                 setExampleWidgetSize ();
             }
@@ -209,21 +213,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {spinner1};
+        return [ cast(Widget) spinner1 ];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Selection", "ToolTipText"};
+    char[][] getMethodNames() {
+        return ["Selection", "ToolTipText"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Spinner";
     }
 
--- a/dwtexamples/controlexample/Tab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/Tab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -56,10 +56,17 @@
 import dwt.widgets.Group;
 import dwt.widgets.Item;
 import dwt.widgets.Label;
+import dwt.widgets.Link;
+import dwt.widgets.List;
 import dwt.widgets.Listener;
 import dwt.widgets.Menu;
 import dwt.widgets.MenuItem;
+import dwt.widgets.ProgressBar;
+import dwt.widgets.Sash;
+import dwt.widgets.Scale;
 import dwt.widgets.Shell;
+import dwt.widgets.Slider;
+import dwt.widgets.Spinner;
 import dwt.widgets.TabFolder;
 import dwt.widgets.Table;
 import dwt.widgets.TableItem;
@@ -67,6 +74,7 @@
 import dwt.widgets.Widget;
 import dwt.widgets.Canvas;
 import dwt.widgets.CoolBar;
+import dwt.widgets.ExpandBar;
 
 import dwtexamples.controlexample.ControlExample;
 import tango.text.convert.Format;
@@ -248,6 +256,80 @@
             createSetterGetter( ti, "ToolTipText", typeid(char[]) );
             reflectTypeInfos[ CoolBar.classinfo ] = ti;
         }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Spacing", typeid(int) );
+            reflectTypeInfos[ ExpandBar.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Group.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Text", typeid(char[]) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Label.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Text", typeid(char[]) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Link.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Items", typeid(char[][]) );
+            createSetterGetter( ti, "Selection", typeid(char[]) );
+            createSetterGetter( ti, "TopIndex", typeid(int) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ List.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Selection", typeid(char[]) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ ProgressBar.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Sash.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Selection", typeid(int) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Scale.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Selection", typeid(int) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Slider.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "Selection", typeid(int) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            reflectTypeInfos[ Spinner.classinfo ] = ti;
+        }
+        {
+            ReflectTypeInfo ti;
+            createSetterGetter( ti, "DoubleClickEnabled", typeid(bool) );
+            createSetterGetter( ti, "EchoChar", typeid(wchar) );
+            createSetterGetter( ti, "Editable", typeid(bool) );
+            createSetterGetter( ti, "Orientation", typeid(int) );
+            createSetterGetter( ti, "Selection", typeid(Point) );
+            createSetterGetter( ti, "Tabs", typeid(int) );
+            createSetterGetter( ti, "Text", typeid(char[]) );
+            createSetterGetter( ti, "TextLimit", typeid(int) );
+            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
+            createSetterGetter( ti, "TopIndex", typeid(int) );
+            reflectTypeInfos[ Text.classinfo ] = ti;
+        }
+
         /+{
             ReflectTypeInfo ti;
             createSetterGetter( ti, "Editable", typeid(bool) );
--- a/dwtexamples/controlexample/TabFolderTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/TabFolderTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -23,6 +23,10 @@
 import dwt.widgets.Text;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import tango.text.convert.Format;
+
 class TabFolderTab : Tab {
     /* Example widgets and groups that contain them */
     TabFolder tabFolder1;
@@ -31,15 +35,19 @@
     /* Style widgets added to the "Style" group */
     Button topButton, bottomButton;
 
-    static String [] TabItems1 = {ControlExample.getResourceString("TabItem1_0"),
-                                  ControlExample.getResourceString("TabItem1_1"),
-                                  ControlExample.getResourceString("TabItem1_2")};
+    static char[] [] TabItems1;
 
     /**
      * Creates the Tab within a given instance of ControlExample.
      */
     this(ControlExample instance) {
         super(instance);
+        if( TabItems1.length is 0 ){
+            TabItems1 = [
+                ControlExample.getResourceString("TabItem1_0"),
+                ControlExample.getResourceString("TabItem1_1"),
+                ControlExample.getResourceString("TabItem1_2")];
+        }
     }
 
     /**
@@ -71,9 +79,9 @@
         for (int i = 0; i < TabItems1.length; i++) {
             TabItem item = new TabItem(tabFolder1, DWT.NONE);
             item.setText(TabItems1[i]);
-            item.setToolTipText(ControlExample.getResourceString("Tooltip", new String [] {TabItems1[i]}));
+            item.setToolTipText(Format( ControlExample.getResourceString("Tooltip"), TabItems1[i] ));
             Text content = new Text(tabFolder1, DWT.WRAP | DWT.MULTI);
-            content.setText(ControlExample.getResourceString("TabItem_content") + ": " + i);
+            content.setText(Format( "{}: {}", ControlExample.getResourceString("TabItem_content"), i));
             item.setControl(content);
         }
     }
@@ -107,30 +115,32 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {tabFolder1};
+        return [cast(Widget) tabFolder1 ];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"Selection", "SelectionIndex"};
+    char[][] getMethodNames() {
+        return ["Selection", "SelectionIndex"];
     }
 
-    String setMethodName(String methodRoot) {
+    char[] setMethodName(char[] methodRoot) {
         /* Override to handle special case of int getSelectionIndex()/setSelection(int) */
-        return (methodRoot.equals("SelectionIndex")) ? "setSelection" : "set" + methodRoot;
+        return (methodRoot == "SelectionIndex") ? "setSelection" : "set" ~ methodRoot;
     }
 
-    Object[] parameterForType(String typeName, String value, Widget widget) {
-        if (value.equals("")) return new Object[] {new TabItem[0]};
+//PROTING_LEFT
+/+
+    Object[] parameterForType(char[] typeName, char[] value, Widget widget) {
+        if (value.length is 0 ) return new Object[] {new TabItem[0]};
         if (typeName.equals("org.eclipse.swt.widgets.TabItem")) {
             TabItem item = findItem(value, ((TabFolder) widget).getItems());
             if (item !is null) return new Object[] {item};
         }
         if (typeName.equals("[Lorg.eclipse.swt.widgets.TabItem;")) {
-            String[] values = split(value, ',');
+            char[][] values = split(value, ',');
             TabItem[] items = new TabItem[values.length];
             for (int i = 0; i < values.length; i++) {
                 items[i] = findItem(values[i], ((TabFolder) widget).getItems());
@@ -139,11 +149,11 @@
         }
         return super.parameterForType(typeName, value, widget);
     }
-
-    TabItem findItem(String value, TabItem[] items) {
++/
+    TabItem findItem(char[] value, TabItem[] items) {
         for (int i = 0; i < items.length; i++) {
             TabItem item = items[i];
-            if (item.getText().equals(value)) return item;
+            if (item.getText() ==/*eq*/ value) return item;
         }
         return null;
     }
@@ -151,14 +161,14 @@
     /**
      * Gets the short text for the tab folder item.
      */
-    public String getShortTabText() {
+    public char[] getShortTabText() {
         return "TF";
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "TabFolder";
     }
 
--- a/dwtexamples/controlexample/TableTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/TableTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -37,6 +37,13 @@
 import dwt.widgets.TableItem;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.ScrollableTab;
+import tango.text.convert.Format;
+import tango.util.Convert;
+import tango.core.Exception;
+
 class TableTab : ScrollableTab {
     /* Example widgets and groups that contain them */
     Table table1;
@@ -52,33 +59,17 @@
     Button multipleColumns, moveableColumns, resizableColumns, headerVisibleButton, sortIndicatorButton, headerImagesButton, linesVisibleButton, subImagesButton;
 
     /* Controls and resources added to the "Colors and Fonts" group */
-    static final int ITEM_FOREGROUND_COLOR = 3;
-    static final int ITEM_BACKGROUND_COLOR = 4;
-    static final int ITEM_FONT = 5;
-    static final int CELL_FOREGROUND_COLOR = 6;
-    static final int CELL_BACKGROUND_COLOR = 7;
-    static final int CELL_FONT = 8;
+    static const int ITEM_FOREGROUND_COLOR = 3;
+    static const int ITEM_BACKGROUND_COLOR = 4;
+    static const int ITEM_FONT = 5;
+    static const int CELL_FOREGROUND_COLOR = 6;
+    static const int CELL_BACKGROUND_COLOR = 7;
+    static const int CELL_FONT = 8;
     Color itemForegroundColor, itemBackgroundColor, cellForegroundColor, cellBackgroundColor;
     Font itemFont, cellFont;
 
-    static String [] columnTitles   = {ControlExample.getResourceString("TableTitle_0"),
-                                       ControlExample.getResourceString("TableTitle_1"),
-                                       ControlExample.getResourceString("TableTitle_2"),
-                                       ControlExample.getResourceString("TableTitle_3")};
-
-    static String[][] tableData = {
-        { ControlExample.getResourceString("TableLine0_0"),
-                ControlExample.getResourceString("TableLine0_1"),
-                ControlExample.getResourceString("TableLine0_2"),
-                ControlExample.getResourceString("TableLine0_3") },
-        { ControlExample.getResourceString("TableLine1_0"),
-                ControlExample.getResourceString("TableLine1_1"),
-                ControlExample.getResourceString("TableLine1_2"),
-                ControlExample.getResourceString("TableLine1_3") },
-        { ControlExample.getResourceString("TableLine2_0"),
-                ControlExample.getResourceString("TableLine2_1"),
-                ControlExample.getResourceString("TableLine2_2"),
-                ControlExample.getResourceString("TableLine2_3") } };
+    static char[] [] columnTitles;
+    static char[][][] tableData;
 
     Point menuMouseCoords;
 
@@ -87,6 +78,28 @@
      */
     this(ControlExample instance) {
         super(instance);
+        if( columnTitles.length is 0 ){
+            columnTitles   = [
+                ControlExample.getResourceString("TableTitle_0"),
+                ControlExample.getResourceString("TableTitle_1"),
+                ControlExample.getResourceString("TableTitle_2"),
+                ControlExample.getResourceString("TableTitle_3")];
+        }
+        if( tableData.length is 0 ){
+            tableData = [
+                [ ControlExample.getResourceString("TableLine0_0"),
+                        ControlExample.getResourceString("TableLine0_1"),
+                        ControlExample.getResourceString("TableLine0_2"),
+                        ControlExample.getResourceString("TableLine0_3") ],
+                [ ControlExample.getResourceString("TableLine1_0"),
+                        ControlExample.getResourceString("TableLine1_1"),
+                        ControlExample.getResourceString("TableLine1_2"),
+                        ControlExample.getResourceString("TableLine1_3") ],
+                [ ControlExample.getResourceString("TableLine2_0"),
+                        ControlExample.getResourceString("TableLine2_1"),
+                        ControlExample.getResourceString("TableLine2_2"),
+                        ControlExample.getResourceString("TableLine2_3") ]];
+        }
     }
 
     /**
@@ -108,7 +121,7 @@
         item = new TableItem(colorAndFontTable, DWT.None);
         item.setText(ControlExample.getResourceString ("Cell_Font"));
 
-        shell.addDisposeListener(new DisposeListener() {
+        shell.addDisposeListener(new class() DisposeListener {
             public void widgetDisposed(DisposeEvent event) {
                 if (itemBackgroundColor !is null) itemBackgroundColor.dispose();
                 if (itemForegroundColor !is null) itemForegroundColor.dispose();
@@ -233,42 +246,42 @@
         subImagesButton.setText (ControlExample.getResourceString("Sub_Images"));
 
         /* Add the listeners */
-        linesVisibleButton.addSelectionListener (new SelectionAdapter () {
+        linesVisibleButton.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetLinesVisible ();
             }
         });
-        multipleColumns.addSelectionListener (new SelectionAdapter () {
+        multipleColumns.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 recreateExampleWidgets ();
             }
         });
-        headerVisibleButton.addSelectionListener (new SelectionAdapter () {
+        headerVisibleButton.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetHeaderVisible ();
             }
         });
-        sortIndicatorButton.addSelectionListener (new SelectionAdapter () {
+        sortIndicatorButton.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setWidgetSortIndicator ();
             }
         });
-        moveableColumns.addSelectionListener (new SelectionAdapter () {
+        moveableColumns.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setColumnsMoveable ();
             }
         });
-        resizableColumns.addSelectionListener (new SelectionAdapter () {
+        resizableColumns.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 setColumnsResizable ();
             }
         });
-        headerImagesButton.addSelectionListener (new SelectionAdapter () {
+        headerImagesButton.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 recreateExampleWidgets ();
             }
         });
-        subImagesButton.addSelectionListener (new SelectionAdapter () {
+        subImagesButton.addSelectionListener (new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 recreateExampleWidgets ();
             }
@@ -312,7 +325,7 @@
             for (int i = 0; i < columnTitles.length; i++) {
                 TableColumn tableColumn = new TableColumn(table1, DWT.NONE);
                 tableColumn.setText(columnTitles[i]);
-                tableColumn.setToolTipText(ControlExample.getResourceString("Tooltip", new String [] {columnTitles[i]}));
+                tableColumn.setToolTipText( Format( ControlExample.getResourceString("Tooltip"), columnTitles[i] ));
                 if (headerImagesButton.getSelection()) tableColumn.setImage(instance.images [i % 3]);
             }
             table1.setSortColumn(table1.getColumn(0));
@@ -326,12 +339,12 @@
             } else {
                 item.setImage(instance.images [i % 3]);
             }
-            setItemText (item, i, ControlExample.getResourceString("Index") + i);
+            setItemText (item, i, ControlExample.getResourceString("Index") ~ to!(char[])(i));
         }
         packColumns();
     }
 
-    void setItemText(TableItem item, int i, String node) {
+    void setItemText(TableItem item, int i, char[] node) {
         int index = i % 3;
         if (multipleColumns.getSelection()) {
             tableData [index][0] = node;
@@ -351,7 +364,7 @@
 
         packColumnsButton = new Button (sizeGroup, DWT.PUSH);
         packColumnsButton.setText (ControlExample.getResourceString("Pack_Columns"));
-        packColumnsButton.addSelectionListener(new SelectionAdapter () {
+        packColumnsButton.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected (SelectionEvent event) {
                 packColumns ();
                 setExampleWidgetSize ();
@@ -392,20 +405,20 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {table1};
+        return [ cast(Widget) table1 ];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"ColumnOrder", "ItemCount", "Selection", "SelectionIndex", "ToolTipText", "TopIndex"};
+    char[][] getMethodNames() {
+        return ["ColumnOrder", "ItemCount", "Selection", "SelectionIndex", "ToolTipText", "TopIndex"];
     }
 
-    String setMethodName(String methodRoot) {
+    char[] setMethodName(char[] methodRoot) {
         /* Override to handle special case of int getSelectionIndex()/setSelection(int) */
-        return (methodRoot.equals("SelectionIndex")) ? "setSelection" : "set" + methodRoot;
+        return (methodRoot == "SelectionIndex" ) ? "setSelection" : "set" ~ methodRoot;
     }
 
     void packColumns () {
@@ -416,14 +429,16 @@
         }
     }
 
-    Object[] parameterForType(String typeName, String value, Widget widget) {
-        if (value.equals("")) return new Object[] {new TableItem[0]}; // bug in Table?
+//PORTING_LEFT
+/+
+    Object[] parameterForType(char[] typeName, char[] value, Widget widget) {
+        if (value.length is 0 ) return [new TableItem[0]]; // bug in Table?
         if (typeName.equals("org.eclipse.swt.widgets.TableItem")) {
             TableItem item = findItem(value, ((Table) widget).getItems());
             if (item !is null) return new Object[] {item};
         }
         if (typeName.equals("[Lorg.eclipse.swt.widgets.TableItem;")) {
-            String[] values = split(value, ',');
+            char[][] values = split(value, ',');
             TableItem[] items = new TableItem[values.length];
             for (int i = 0; i < values.length; i++) {
                 items[i] = findItem(values[i], ((Table) widget).getItems());
@@ -432,11 +447,11 @@
         }
         return super.parameterForType(typeName, value, widget);
     }
-
-    TableItem findItem(String value, TableItem[] items) {
++/
+    TableItem findItem(char[] value, TableItem[] items) {
         for (int i = 0; i < items.length; i++) {
             TableItem item = items[i];
-            if (item.getText().equals(value)) return item;
+            if (item.getText() == value ) return item;
         }
         return null;
     }
@@ -444,7 +459,7 @@
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Table";
     }
 
@@ -652,7 +667,7 @@
             for (int i = 0; i < columns.length; i++) {
                 TableColumn column = columns[i];
                 if (i is 0) table1.setSortColumn(column);
-                SelectionListener listener = new SelectionAdapter() {
+                SelectionListener listener = new class() SelectionAdapter {
                     public void widgetSelected(SelectionEvent e) {
                         int sortDirection = DWT.DOWN;
                         if (e.widget is table1.getSortColumn()) {
@@ -662,19 +677,19 @@
                             case DWT.UP: sortDirection = DWT.NONE; break;
                             }
                         } else {
-                            table1.setSortColumn((TableColumn)e.widget);
+                            table1.setSortColumn(cast(TableColumn)e.widget);
                         }
                         table1.setSortDirection (sortDirection);
                     }
                 };
                 column.addSelectionListener(listener);
-                column.setData("SortListener", listener);   //$NON-NLS-1$
+                column.setData("SortListener", cast(Object)listener);   //$NON-NLS-1$
             }
         } else {
             table1.setSortDirection (DWT.NONE);
             TableColumn [] columns = table1.getColumns();
             for (int i = 0; i < columns.length; i++) {
-                SelectionListener listener = (SelectionListener)columns[i].getData("SortListener"); //$NON-NLS-1$
+                SelectionListener listener = cast(SelectionListener)columns[i].getData("SortListener"); //$NON-NLS-1$
                 if (listener !is null) columns[i].removeSelectionListener(listener);
             }
         }
@@ -691,9 +706,9 @@
         MenuItem item = new MenuItem(menu, DWT.PUSH);
         item.setText("getItem(Point) on mouse coordinates");
         menuMouseCoords = table1.toControl(new Point(event.x, event.y));
-        item.addSelectionListener(new SelectionAdapter() {
+        item.addSelectionListener(new class() SelectionAdapter {
             public void widgetSelected(SelectionEvent e) {
-                eventConsole.append ("getItem(Point(" + menuMouseCoords + ")) returned: " + table1.getItem(menuMouseCoords));
+                eventConsole.append ("getItem(Point(" ~ menuMouseCoords.toString() ~ ")) returned: " ~ ((table1.getItem(menuMouseCoords))).toString);
                 eventConsole.append ("\n");
             };
         });
--- a/dwtexamples/controlexample/TextTab.d	Mon Jan 21 22:25:26 2008 +0100
+++ b/dwtexamples/controlexample/TextTab.d	Mon Jan 21 23:52:45 2008 +0100
@@ -24,6 +24,10 @@
 import dwt.widgets.Text;
 import dwt.widgets.Widget;
 
+import dwtexamples.controlexample.Tab;
+import dwtexamples.controlexample.ControlExample;
+import dwtexamples.controlexample.ScrollableTab;
+
 class TextTab : ScrollableTab {
     /* Example widgets and groups that contain them */
     Text text;
@@ -76,7 +80,7 @@
 
         /* Create the example widgets */
         text = new Text (textGroup, style);
-        text.setText (ControlExample.getResourceString("Example_string") + Text.DELIMITER + ControlExample.getResourceString("One_Two_Three"));
+        text.setText (ControlExample.getResourceString("Example_string") ~ Text.DELIMITER ~ ControlExample.getResourceString("One_Two_Three"));
     }
 
     /**
@@ -125,7 +129,7 @@
          * its preferred size, and then resizes the shell, we
          * recalculate the preferred size correctly.
          */
-        tabFolderPage.addControlListener(new ControlAdapter() {
+        tabFolderPage.addControlListener(new class() ControlAdapter {
             public void controlResized(ControlEvent e) {
                 setExampleWidgetSize ();
             }
@@ -138,21 +142,21 @@
      * Gets the "Example" widget children.
      */
     Widget [] getExampleWidgets () {
-        return new Widget [] {text};
+        return [ cast(Widget) text];
     }
 
     /**
      * Returns a list of set/get API method names (without the set/get prefix)
      * that can be used to set/get values in the example control(s).
      */
-    String[] getMethodNames() {
-        return new String[] {"DoubleClickEnabled", "EchoChar", "Editable", "Orientation", "Selection", "Tabs", "Text", "TextLimit", "ToolTipText", "TopIndex"};
+    char[][] getMethodNames() {
+        return ["DoubleClickEnabled", "EchoChar", "Editable", "Orientation", "Selection", "Tabs", "Text", "TextLimit", "ToolTipText", "TopIndex"];
     }
 
     /**
      * Gets the text for the tab folder item.
      */
-    String getTabText () {
+    char[] getTabText () {
         return "Text";
     }