changeset 151:29cb72deba3d

removed dwtexamples. They moved to the dwt-samples project
author Frank Benoit <benoit@tionex.de>
date Thu, 31 Jan 2008 20:26:30 +0100
parents f2e04420fd6c
children 17f8449522fd
files dwtexamples/addressbook/AddressBook.d dwtexamples/addressbook/DataEntryDialog.d dwtexamples/addressbook/FindListener.d dwtexamples/addressbook/SearchDialog.d dwtexamples/addressbook/addressbook.properties dwtexamples/controlexample/AlignableTab.d dwtexamples/controlexample/ButtonTab.d dwtexamples/controlexample/CComboTab.d dwtexamples/controlexample/CLabelTab.d dwtexamples/controlexample/CTabFolderTab.d dwtexamples/controlexample/CanvasTab.d dwtexamples/controlexample/ComboTab.d dwtexamples/controlexample/ControlExample.d dwtexamples/controlexample/CoolBarTab.d dwtexamples/controlexample/CustomControlExample.d dwtexamples/controlexample/DateTimeTab.d dwtexamples/controlexample/DialogTab.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/SashFormTab.d dwtexamples/controlexample/SashTab.d dwtexamples/controlexample/ScaleTab.d dwtexamples/controlexample/ScrollableTab.d dwtexamples/controlexample/ShellTab.d dwtexamples/controlexample/SliderTab.d dwtexamples/controlexample/SpinnerTab.d dwtexamples/controlexample/StyledTextTab.d dwtexamples/controlexample/Tab.d dwtexamples/controlexample/TabFolderTab.d dwtexamples/controlexample/TableTab.d dwtexamples/controlexample/TextTab.d dwtexamples/controlexample/ToolBarTab.d dwtexamples/controlexample/ToolTipTab.d dwtexamples/controlexample/TreeTab.d dwtexamples/controlexample/backgroundImage.png dwtexamples/controlexample/bold.bmp dwtexamples/controlexample/bold_mask.bmp dwtexamples/controlexample/closedFolder.gif dwtexamples/controlexample/controlexample.properties dwtexamples/controlexample/italic.bmp dwtexamples/controlexample/italic_mask.bmp dwtexamples/controlexample/openFolder.gif dwtexamples/controlexample/parentBackgroundImage.png dwtexamples/controlexample/red.bmp dwtexamples/controlexample/red_mask.bmp dwtexamples/controlexample/strikeout.bmp dwtexamples/controlexample/strikeout_mask.bmp dwtexamples/controlexample/target.gif dwtexamples/controlexample/underline.bmp dwtexamples/controlexample/underline_mask.bmp dwtexamples/controlexample/yellow.bmp dwtexamples/controlexample/yellow_mask.bmp dwtexamples/helloworld/HelloWorld1.d dwtexamples/helloworld/HelloWorld2.d dwtexamples/helloworld/HelloWorld3.d dwtexamples/helloworld/HelloWorld4.d dwtexamples/helloworld/HelloWorld5.d dwtexamples/helloworld/helloworld.properties dwtexamples/simple.d dwtexamples/test.d
diffstat 66 files changed, 0 insertions(+), 12927 deletions(-) [+]
line wrap: on
line diff
--- a/dwtexamples/addressbook/AddressBook.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,908 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.addressbook.AddressBook;
-
-import dwt.DWT;
-import dwt.events.MenuAdapter;
-import dwt.events.MenuEvent;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.ShellAdapter;
-import dwt.events.ShellEvent;
-import dwt.graphics.Cursor;
-import dwt.layout.FillLayout;
-import dwt.widgets.Display;
-import dwt.widgets.FileDialog;
-import dwt.widgets.Menu;
-import dwt.widgets.MenuItem;
-import dwt.widgets.MessageBox;
-import dwt.widgets.Shell;
-import dwt.widgets.Table;
-import dwt.widgets.TableColumn;
-import dwt.widgets.TableItem;
-
-import dwtexamples.addressbook.SearchDialog;
-import dwtexamples.addressbook.DataEntryDialog;
-import dwtexamples.addressbook.FindListener;
-
-import dwt.dwthelper.ResourceBundle;
-
-import tango.core.Exception;
-import tango.io.FilePath;
-import tango.io.File;
-import tango.io.FileConduit;
-import tango.io.stream.FileStream;
-import TextUtil = tango.text.Util;
-import Unicode = tango.text.Unicode;
-
-/*** Linker workaround start ***/
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
-/*** Linker workaround end ***/
-
-void main() {
-    Display display = new Display();
-    auto application = new AddressBook();
-    Shell shell = application.open(display);
-    while(!shell.isDisposed()){
-        if(!display.readAndDispatch()){
-            display.sleep();
-        }
-    }
-    display.dispose();
-}
-
-/**
- * AddressBookExample is an example that uses <code>org.eclipse.swt</code>
- * libraries to implement a simple address book.  This application has
- * save, load, sorting, and searching functions common
- * to basic address books.
- */
-public class AddressBook {
-
-    private static ResourceBundle resAddressBook;
-    private static const char[] resAddressBookData = cast(char[]) import( "addressbook.properties" );
-    private Shell shell;
-
-    private Table table;
-    private SearchDialog searchDialog;
-
-    private FilePath file;
-    private bool isModified;
-
-    private char[][] copyBuffer;
-
-    private int lastSortColumn= -1;
-
-    private static const char[] DELIMITER = "\t";
-    private static char[][] columnNames;
-
-public this(){
-    if( resAddressBook is null ){
-        resAddressBook = ResourceBundle.getBundleFromData(resAddressBookData);
-        columnNames = [
-            resAddressBook.getString("Last_name"),
-            resAddressBook.getString("First_name"),
-            resAddressBook.getString("Business_phone"),
-            resAddressBook.getString("Home_phone"),
-            resAddressBook.getString("Email"),
-            resAddressBook.getString("Fax") ];
-    }
-}
-
-
-public Shell open(Display display) {
-    shell = new Shell(display);
-    shell.setLayout(new FillLayout());
-
-    shell.addShellListener( new class() ShellAdapter {
-        public void shellClosed(ShellEvent e) {
-            e.doit = closeAddressBook();
-        }
-    });
-
-    createMenuBar();
-
-    searchDialog = new SearchDialog(shell);
-    searchDialog.setSearchAreaNames(columnNames);
-    searchDialog.setSearchAreaLabel(resAddressBook.getString("Column"));
-    searchDialog.addFindListener(new class() FindListener {
-        public bool find() {
-            return findEntry();
-        }
-    });
-
-    table = new Table(shell, DWT.SINGLE | DWT.BORDER | DWT.FULL_SELECTION);
-    table.setHeaderVisible(true);
-    table.setMenu(createPopUpMenu());
-    table.addSelectionListener(new class() SelectionAdapter {
-        public void widgetDefaultSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length > 0) editEntry(items[0]);
-        }
-    });
-    for(int i = 0; i < columnNames.length; i++) {
-        TableColumn column = new TableColumn(table, DWT.NONE);
-        column.setText(columnNames[i]);
-        column.setWidth(150);
-        int columnIndex = i;
-        column.addSelectionListener(new class(columnIndex) SelectionAdapter {
-            int c;
-            this( int c ){ this.c = c; }
-            public void widgetSelected(SelectionEvent e) {
-                sort(c);
-            }
-        });
-    }
-
-    newAddressBook();
-
-    shell.setSize(table.computeSize(DWT.DEFAULT, DWT.DEFAULT).x, 300);
-    shell.open();
-    return shell;
-}
-
-private bool closeAddressBook() {
-    if(isModified) {
-        //ask user if they want to save current address book
-        MessageBox box = new MessageBox(shell, DWT.ICON_WARNING | DWT.YES | DWT.NO | DWT.CANCEL);
-        box.setText(shell.getText());
-        box.setMessage(resAddressBook.getString("Close_save"));
-
-        int choice = box.open();
-        if(choice is DWT.CANCEL) {
-            return false;
-        } else if(choice is DWT.YES) {
-            if (!save()) return false;
-        }
-    }
-
-    TableItem[] items = table.getItems();
-    for (int i = 0; i < items.length; i ++) {
-        items[i].dispose();
-    }
-
-    return true;
-}
-/**
- * Creates the menu at the top of the shell where most
- * of the programs functionality is accessed.
- *
- * @return      The <code>Menu</code> widget that was created
- */
-private Menu createMenuBar() {
-    Menu menuBar = new Menu(shell, DWT.BAR);
-    shell.setMenuBar(menuBar);
-
-    //create each header and subMenu for the menuBar
-    createFileMenu(menuBar);
-    createEditMenu(menuBar);
-    createSearchMenu(menuBar);
-    createHelpMenu(menuBar);
-
-    return menuBar;
-}
-
-/**
- * Converts an encoded <code>char[]</code> to a char[] array representing a table entry.
- */
-private char[][] decodeLine(char[] line) {
-    char[][] toks = TextUtil.split( line, DELIMITER );
-    while( toks.length < table.getColumnCount() ){
-        toks ~= "";
-    }
-    return toks[ 0 .. table.getColumnCount() ];
-}
-private void displayError(char[] msg) {
-    MessageBox box = new MessageBox(shell, DWT.ICON_ERROR);
-    box.setMessage(msg);
-    box.open();
-}
-private void editEntry(TableItem item) {
-    DataEntryDialog dialog = new DataEntryDialog(shell);
-    dialog.setLabels(columnNames);
-    char[][] values = new char[][table.getColumnCount()];
-    for (int i = 0; i < values.length; i++) {
-        values[i] = item.getText(i);
-    }
-    dialog.setValues(values);
-    values = dialog.open();
-    if (values !is null) {
-        item.setText(values);
-        isModified = true;
-    }
-}
-private char[] encodeLine(char[][] tableItems) {
-    char[] line = "";
-    for (int i = 0; i < tableItems.length - 1; i++) {
-        line ~= tableItems[i] ~ DELIMITER;
-    }
-    line ~= tableItems[tableItems.length - 1] ~ "\n";
-
-    return line;
-}
-private bool findEntry() {
-    Cursor waitCursor = new Cursor(shell.getDisplay(), DWT.CURSOR_WAIT);
-    shell.setCursor(waitCursor);
-
-    bool matchCase = searchDialog.getMatchCase();
-    bool matchWord = searchDialog.getMatchWord();
-    char[] searchString = searchDialog.getSearchString();
-    int column = searchDialog.getSelectedSearchArea();
-
-    searchString = matchCase ? searchString : Unicode.toLower( searchString );
-
-    bool found = false;
-    if (searchDialog.getSearchDown()) {
-        for(int i = table.getSelectionIndex() + 1; i < table.getItemCount(); i++) {
-            found = findMatch(searchString, table.getItem(i), column, matchWord, matchCase);
-            if ( found ){
-                table.setSelection(i);
-                break;
-            }
-        }
-    } else {
-        for(int i = table.getSelectionIndex() - 1; i > -1; i--) {
-            found = findMatch(searchString, table.getItem(i), column, matchWord, matchCase);
-            if ( found ){
-                table.setSelection(i);
-                break;
-            }
-        }
-    }
-
-    shell.setCursor(cast(Cursor)null);
-    waitCursor.dispose();
-
-    return found;
-}
-private bool findMatch(char[] searchString, TableItem item, int column, bool matchWord, bool matchCase) {
-
-    char[] tableText = matchCase ? item.getText(column) : Unicode.toLower( item.getText(column));
-    if (matchWord) {
-        if (tableText !is null && tableText==searchString) {
-            return true;
-        }
-
-    } else {
-        if(tableText!is null && TextUtil.containsPattern( tableText, searchString)) {
-            return true;
-        }
-    }
-    return false;
-}
-private void newAddressBook() {
-    shell.setText(resAddressBook.getString("Title_bar") ~ resAddressBook.getString("New_title"));
-    *(cast(Object*)&file) = null;
-    ///cast(Object)file = null;
-    isModified = false;
-}
-private void newEntry() {
-    DataEntryDialog dialog = new DataEntryDialog(shell);
-    dialog.setLabels(columnNames);
-    char[][] data = dialog.open();
-    if (data !is null) {
-        TableItem item = new TableItem(table, DWT.NONE);
-        item.setText(data);
-        isModified = true;
-    }
-}
-
-private void openAddressBook() {
-    FileDialog fileDialog = new FileDialog(shell, DWT.OPEN);
-
-    fileDialog.setFilterExtensions(["*.adr;", "*.*"]);
-    fileDialog.setFilterNames([
-        resAddressBook.getString("Book_filter_name") ~ " (*.adr)",
-        resAddressBook.getString("All_filter_name") ~ " (*.*)"]);
-    char[] name = fileDialog.open();
-
-    if(name is null) return;
-    FilePath file = new FilePath(name);
-    if (!file.exists()) {
-        displayError(resAddressBook.getString("File")~file.toString()~" "~resAddressBook.getString("Does_not_exist"));
-        return;
-    }
-
-    Cursor waitCursor = new Cursor(shell.getDisplay(), DWT.CURSOR_WAIT);
-    shell.setCursor(waitCursor);
-
-    char[][] data;
-    try {
-        scope ioFile = new File (file);
-        data = TextUtil.splitLines (cast(char[]) ioFile.read);
-    } catch (IOException e ) {
-        displayError(resAddressBook.getString("IO_error_read") ~ "\n" ~ file.toString());
-        return;
-    } finally {
-
-        shell.setCursor(cast(Cursor)null);
-        waitCursor.dispose();
-    }
-
-    char[][][] tableInfo = new char[][][](data.length,table.getColumnCount());
-    foreach( idx, line; data ){
-        char[][] linetoks = decodeLine(line);
-        tableInfo[ idx ] = linetoks;
-    }
-    /+
-    int writeIndex = 0;
-    for (int i = 0; i < data.length; i++) {
-        char[][] line = decodeLine(data[i]);
-        if (line !is null) tableInfo[writeIndex++] = line;
-    }
-    if (writeIndex !is data.length) {
-        char[][][] result = new char[][writeIndex][table.getColumnCount()];
-        System.arraycopy(tableInfo, 0, result, 0, writeIndex);
-        tableInfo = result;
-    }
-    +/
-    tango.core.Array.sort( tableInfo, new RowComparator(0));
-
-    for (int i = 0; i < tableInfo.length; i++) {
-        TableItem item = new TableItem(table, DWT.NONE);
-        item.setText(tableInfo[i]);
-    }
-    shell.setText(resAddressBook.getString("Title_bar")~fileDialog.getFileName());
-    isModified = false;
-    this.file = file;
-}
-private bool save() {
-    if(file is null) return saveAs();
-
-    Cursor waitCursor = new Cursor(shell.getDisplay(), DWT.CURSOR_WAIT);
-    shell.setCursor(waitCursor);
-
-    TableItem[] items = table.getItems();
-    char[][] lines = new char[][items.length];
-    for(int i = 0; i < items.length; i++) {
-        char[][] itemText = new char[][table.getColumnCount()];
-        for (int j = 0; j < itemText.length; j++) {
-            itemText[j] = items[i].getText(j);
-        }
-        lines[i] = encodeLine(itemText);
-    }
-
-    FileOutput fileOutput;
-    bool result = true;
-    try {
-        fileOutput = new FileOutput( file.toString );
-        for (int i = 0; i < lines.length; i++) {
-            fileOutput.write(lines[i]);
-        }
-    } catch(IOException e ) {
-        displayError(resAddressBook.getString("IO_error_write") ~ "\n" ~ file.toString());
-        result = false;
-    } catch(TracedException e2 ) {
-        displayError(resAddressBook.getString("error_write") ~ "\n" ~ e2.toString());
-        result = false;
-    } finally {
-        shell.setCursor(null);
-        waitCursor.dispose();
-
-    }
-
-    if(fileOutput !is null) {
-        try {
-            fileOutput.close();
-        } catch(IOException e) {
-            displayError(resAddressBook.getString("IO_error_close") ~ "\n" ~ file.toString());
-            return false;
-        }
-    }
-    if( !result ){
-        return false;
-    }
-
-    shell.setText(resAddressBook.getString("Title_bar")~file.toString());
-    isModified = false;
-    return true;
-}
-private bool saveAs() {
-
-    FileDialog saveDialog = new FileDialog(shell, DWT.SAVE);
-    saveDialog.setFilterExtensions(["*.adr;",  "*.*"]);
-    saveDialog.setFilterNames(["Address Books (*.adr)", "All Files "]);
-
-    saveDialog.open();
-    char[] name = saveDialog.getFileName();
-    if(!name) return false;
-
-    if( TextUtil.locatePatternPrior( name, ".adr" ) !is name.length - 4) {
-        name ~= ".adr";
-    }
-
-    FilePath file = new FilePath(saveDialog.getFilterPath() );
-    file.append( name );
-    if(file.exists()) {
-        MessageBox box = new MessageBox(shell, DWT.ICON_WARNING | DWT.YES | DWT.NO);
-        box.setText(resAddressBook.getString("Save_as_title"));
-        box.setMessage(resAddressBook.getString("File") ~ file.toString()~" "~resAddressBook.getString("Query_overwrite"));
-        if(box.open() !is DWT.YES) {
-            return false;
-        }
-    }
-    this.file = file;
-    return save();
-}
-private void sort(int column) {
-    if(table.getItemCount() <= 1) return;
-
-    TableItem[] items = table.getItems();
-    char[][][] data = new char[][][](items.length, table.getColumnCount());
-    for(int i = 0; i < items.length; i++) {
-        for(int j = 0; j < table.getColumnCount(); j++) {
-            data[i][j] = items[i].getText(j);
-        }
-    }
-
-    tango.core.Array.sort(data, new RowComparator(column));
-
-    if (lastSortColumn !is column) {
-        table.setSortColumn(table.getColumn(column));
-        table.setSortDirection(DWT.DOWN);
-        for (int i = 0; i < data.length; i++) {
-            items[i].setText(data[i]);
-        }
-        lastSortColumn = column;
-    } else {
-        // reverse order if the current column is selected again
-        table.setSortDirection(DWT.UP);
-        int j = data.length -1;
-        for (int i = 0; i < data.length; i++) {
-            items[i].setText(data[j--]);
-        }
-        lastSortColumn = -1;
-    }
-
-}
-/**
- * Creates all the items located in the File submenu and
- * associate all the menu items with their appropriate
- * functions.
- *
- * @param   menuBar Menu
- *              the <code>Menu</code> that file contain
- *              the File submenu.
- */
-private void createFileMenu(Menu menuBar) {
-    //File menu.
-    MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
-    item.setText(resAddressBook.getString("File_menu_title"));
-    Menu menu = new Menu(shell, DWT.DROP_DOWN);
-    item.setMenu(menu);
-    /**
-     * Adds a listener to handle enabling and disabling
-     * some items in the Edit submenu.
-     */
-    menu.addMenuListener(new class() MenuAdapter {
-        public void menuShown(MenuEvent e) {
-            Menu menu = cast(Menu)e.widget;
-            MenuItem[] items = menu.getItems();
-            items[1].setEnabled(table.getSelectionCount() !is 0); // edit contact
-            items[5].setEnabled((file !is null) && isModified); // save
-            items[6].setEnabled(table.getItemCount() !is 0); // save as
-        }
-    });
-
-
-    //File -> New Contact
-    MenuItem subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("New_contact"));
-    subItem.setAccelerator(DWT.MOD1 + 'N');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            newEntry();
-        }
-    });
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Edit_contact"));
-    subItem.setAccelerator(DWT.MOD1 + 'E');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            editEntry(items[0]);
-        }
-    });
-
-
-    new MenuItem(menu, DWT.SEPARATOR);
-
-    //File -> New Address Book
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("New_address_book"));
-    subItem.setAccelerator(DWT.MOD1 + 'B');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            if (closeAddressBook()) {
-                newAddressBook();
-            }
-        }
-    });
-
-    //File -> Open
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Open_address_book"));
-    subItem.setAccelerator(DWT.MOD1 + 'O');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            if (closeAddressBook()) {
-                openAddressBook();
-            }
-        }
-    });
-
-    //File -> Save.
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Save_address_book"));
-    subItem.setAccelerator(DWT.MOD1 + 'S');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            save();
-        }
-    });
-
-    //File -> Save As.
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Save_book_as"));
-    subItem.setAccelerator(DWT.MOD1 + 'A');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            saveAs();
-        }
-    });
-
-
-    new MenuItem(menu, DWT.SEPARATOR);
-
-    //File -> Exit.
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Exit"));
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            shell.close();
-        }
-    });
-}
-
-/**
- * Creates all the items located in the Edit submenu and
- * associate all the menu items with their appropriate
- * functions.
- *
- * @param   menuBar Menu
- *              the <code>Menu</code> that file contain
- *              the Edit submenu.
- *
- * @see #createSortMenu()
- */
-private MenuItem createEditMenu(Menu menuBar) {
-    //Edit menu.
-    MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
-    item.setText(resAddressBook.getString("Edit_menu_title"));
-    Menu menu = new Menu(shell, DWT.DROP_DOWN);
-    item.setMenu(menu);
-
-    /**
-     * Add a listener to handle enabling and disabling
-     * some items in the Edit submenu.
-     */
-    menu.addMenuListener(new class() MenuAdapter {
-        public void menuShown(MenuEvent e) {
-            Menu menu = cast(Menu)e.widget;
-            MenuItem[] items = menu.getItems();
-            int count = table.getSelectionCount();
-            items[0].setEnabled(count !is 0); // edit
-            items[1].setEnabled(count !is 0); // copy
-            items[2].setEnabled(copyBuffer !is null); // paste
-            items[3].setEnabled(count !is 0); // delete
-            items[5].setEnabled(table.getItemCount() !is 0); // sort
-        }
-    });
-
-    //Edit -> Edit
-    MenuItem subItem = new MenuItem(menu, DWT.PUSH);
-    subItem.setText(resAddressBook.getString("Edit"));
-    subItem.setAccelerator(DWT.MOD1 + 'E');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            editEntry(items[0]);
-        }
-    });
-
-    //Edit -> Copy
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Copy"));
-    subItem.setAccelerator(DWT.MOD1 + 'C');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            copyBuffer = new char[][table.getColumnCount()];
-            for (int i = 0; i < copyBuffer.length; i++) {
-                copyBuffer[i] = items[0].getText(i);
-            }
-        }
-    });
-
-    //Edit -> Paste
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Paste"));
-    subItem.setAccelerator(DWT.MOD1 + 'V');
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            if (copyBuffer is null) return;
-            TableItem item = new TableItem(table, DWT.NONE);
-            item.setText(copyBuffer);
-            isModified = true;
-        }
-    });
-
-    //Edit -> Delete
-    subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("Delete"));
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            items[0].dispose();
-            isModified = true;      }
-    });
-
-    new MenuItem(menu, DWT.SEPARATOR);
-
-    //Edit -> Sort(Cascade)
-    subItem = new MenuItem(menu, DWT.CASCADE);
-    subItem.setText(resAddressBook.getString("Sort"));
-    Menu submenu = createSortMenu();
-    subItem.setMenu(submenu);
-
-    return item;
-
-}
-
-/**
- * Creates all the items located in the Sort cascading submenu and
- * associate all the menu items with their appropriate
- * functions.
- *
- * @return  Menu
- *          The cascading menu with all the sort menu items on it.
- */
-private Menu createSortMenu() {
-    Menu submenu = new Menu(shell, DWT.DROP_DOWN);
-    MenuItem subitem;
-    for(int i = 0; i < columnNames.length; i++) {
-        subitem = new MenuItem (submenu, DWT.NONE);
-        subitem.setText(columnNames [i]);
-        int column = i;
-        subitem.addSelectionListener(new class(column) SelectionAdapter {
-            int c;
-            this(int c){ this.c = c; }
-            public void widgetSelected(SelectionEvent e) {
-                sort(c);
-            }
-        });
-    }
-
-    return submenu;
-}
-
-/**
- * Creates all the items located in the Search submenu and
- * associate all the menu items with their appropriate
- * functions.
- *
- * @param   menuBar Menu
- *              the <code>Menu</code> that file contain
- *              the Search submenu.
- */
-private void createSearchMenu(Menu menuBar) {
-    //Search menu.
-    MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
-    item.setText(resAddressBook.getString("Search_menu_title"));
-    Menu searchMenu = new Menu(shell, DWT.DROP_DOWN);
-    item.setMenu(searchMenu);
-
-    //Search -> Find...
-    item = new MenuItem(searchMenu, DWT.NONE);
-    item.setText(resAddressBook.getString("Find"));
-    item.setAccelerator(DWT.MOD1 + 'F');
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            searchDialog.setMatchCase(false);
-            searchDialog.setMatchWord(false);
-            searchDialog.setSearchDown(true);
-            searchDialog.setSearchString("");
-            searchDialog.setSelectedSearchArea(0);
-            searchDialog.open();
-        }
-    });
-
-    //Search -> Find Next
-    item = new MenuItem(searchMenu, DWT.NONE);
-    item.setText(resAddressBook.getString("Find_next"));
-    item.setAccelerator(DWT.F3);
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            searchDialog.open();
-        }
-    });
-}
-
-/**
- * Creates all items located in the popup menu and associates
- * all the menu items with their appropriate functions.
- *
- * @return  Menu
- *          The created popup menu.
- */
-private Menu createPopUpMenu() {
-    Menu popUpMenu = new Menu(shell, DWT.POP_UP);
-
-    /**
-     * Adds a listener to handle enabling and disabling
-     * some items in the Edit submenu.
-     */
-    popUpMenu.addMenuListener(new class() MenuAdapter {
-        public void menuShown(MenuEvent e) {
-            Menu menu = cast(Menu)e.widget;
-            MenuItem[] items = menu.getItems();
-            int count = table.getSelectionCount();
-            items[2].setEnabled(count !is 0); // edit
-            items[3].setEnabled(count !is 0); // copy
-            items[4].setEnabled(copyBuffer !is null); // paste
-            items[5].setEnabled(count !is 0); // delete
-            items[7].setEnabled(table.getItemCount() !is 0); // find
-        }
-    });
-
-    //New
-    MenuItem item = new MenuItem(popUpMenu, DWT.PUSH);
-    item.setText(resAddressBook.getString("Pop_up_new"));
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            newEntry();
-        }
-    });
-
-    new MenuItem(popUpMenu, DWT.SEPARATOR);
-
-    //Edit
-    item = new MenuItem(popUpMenu, DWT.PUSH);
-    item.setText(resAddressBook.getString("Pop_up_edit"));
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            editEntry(items[0]);
-        }
-    });
-
-    //Copy
-    item = new MenuItem(popUpMenu, DWT.PUSH);
-    item.setText(resAddressBook.getString("Pop_up_copy"));
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            copyBuffer = new char[][table.getColumnCount()];
-            for (int i = 0; i < copyBuffer.length; i++) {
-                copyBuffer[i] = items[0].getText(i);
-            }
-        }
-    });
-
-    //Paste
-    item = new MenuItem(popUpMenu, DWT.PUSH);
-    item.setText(resAddressBook.getString("Pop_up_paste"));
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            if (copyBuffer is null) return;
-            TableItem item = new TableItem(table, DWT.NONE);
-            item.setText(copyBuffer);
-            isModified = true;
-        }
-    });
-
-    //Delete
-    item = new MenuItem(popUpMenu, DWT.PUSH);
-    item.setText(resAddressBook.getString("Pop_up_delete"));
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            TableItem[] items = table.getSelection();
-            if (items.length is 0) return;
-            items[0].dispose();
-            isModified = true;
-        }
-    });
-
-    new MenuItem(popUpMenu, DWT.SEPARATOR);
-
-    //Find...
-    item = new MenuItem(popUpMenu, DWT.PUSH);
-    item.setText(resAddressBook.getString("Pop_up_find"));
-    item.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            searchDialog.open();
-        }
-    });
-
-    return popUpMenu;
-}
-
-/**
- * Creates all the items located in the Help submenu and
- * associate all the menu items with their appropriate
- * functions.
- *
- * @param   menuBar Menu
- *              the <code>Menu</code> that file contain
- *              the Help submenu.
- */
-private void createHelpMenu(Menu menuBar) {
-
-    //Help Menu
-    MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
-    item.setText(resAddressBook.getString("Help_menu_title"));
-    Menu menu = new Menu(shell, DWT.DROP_DOWN);
-    item.setMenu(menu);
-
-    //Help -> About Text Editor
-    MenuItem subItem = new MenuItem(menu, DWT.NONE);
-    subItem.setText(resAddressBook.getString("About"));
-    subItem.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            MessageBox box = new MessageBox(shell, DWT.NONE);
-            box.setText(resAddressBook.getString("About_1") ~ shell.getText());
-            box.setMessage(shell.getText() ~ resAddressBook.getString("About_2"));
-            box.open();
-        }
-    });
-}
-
-
-/**
- * To compare entries (rows) by the given column
- */
-private class RowComparator /*: Comparator*/ {
-    private int column;
-
-    /**
-     * Constructs a RowComparator given the column index
-     * @param col The index (starting at zero) of the column
-     */
-    public this(int col) {
-        column = col;
-    }
-
-    /**
-     * Compares two rows (type char[][]) using the specified
-     * column entry.
-     * @param obj1 First row to compare
-     * @param obj2 Second row to compare
-     * @return negative if obj1 less than obj2, positive if
-     *          obj1 greater than obj2, and zero if equal.
-     */
-    public bool compare(char[][] row1, char[][] row2) {
-        return row1[column] < row2[column];
-    }
-
-    alias compare opCall;
-}
-
-}
--- a/dwtexamples/addressbook/DataEntryDialog.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.addressbook.DataEntryDialog;
-
-import dwt.DWT;
-import dwt.events.ModifyEvent;
-import dwt.events.ModifyListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.Display;
-import dwt.widgets.Label;
-import dwt.widgets.Shell;
-import dwt.widgets.Text;
-
-import dwt.dwthelper.ResourceBundle;
-import dwt.dwthelper.Integer;
-
-/**
- * DataEntryDialog class uses <code>org.eclipse.swt</code>
- * libraries to implement a dialog that accepts basic personal information that
- * is added to a <code>Table</code> widget or edits a <code>TableItem</code> entry
- * to represent the entered data.
- */
-public class DataEntryDialog {
-
-    private static ResourceBundle resAddressBook;
-
-    Shell shell;
-    char[][] values;
-    char[][] labels;
-
-public this(Shell parent) {
-    if( resAddressBook is null ){
-        resAddressBook = ResourceBundle.getBundle("examples_addressbook");
-    }
-    shell = new Shell(parent, DWT.DIALOG_TRIM | DWT.PRIMARY_MODAL);
-    shell.setLayout(new GridLayout());
-}
-
-private void addTextListener(Text text) {
-    text.addModifyListener(new class(text) ModifyListener {
-        Text text;
-        this( Text text ){ this.text = text; }
-        public void modifyText(ModifyEvent e){
-            Integer index = cast(Integer)(this.text.getData("index"));
-            values[index.intValue()] = this.text.getText();
-        }
-    });
-}
-private void createControlButtons() {
-    Composite composite = new Composite(shell, DWT.NONE);
-    composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
-    GridLayout layout = new GridLayout();
-    layout.numColumns = 2;
-    composite.setLayout(layout);
-
-    Button okButton = new Button(composite, DWT.PUSH);
-    okButton.setText(resAddressBook.getString("OK"));
-    okButton.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            shell.close();
-        }
-    });
-
-    Button cancelButton = new Button(composite, DWT.PUSH);
-    cancelButton.setText(resAddressBook.getString("Cancel"));
-    cancelButton.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            values = null;
-            shell.close();
-        }
-    });
-
-    shell.setDefaultButton(okButton);
-}
-
-private void createTextWidgets() {
-    if (labels is null) return;
-
-    Composite composite = new Composite(shell, DWT.NONE);
-    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-    GridLayout layout= new GridLayout();
-    layout.numColumns = 2;
-    composite.setLayout(layout);
-
-    if (values is null)
-        values = new char[][labels.length];
-
-    for (int i = 0; i < labels.length; i++) {
-        Label label = new Label(composite, DWT.RIGHT);
-        label.setText(labels[i]);
-        Text text = new Text(composite, DWT.BORDER);
-        GridData gridData = new GridData();
-        gridData.widthHint = 400;
-        text.setLayoutData(gridData);
-        if (values[i] !is null) {
-            text.setText(values[i]);
-        }
-        text.setData("index", new Integer(i));
-        addTextListener(text);
-    }
-}
-
-public char[][] getLabels() {
-    return labels;
-}
-public char[] getTitle() {
-    return shell.getText();
-}
-/**
- * Returns the contents of the <code>Text</code> widgets in the dialog in a
- * <code>char[]</code> array.
- *
- * @return  char[][]
- *          The contents of the text widgets of the dialog.
- *          May return null if all text widgets are empty.
- */
-public char[][] getValues() {
-    return values;
-}
-/**
- * Opens the dialog in the given state.  Sets <code>Text</code> widget contents
- * and dialog behaviour accordingly.
- *
- * @param   dialogState int
- *                  The state the dialog should be opened in.
- */
-public char[][] open() {
-    createTextWidgets();
-    createControlButtons();
-    shell.pack();
-    shell.open();
-    Display display = shell.getDisplay();
-    while(!shell.isDisposed()){
-        if(!display.readAndDispatch())
-            display.sleep();
-    }
-
-    return getValues();
-}
-public void setLabels(char[][] labels) {
-    this.labels = labels;
-}
-public void setTitle(char[] title) {
-    shell.setText(title);
-}
-/**
- * Sets the values of the <code>Text</code> widgets of the dialog to
- * the values supplied in the parameter array.
- *
- * @param   itemInfo    char[][]
- *                      The values to which the dialog contents will be set.
- */
-public void setValues(char[][] itemInfo) {
-    if (labels is null) return;
-
-    if (values is null)
-        values = new char[][labels.length];
-
-    int numItems = Math.min(values.length, itemInfo.length);
-    for(int i = 0; i < numItems; i++) {
-        values[i] = itemInfo[i];
-    }
-}
-}
--- a/dwtexamples/addressbook/FindListener.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.addressbook.FindListener;
-
-
-public interface FindListener {
-
-public bool find();
-
-}
--- a/dwtexamples/addressbook/SearchDialog.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.addressbook.SearchDialog;
-
-
-import dwt.DWT;
-import dwt.events.ModifyEvent;
-import dwt.events.ModifyListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.ShellAdapter;
-import dwt.events.ShellEvent;
-import dwt.layout.FillLayout;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Combo;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.Label;
-import dwt.widgets.MessageBox;
-import dwt.widgets.Shell;
-import dwt.widgets.Text;
-
-import dwtexamples.addressbook.FindListener;
-
-import dwt.dwthelper.ResourceBundle;
-
-/**
- * SearchDialog is a simple class that uses <code>org.eclipse.swt</code>
- * libraries to implement a basic search dialog.
- */
-public class SearchDialog {
-
-    private static ResourceBundle resAddressBook;
-
-    Shell shell;
-    Text searchText;
-    Combo searchArea;
-    Label searchAreaLabel;
-    Button matchCase;
-    Button matchWord;
-    Button findButton;
-    Button down;
-    FindListener findHandler;
-
-/**
- * Class constructor that sets the parent shell and the table widget that
- * the dialog will search.
- *
- * @param parent    Shell
- *          The shell that is the parent of the dialog.
- */
-public this(Shell parent) {
-    if( resAddressBook is null ){
-        resAddressBook = ResourceBundle.getBundle("examples_addressbook");
-    }
-    shell = new Shell(parent, DWT.CLOSE | DWT.BORDER | DWT.TITLE);
-    GridLayout layout = new GridLayout();
-    layout.numColumns = 2;
-    shell.setLayout(layout);
-    shell.setText(resAddressBook.getString("Search_dialog_title"));
-    shell.addShellListener(new class() ShellAdapter{
-        public void shellClosed(ShellEvent e) {
-            // don't dispose of the shell, just hide it for later use
-            e.doit = false;
-            shell.setVisible(false);
-        }
-    });
-
-    Label label = new Label(shell, DWT.LEFT);
-    label.setText(resAddressBook.getString("Dialog_find_what"));
-    searchText = new Text(shell, DWT.BORDER);
-    GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
-    gridData.widthHint = 200;
-    searchText.setLayoutData(gridData);
-    searchText.addModifyListener(new class() ModifyListener {
-        public void modifyText(ModifyEvent e) {
-            bool enableFind = (searchText.getCharCount() !is 0);
-            findButton.setEnabled(enableFind);
-        }
-    });
-
-    searchAreaLabel = new Label(shell, DWT.LEFT);
-    searchArea = new Combo(shell, DWT.DROP_DOWN | DWT.READ_ONLY);
-    gridData = new GridData(GridData.FILL_HORIZONTAL);
-    gridData.widthHint = 200;
-    searchArea.setLayoutData(gridData);
-
-    matchCase = new Button(shell, DWT.CHECK);
-    matchCase.setText(resAddressBook.getString("Dialog_match_case"));
-    gridData = new GridData();
-    gridData.horizontalSpan = 2;
-    matchCase.setLayoutData(gridData);
-
-    matchWord = new Button(shell, DWT.CHECK);
-    matchWord.setText(resAddressBook.getString("Dialog_match_word"));
-    gridData = new GridData();
-    gridData.horizontalSpan = 2;
-    matchWord.setLayoutData(gridData);
-
-    Group direction = new Group(shell, DWT.NONE);
-    gridData = new GridData();
-    gridData.horizontalSpan = 2;
-    direction.setLayoutData(gridData);
-    direction.setLayout (new FillLayout ());
-    direction.setText(resAddressBook.getString("Dialog_direction"));
-
-    Button up = new Button(direction, DWT.RADIO);
-    up.setText(resAddressBook.getString("Dialog_dir_up"));
-    up.setSelection(false);
-
-    down = new Button(direction, DWT.RADIO);
-    down.setText(resAddressBook.getString("Dialog_dir_down"));
-    down.setSelection(true);
-
-    Composite composite = new Composite(shell, DWT.NONE);
-    gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-    gridData.horizontalSpan = 2;
-    composite.setLayoutData(gridData);
-    layout = new GridLayout();
-    layout.numColumns = 2;
-    layout.makeColumnsEqualWidth = true;
-    composite.setLayout(layout);
-
-    findButton = new Button(composite, DWT.PUSH);
-    findButton.setText(resAddressBook.getString("Dialog_find"));
-    findButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-    findButton.setEnabled(false);
-    findButton.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            if (!findHandler.find()){
-                MessageBox box = new MessageBox(shell, DWT.ICON_INFORMATION | DWT.OK | DWT.PRIMARY_MODAL);
-                box.setText(shell.getText());
-                box.setMessage(resAddressBook.getString("Cannot_find") ~ "\"" ~ searchText.getText() ~ "\"");
-                box.open();
-            }
-        }
-    });
-
-    Button cancelButton = new Button(composite, DWT.PUSH);
-    cancelButton.setText(resAddressBook.getString("Cancel"));
-    cancelButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
-    cancelButton.addSelectionListener(new class() SelectionAdapter {
-        public void widgetSelected(SelectionEvent e) {
-            shell.setVisible(false);
-        }
-    });
-
-    shell.pack();
-}
-public char[] getSearchAreaLabel(char[] label) {
-    return searchAreaLabel.getText();
-}
-
-public char[][] getsearchAreaNames() {
-    return searchArea.getItems();
-}
-public bool getMatchCase() {
-    return matchCase.getSelection();
-}
-public bool getMatchWord() {
-    return matchWord.getSelection();
-}
-public char[] getSearchString() {
-    return searchText.getText();
-}
-public bool getSearchDown(){
-    return down.getSelection();
-}
-public int getSelectedSearchArea() {
-    return searchArea.getSelectionIndex();
-}
-public void open() {
-    if (shell.isVisible()) {
-        shell.setFocus();
-    } else {
-        shell.open();
-    }
-    searchText.setFocus();
-}
-public void setSearchAreaNames(char[][] names) {
-    for (int i = 0; i < names.length; i++) {
-        searchArea.add(names[i]);
-    }
-    searchArea.select(0);
-}
-public void setSearchAreaLabel(char[] label) {
-    searchAreaLabel.setText(label);
-}
-public void setMatchCase(bool match) {
-    matchCase.setSelection(match);
-}
-public void setMatchWord(bool match) {
-    matchWord.setSelection(match);
-}
-public void setSearchDown(bool searchDown){
-    down.setSelection(searchDown);
-}
-public void setSearchString(char[] searchString) {
-    searchText.setText(searchString);
-}
-
-public void setSelectedSearchArea(int index) {
-    searchArea.select(index);
-}
-public void addFindListener(FindListener listener) {
-    this.findHandler = listener;
-}
-public void removeFindListener(FindListener listener) {
-    this.findHandler = null;
-}
-}
--- a/dwtexamples/addressbook/addressbook.properties	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-Last_name = Last Name
-First_name = First Name
-Business_phone = Business Phone
-Home_phone = Home Phone
-Email = Email
-Fax = Fax
-Close_save = The address book contents have changed.\nDo you want to save the changes?
-New_title = Untitled
-Column = Column:
-Book_extension = .adr
-Book_filter_name = Address Books
-All_filter_name = All Files
-File = File 
-Does_not_exist = does not exist.
-File_not_found = File not found:
-IO_error_read = IO error reading text file:
-IO_error_write = IO error writing text file:
-IO_error_close = IO error closing text file:
-Title_bar = Address Book - 
-Save_as_title = Save As
-Query_overwrite = already exists.\nDo you want to replace it?
-File_menu_title = &File
-New_contact = &New Contact...\tCtrl+N
-Edit_contact = &Edit Contact...\tCtrl+E
-New_address_book = New Address &Book\tCtrl+B
-Open_address_book = &Open Address Book...\tCtrl+O
-Save_address_book = &Save Address Book\tCtrl+S
-Save_book_as = Save &Address Book As...\tCtrl+A
-Exit = E&xit
-Edit_menu_title = &Edit
-Edit = &Edit...\tCtrl+E
-Copy = &Copy\tCtrl+C
-Paste = &Paste\tCtrl+V
-Delete = De&lete\tDel
-Sort = &Sort
-Search_menu_title = &Search
-Find = &Find...\tCtrl+F
-Find_next = Find &Next...\tF3
-Pop_up_new = &New...
-Pop_up_edit = &Edit...
-Pop_up_copy = &Copy
-Pop_up_paste = &Paste
-Pop_up_delete = &Delete
-Pop_up_find = &Find...
-Help_menu_title = &Help
-About = &About Address Book...
-About_1 = About 
-About_2 = \nversion 1.0
-OK = OK
-Cancel = Cancel
-Search_dialog_title = Find
-Dialog_find_what = Fi&nd what:
-Dialog_match_case = Match &case
-Dialog_match_word = Match &whole word
-Dialog_direction = Direction
-Dialog_dir_up = &Up
-Dialog_dir_down = &Down
-Dialog_find = &Find
-Cannot_find = Cannot find 
\ No newline at end of file
--- a/dwtexamples/controlexample/AlignableTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.AlignableTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-/**
- * <code>AlignableTab</code> is the abstract
- * superclass of example controls that can be
- * aligned.
- */
-abstract class AlignableTab : Tab {
-
-    /* Alignment Controls */
-    Button leftButton, rightButton, centerButton;
-
-    /* Alignment Group */
-    Group alignmentGroup;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create the group */
-        alignmentGroup = new Group (otherGroup, DWT.NONE);
-        alignmentGroup.setLayout (new GridLayout ());
-        alignmentGroup.setLayoutData (new GridData(GridData.HORIZONTAL_ALIGN_FILL |
-            GridData.VERTICAL_ALIGN_FILL));
-        alignmentGroup.setText (ControlExample.getResourceString("Alignment"));
-
-        /* Create the controls */
-        leftButton = new Button (alignmentGroup, DWT.RADIO);
-        leftButton.setText (ControlExample.getResourceString("Left"));
-        centerButton = new Button (alignmentGroup, DWT.RADIO);
-        centerButton.setText(ControlExample.getResourceString("Center"));
-        rightButton = new Button (alignmentGroup, DWT.RADIO);
-        rightButton.setText (ControlExample.getResourceString("Right"));
-
-        /* Add the listeners */
-        SelectionListener selectionListener = new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent event) {
-                if (!(cast(Button) event.widget).getSelection ()) return;
-                setExampleWidgetAlignment ();
-            }
-        };
-        leftButton.addSelectionListener (selectionListener);
-        centerButton.addSelectionListener (selectionListener);
-        rightButton.addSelectionListener (selectionListener);
-    }
-
-    /**
-     * Sets the alignment of the "Example" widgets.
-     */
-    abstract void setExampleWidgetAlignment ();
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        Widget [] widgets = getExampleWidgets ();
-        if (widgets.length !is 0) {
-            leftButton.setSelection ((widgets [0].getStyle () & DWT.LEFT) !is 0);
-            centerButton.setSelection ((widgets [0].getStyle () & DWT.CENTER) !is 0);
-            rightButton.setSelection ((widgets [0].getStyle () & DWT.RIGHT) !is 0);
-        }
-    }
-}
--- a/dwtexamples/controlexample/ButtonTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ButtonTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.AlignableTab;
-import dwtexamples.controlexample.ControlExample;
-
-/**
- * <code>ButtonTab</code> is the class that
- * demonstrates DWT buttons.
- */
-class ButtonTab : AlignableTab {
-
-    /* Example widgets and groups that contain them */
-    Button button1, button2, button3, button4, button5, button6, button7, button8, button9;
-    Group textButtonGroup, imageButtonGroup, imagetextButtonGroup;
-
-    /* Alignment widgets added to the "Control" group */
-    Button upButton, downButton;
-
-    /* Style widgets added to the "Style" group */
-    Button pushButton, checkButton, radioButton, toggleButton, arrowButton, flatButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Control" group.
-     */
-    void createControlGroup () {
-        super.createControlGroup ();
-
-        /* Create the controls */
-        upButton = new Button (alignmentGroup, DWT.RADIO);
-        upButton.setText (ControlExample.getResourceString("Up"));
-        downButton = new Button (alignmentGroup, DWT.RADIO);
-        downButton.setText (ControlExample.getResourceString("Down"));
-
-        /* Add the listeners */
-        SelectionListener selectionListener = new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent event) {
-                if (!(cast(Button) event.widget).getSelection()) return;
-                setExampleWidgetAlignment ();
-            }
-        };
-        upButton.addSelectionListener(selectionListener);
-        downButton.addSelectionListener(selectionListener);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for text buttons */
-        textButtonGroup = new Group(exampleGroup, DWT.NONE);
-        GridLayout gridLayout = new GridLayout ();
-        textButtonGroup.setLayout(gridLayout);
-        gridLayout.numColumns = 3;
-        textButtonGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        textButtonGroup.setText (ControlExample.getResourceString("Text_Buttons"));
-
-        /* Create a group for the image buttons */
-        imageButtonGroup = new Group(exampleGroup, DWT.NONE);
-        gridLayout = new GridLayout();
-        imageButtonGroup.setLayout(gridLayout);
-        gridLayout.numColumns = 3;
-        imageButtonGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        imageButtonGroup.setText (ControlExample.getResourceString("Image_Buttons"));
-
-        /* Create a group for the image and text buttons */
-        imagetextButtonGroup = new Group(exampleGroup, DWT.NONE);
-        gridLayout = new GridLayout();
-        imagetextButtonGroup.setLayout(gridLayout);
-        gridLayout.numColumns = 3;
-        imagetextButtonGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        imagetextButtonGroup.setText (ControlExample.getResourceString("Image_Text_Buttons"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (pushButton.getSelection()) style |= DWT.PUSH;
-        if (checkButton.getSelection()) style |= DWT.CHECK;
-        if (radioButton.getSelection()) style |= DWT.RADIO;
-        if (toggleButton.getSelection()) style |= DWT.TOGGLE;
-        if (flatButton.getSelection()) style |= DWT.FLAT;
-        if (borderButton.getSelection()) style |= DWT.BORDER;
-        if (leftButton.getSelection()) style |= DWT.LEFT;
-        if (rightButton.getSelection()) style |= DWT.RIGHT;
-        if (arrowButton.getSelection()) {
-            style |= DWT.ARROW;
-            if (upButton.getSelection()) style |= DWT.UP;
-            if (downButton.getSelection()) style |= DWT.DOWN;
-        } else {
-            if (centerButton.getSelection()) style |= DWT.CENTER;
-        }
-
-        /* Create the example widgets */
-        button1 = new Button(textButtonGroup, style);
-        button1.setText(ControlExample.getResourceString("One"));
-        button2 = new Button(textButtonGroup, style);
-        button2.setText(ControlExample.getResourceString("Two"));
-        button3 = new Button(textButtonGroup, style);
-        button3.setText(ControlExample.getResourceString("Three"));
-        button4 = new Button(imageButtonGroup, style);
-        button4.setImage(instance.images[ControlExample.ciClosedFolder]);
-        button5 = new Button(imageButtonGroup, style);
-        button5.setImage(instance.images[ControlExample.ciOpenFolder]);
-        button6 = new Button(imageButtonGroup, style);
-        button6.setImage(instance.images[ControlExample.ciTarget]);
-        button7 = new Button(imagetextButtonGroup, style);
-        button7.setText(ControlExample.getResourceString("One"));
-        button7.setImage(instance.images[ControlExample.ciClosedFolder]);
-        button8 = new Button(imagetextButtonGroup, style);
-        button8.setText(ControlExample.getResourceString("Two"));
-        button8.setImage(instance.images[ControlExample.ciOpenFolder]);
-        button9 = new Button(imagetextButtonGroup, style);
-        button9.setText(ControlExample.getResourceString("Three"));
-        button9.setImage(instance.images[ControlExample.ciTarget]);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        pushButton = new Button (styleGroup, DWT.RADIO);
-        pushButton.setText("DWT.PUSH");
-        checkButton = new Button (styleGroup, DWT.RADIO);
-        checkButton.setText ("DWT.CHECK");
-        radioButton = new Button (styleGroup, DWT.RADIO);
-        radioButton.setText ("DWT.RADIO");
-        toggleButton = new Button (styleGroup, DWT.RADIO);
-        toggleButton.setText ("DWT.TOGGLE");
-        arrowButton = new Button (styleGroup, DWT.RADIO);
-        arrowButton.setText ("DWT.ARROW");
-        flatButton = new Button (styleGroup, DWT.CHECK);
-        flatButton.setText ("DWT.FLAT");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) button1, button2, button3, button4, button5, button6, button7, button8, button9 ];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return [ cast(char[])"Selection", "Text", "ToolTipText" ];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Button";
-    }
-
-    /**
-     * Sets the alignment of the "Example" widgets.
-     */
-    void setExampleWidgetAlignment () {
-        int alignment = 0;
-        if (leftButton.getSelection ()) alignment = DWT.LEFT;
-        if (centerButton.getSelection ()) alignment = DWT.CENTER;
-        if (rightButton.getSelection ()) alignment = DWT.RIGHT;
-        if (upButton.getSelection ()) alignment = DWT.UP;
-        if (downButton.getSelection ()) alignment = DWT.DOWN;
-        button1.setAlignment (alignment);
-        button2.setAlignment (alignment);
-        button3.setAlignment (alignment);
-        button4.setAlignment (alignment);
-        button5.setAlignment (alignment);
-        button6.setAlignment (alignment);
-        button7.setAlignment (alignment);
-        button8.setAlignment (alignment);
-        button9.setAlignment (alignment);
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        if (arrowButton.getSelection ()) {
-            upButton.setEnabled (true);
-            centerButton.setEnabled (false);
-            downButton.setEnabled (true);
-        } else {
-            upButton.setEnabled (false);
-            centerButton.setEnabled (true);
-            downButton.setEnabled (false);
-        }
-        upButton.setSelection ((button1.getStyle () & DWT.UP) !is 0);
-        downButton.setSelection ((button1.getStyle () & DWT.DOWN) !is 0);
-        pushButton.setSelection ((button1.getStyle () & DWT.PUSH) !is 0);
-        checkButton.setSelection ((button1.getStyle () & DWT.CHECK) !is 0);
-        radioButton.setSelection ((button1.getStyle () & DWT.RADIO) !is 0);
-        toggleButton.setSelection ((button1.getStyle () & DWT.TOGGLE) !is 0);
-        arrowButton.setSelection ((button1.getStyle () & DWT.ARROW) !is 0);
-        flatButton.setSelection ((button1.getStyle () & DWT.FLAT) !is 0);
-        borderButton.setSelection ((button1.getStyle () & DWT.BORDER) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/CComboTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.CComboTab;
-
-
-
-import dwt.DWT;
-import dwt.custom.CCombo;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-class CComboTab : Tab {
-
-    /* Example widgets and groups that contain them */
-    CCombo combo1;
-    Group comboGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button flatButton, readOnlyButton;
-
-    static char[] [] ListData;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-        if( ListData is null ){
-            ListData = [
-                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")];
-        }
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the combo box */
-        comboGroup = new Group (exampleGroup, DWT.NONE);
-        comboGroup.setLayout (new GridLayout ());
-        comboGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        comboGroup.setText (ControlExample.getResourceString("Custom_Combo"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (flatButton.getSelection ()) style |= DWT.FLAT;
-        if (readOnlyButton.getSelection ()) style |= DWT.READ_ONLY;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        combo1 = new CCombo (comboGroup, style);
-        combo1.setItems (ListData);
-        if (ListData.length >= 3) {
-            combo1.setText(ListData [2]);
-        }
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        readOnlyButton = new Button (styleGroup, DWT.CHECK);
-        readOnlyButton.setText ("DWT.READ_ONLY");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-        flatButton = new Button (styleGroup, DWT.CHECK);
-        flatButton.setText ("DWT.FLAT");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [cast(Widget) combo1];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["Editable", "Items", "Selection", "Text", "TextLimit", "ToolTipText", "VisibleItemCount"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "CCombo";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        flatButton.setSelection ((combo1.getStyle () & DWT.FLAT) !is 0);
-        readOnlyButton.setSelection ((combo1.getStyle () & DWT.READ_ONLY) !is 0);
-        borderButton.setSelection ((combo1.getStyle () & DWT.BORDER) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/CLabelTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.CLabelTab;
-
-
-
-import dwt.DWT;
-import dwt.custom.CLabel;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Widget;
-
-
-import dwtexamples.controlexample.AlignableTab;
-import dwtexamples.controlexample.ControlExample;
-
-import tango.text.convert.Format;
-
-class CLabelTab : AlignableTab {
-    /* Example widgets and groups that contain them */
-    CLabel label1, label2, label3;
-    Group textLabelGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button shadowInButton, shadowOutButton, shadowNoneButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the text labels */
-        textLabelGroup = new Group(exampleGroup, DWT.NONE);
-        GridLayout gridLayout = new GridLayout ();
-        textLabelGroup.setLayout (gridLayout);
-        gridLayout.numColumns = 3;
-        textLabelGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        textLabelGroup.setText (ControlExample.getResourceString("Custom_Labels"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (shadowInButton.getSelection ()) style |= DWT.SHADOW_IN;
-        if (shadowNoneButton.getSelection ()) style |= DWT.SHADOW_NONE;
-        if (shadowOutButton.getSelection ()) style |= DWT.SHADOW_OUT;
-        if (leftButton.getSelection ()) style |= DWT.LEFT;
-        if (centerButton.getSelection ()) style |= DWT.CENTER;
-        if (rightButton.getSelection ()) style |= DWT.RIGHT;
-
-        /* Create the example widgets */
-        label1 = new CLabel (textLabelGroup, style);
-        label1.setText(ControlExample.getResourceString("One"));
-        label1.setImage (instance.images[ControlExample.ciClosedFolder]);
-        label2 = new CLabel (textLabelGroup, style);
-        label2.setImage (instance.images[ControlExample.ciTarget]);
-        label3 = new CLabel (textLabelGroup, style);
-        label3.setText(Format( "{}\n{}", ControlExample.getResourceString("Example_string"), ControlExample.getResourceString("One_Two_Three")));
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        shadowNoneButton = new Button (styleGroup, DWT.RADIO);
-        shadowNoneButton.setText ("DWT.SHADOW_NONE");
-        shadowInButton = new Button (styleGroup, DWT.RADIO);
-        shadowInButton.setText ("DWT.SHADOW_IN");
-        shadowOutButton = new Button (styleGroup, DWT.RADIO);
-        shadowOutButton.setText ("DWT.SHADOW_OUT");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) label1, label2, label3];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["Text", "ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "CLabel";
-    }
-
-    /**
-     * Sets the alignment of the "Example" widgets.
-     */
-    void setExampleWidgetAlignment () {
-        int alignment = 0;
-        if (leftButton.getSelection ()) alignment = DWT.LEFT;
-        if (centerButton.getSelection ()) alignment = DWT.CENTER;
-        if (rightButton.getSelection ()) alignment = DWT.RIGHT;
-        label1.setAlignment (alignment);
-        label2.setAlignment (alignment);
-        label3.setAlignment (alignment);
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        leftButton.setSelection ((label1.getStyle () & DWT.LEFT) !is 0);
-        centerButton.setSelection ((label1.getStyle () & DWT.CENTER) !is 0);
-        rightButton.setSelection ((label1.getStyle () & DWT.RIGHT) !is 0);
-        shadowInButton.setSelection ((label1.getStyle () & DWT.SHADOW_IN) !is 0);
-        shadowOutButton.setSelection ((label1.getStyle () & DWT.SHADOW_OUT) !is 0);
-        shadowNoneButton.setSelection ((label1.getStyle () & (DWT.SHADOW_IN | DWT.SHADOW_OUT)) is 0);
-    }
-}
--- a/dwtexamples/controlexample/CTabFolderTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,478 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.CTabFolderTab;
-
-
-
-import dwt.DWT;
-import dwt.custom.CTabFolder;
-import dwt.custom.CTabFolder2Adapter;
-import dwt.custom.CTabFolderEvent;
-import dwt.custom.CTabItem;
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.graphics.Color;
-import dwt.graphics.Font;
-import dwt.graphics.FontData;
-import dwt.graphics.Image;
-import dwt.graphics.RGB;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Event;
-import dwt.widgets.Group;
-import dwt.widgets.Item;
-import dwt.widgets.Listener;
-import dwt.widgets.TableItem;
-import dwt.widgets.Text;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-import tango.text.convert.Format;
-
-class CTabFolderTab : Tab {
-    int lastSelectedTab = 0;
-
-    /* Example widgets and groups that contain them */
-    CTabFolder tabFolder1;
-    Group tabFolderGroup, itemGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button topButton, bottomButton, flatButton, closeButton;
-
-    static char[] [] CTabItems1;
-
-    /* Controls and resources added to the "Fonts" group */
-    static const int SELECTION_FOREGROUND_COLOR = 3;
-    static const int SELECTION_BACKGROUND_COLOR = 4;
-    static const int ITEM_FONT = 5;
-    Color selectionForegroundColor, selectionBackgroundColor;
-    Font itemFont;
-
-    /* Other widgets added to the "Other" group */
-    Button simpleTabButton, singleTabButton, imageButton, showMinButton, showMaxButton, unselectedCloseButton, unselectedImageButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-        if( CTabItems1 is null ){
-            CTabItems1 = [
-                ControlExample.getResourceString("CTabItem1_0"),
-                ControlExample.getResourceString("CTabItem1_1"),
-                ControlExample.getResourceString("CTabItem1_2")];
-        }
-    }
-
-    /**
-     * Creates the "Colors and Fonts" group.
-     */
-    void createColorAndFontGroup () {
-        super.createColorAndFontGroup();
-
-        TableItem item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Selection_Foreground_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Selection_Background_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Font"));
-
-        shell.addDisposeListener(new class() DisposeListener {
-            public void widgetDisposed(DisposeEvent event) {
-                if (selectionBackgroundColor !is null) selectionBackgroundColor.dispose();
-                if (selectionForegroundColor !is null) selectionForegroundColor.dispose();
-                if (itemFont !is null) itemFont.dispose();
-                selectionBackgroundColor = null;
-                selectionForegroundColor = null;
-                itemFont = null;
-            }
-        });
-    }
-
-    void changeFontOrColor(int index) {
-        switch (index) {
-            case SELECTION_FOREGROUND_COLOR: {
-                Color oldColor = selectionForegroundColor;
-                if (oldColor is null) oldColor = tabFolder1.getSelectionForeground();
-                colorDialog.setRGB(oldColor.getRGB());
-                RGB rgb = colorDialog.open();
-                if (rgb is null) return;
-                oldColor = selectionForegroundColor;
-                selectionForegroundColor = new Color (display, rgb);
-                setSelectionForeground ();
-                if (oldColor !is null) oldColor.dispose ();
-            }
-            break;
-            case SELECTION_BACKGROUND_COLOR: {
-                Color oldColor = selectionBackgroundColor;
-                if (oldColor is null) oldColor = tabFolder1.getSelectionBackground();
-                colorDialog.setRGB(oldColor.getRGB());
-                RGB rgb = colorDialog.open();
-                if (rgb is null) return;
-                oldColor = selectionBackgroundColor;
-                selectionBackgroundColor = new Color (display, rgb);
-                setSelectionBackground ();
-                if (oldColor !is null) oldColor.dispose ();
-            }
-            break;
-            case ITEM_FONT: {
-                Font oldFont = itemFont;
-                if (oldFont is null) oldFont = tabFolder1.getItem (0).getFont ();
-                fontDialog.setFontList(oldFont.getFontData());
-                FontData fontData = fontDialog.open ();
-                if (fontData is null) return;
-                oldFont = itemFont;
-                itemFont = new Font (display, fontData);
-                setItemFont ();
-                setExampleWidgetSize ();
-                if (oldFont !is null) oldFont.dispose ();
-            }
-            break;
-            default:
-                super.changeFontOrColor(index);
-        }
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        simpleTabButton = new Button (otherGroup, DWT.CHECK);
-        simpleTabButton.setText (ControlExample.getResourceString("Set_Simple_Tabs"));
-        simpleTabButton.setSelection(true);
-        simpleTabButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setSimpleTabs();
-            }
-        });
-
-        singleTabButton = new Button (otherGroup, DWT.CHECK);
-        singleTabButton.setText (ControlExample.getResourceString("Set_Single_Tabs"));
-        singleTabButton.setSelection(false);
-        singleTabButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setSingleTabs();
-            }
-        });
-
-        showMinButton = new Button (otherGroup, DWT.CHECK);
-        showMinButton.setText (ControlExample.getResourceString("Set_Min_Visible"));
-        showMinButton.setSelection(false);
-        showMinButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setMinimizeVisible();
-            }
-        });
-
-        showMaxButton = new Button (otherGroup, DWT.CHECK);
-        showMaxButton.setText (ControlExample.getResourceString("Set_Max_Visible"));
-        showMaxButton.setSelection(false);
-        showMaxButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setMaximizeVisible();
-            }
-        });
-
-        imageButton = new Button (otherGroup, DWT.CHECK);
-        imageButton.setText (ControlExample.getResourceString("Set_Image"));
-        imageButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setImages();
-            }
-        });
-
-        unselectedImageButton = new Button (otherGroup, DWT.CHECK);
-        unselectedImageButton.setText (ControlExample.getResourceString("Set_Unselected_Image_Visible"));
-        unselectedImageButton.setSelection(true);
-        unselectedImageButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setUnselectedImageVisible();
-            }
-        });
-        unselectedCloseButton = new Button (otherGroup, DWT.CHECK);
-        unselectedCloseButton.setText (ControlExample.getResourceString("Set_Unselected_Close_Visible"));
-        unselectedCloseButton.setSelection(true);
-        unselectedCloseButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setUnselectedCloseVisible();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the CTabFolder */
-        tabFolderGroup = new Group (exampleGroup, DWT.NONE);
-        tabFolderGroup.setLayout (new GridLayout ());
-        tabFolderGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        tabFolderGroup.setText ("CTabFolder");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (topButton.getSelection ()) style |= DWT.TOP;
-        if (bottomButton.getSelection ()) style |= DWT.BOTTOM;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (flatButton.getSelection ()) style |= DWT.FLAT;
-        if (closeButton.getSelection ()) style |= DWT.CLOSE;
-
-        /* Create the example widgets */
-        tabFolder1 = new CTabFolder (tabFolderGroup, style);
-        for (int i = 0; i < CTabItems1.length; i++) {
-            CTabItem item = new CTabItem(tabFolder1, DWT.NONE);
-            item.setText(CTabItems1[i]);
-            Text text = new Text(tabFolder1, DWT.READ_ONLY);
-            text.setText(Format( "{}: {}", ControlExample.getResourceString("CTabItem_content"), i));
-            item.setControl(text);
-        }
-        tabFolder1.addListener(DWT.Selection, new class() Listener {
-            public void handleEvent(Event event) {
-                lastSelectedTab = tabFolder1.getSelectionIndex();
-            }
-        });
-        tabFolder1.setSelection(lastSelectedTab);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        topButton = new Button (styleGroup, DWT.RADIO);
-        topButton.setText ("DWT.TOP");
-        topButton.setSelection(true);
-        bottomButton = new Button (styleGroup, DWT.RADIO);
-        bottomButton.setText ("DWT.BOTTOM");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-        flatButton = new Button (styleGroup, DWT.CHECK);
-        flatButton.setText ("DWT.FLAT");
-        closeButton = new Button (styleGroup, DWT.CHECK);
-        closeButton.setText ("DWT.CLOSE");
-    }
-
-    /**
-     * Gets the list of custom event names.
-     *
-     * @return an array containing custom event names
-     */
-    char[] [] getCustomEventNames () {
-        return ["CTabFolderEvent"];
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        return tabFolder1.getItems();
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) tabFolder1];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "CTabFolder";
-    }
-
-    /**
-     * Hooks the custom listener specified by eventName.
-     */
-    void hookCustomListener (char[] eventName) {
-        if (eventName is "CTabFolderEvent") {
-            tabFolder1.addCTabFolder2Listener (new class(eventName) CTabFolder2Adapter {
-                char[] name;
-                this( char[] name ){ this.name = name; }
-                public void close (CTabFolderEvent event) {
-                    log (name, event);
-                }
-            });
-        }
-    }
-
-    /**
-     * Sets the foreground color, background color, and font
-     * of the "Example" widgets to their default settings.
-     * Also sets foreground and background color of the Node 1
-     * TreeItems to default settings.
-     */
-    void resetColorsAndFonts () {
-        super.resetColorsAndFonts ();
-        Color oldColor = selectionForegroundColor;
-        selectionForegroundColor = null;
-        setSelectionForeground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldColor = selectionBackgroundColor;
-        selectionBackgroundColor = null;
-        setSelectionBackground ();
-        if (oldColor !is null) oldColor.dispose();
-        Font oldFont = itemFont;
-        itemFont = null;
-        setItemFont ();
-        if (oldFont !is null) oldFont.dispose();
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState();
-        setSimpleTabs();
-        setSingleTabs();
-        setImages();
-        setMinimizeVisible();
-        setMaximizeVisible();
-        setUnselectedCloseVisible();
-        setUnselectedImageVisible();
-        setSelectionBackground ();
-        setSelectionForeground ();
-        setItemFont ();
-        setExampleWidgetSize();
-    }
-
-    /**
-     * Sets the shape that the CTabFolder will use to render itself.
-     */
-    void setSimpleTabs () {
-        tabFolder1.setSimple (simpleTabButton.getSelection ());
-        setExampleWidgetSize();
-    }
-
-    /**
-     * Sets the number of tabs that the CTabFolder should display.
-     */
-    void setSingleTabs () {
-        tabFolder1.setSingle (singleTabButton.getSelection ());
-        setExampleWidgetSize();
-    }
-    /**
-     * Sets an image into each item of the "Example" widgets.
-     */
-    void setImages () {
-        bool setImage = imageButton.getSelection ();
-        CTabItem items[] = tabFolder1.getItems ();
-        for (int i = 0; i < items.length; i++) {
-            if (setImage) {
-                items[i].setImage (instance.images[ControlExample.ciClosedFolder]);
-            } else {
-                items[i].setImage (null);
-            }
-        }
-        setExampleWidgetSize ();
-    }
-    /**
-     * Sets the visibility of the minimize button
-     */
-    void setMinimizeVisible () {
-        tabFolder1.setMinimizeVisible(showMinButton.getSelection ());
-        setExampleWidgetSize();
-    }
-    /**
-     * Sets the visibility of the maximize button
-     */
-    void setMaximizeVisible () {
-        tabFolder1.setMaximizeVisible(showMaxButton.getSelection ());
-        setExampleWidgetSize();
-    }
-    /**
-     * Sets the visibility of the close button on unselected tabs
-     */
-    void setUnselectedCloseVisible () {
-        tabFolder1.setUnselectedCloseVisible(unselectedCloseButton.getSelection ());
-        setExampleWidgetSize();
-    }
-    /**
-     * Sets the visibility of the image on unselected tabs
-     */
-    void setUnselectedImageVisible () {
-        tabFolder1.setUnselectedImageVisible(unselectedImageButton.getSelection ());
-        setExampleWidgetSize();
-    }
-    /**
-     * Sets the background color of CTabItem 0.
-     */
-    void setSelectionBackground () {
-        if (!instance.startup) {
-            tabFolder1.setSelectionBackground(selectionBackgroundColor);
-        }
-        // Set the selection background item's image to match the background color of the selection.
-        Color color = selectionBackgroundColor;
-        if (color is null) color = tabFolder1.getSelectionBackground ();
-        TableItem item = colorAndFontTable.getItem(SELECTION_BACKGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the foreground color of CTabItem 0.
-     */
-    void setSelectionForeground () {
-        if (!instance.startup) {
-            tabFolder1.setSelectionForeground(selectionForegroundColor);
-        }
-        // Set the selection foreground item's image to match the foreground color of the selection.
-        Color color = selectionForegroundColor;
-        if (color is null) color = tabFolder1.getSelectionForeground ();
-        TableItem item = colorAndFontTable.getItem(SELECTION_FOREGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the font of CTabItem 0.
-     */
-    void setItemFont () {
-        if (!instance.startup) {
-            tabFolder1.getItem (0).setFont (itemFont);
-            setExampleWidgetSize();
-        }
-        /* Set the font item's image to match the font of the item. */
-        Font ft = itemFont;
-        if (ft is null) ft = tabFolder1.getItem (0).getFont ();
-        TableItem item = colorAndFontTable.getItem(ITEM_FONT);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (fontImage(ft));
-        item.setFont(ft);
-        colorAndFontTable.layout ();
-    }
-}
--- a/dwtexamples/controlexample/CanvasTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.CanvasTab;
-
-
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.events.PaintEvent;
-import dwt.events.PaintListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.graphics.Color;
-import dwt.graphics.Font;
-import dwt.graphics.GC;
-import dwt.graphics.Point;
-import dwt.graphics.Rectangle;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Canvas;
-import dwt.widgets.Caret;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.ScrollBar;
-import dwt.widgets.TabFolder;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-class CanvasTab : Tab {
-    static const int colors [] = [
-        DWT.COLOR_RED,
-        DWT.COLOR_GREEN,
-        DWT.COLOR_BLUE,
-        DWT.COLOR_MAGENTA,
-        DWT.COLOR_YELLOW,
-        DWT.COLOR_CYAN,
-        DWT.COLOR_DARK_RED,
-        DWT.COLOR_DARK_GREEN,
-        DWT.COLOR_DARK_BLUE,
-        DWT.COLOR_DARK_MAGENTA,
-        DWT.COLOR_DARK_YELLOW,
-        DWT.COLOR_DARK_CYAN
-    ];
-    static final char[] canvasString = "Canvas"; //$NON-NLS-1$
-
-    /* Example widgets and groups that contain them */
-    Canvas canvas;
-    Group canvasGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button horizontalButton, verticalButton, noBackgroundButton, noFocusButton,
-    noMergePaintsButton, noRedrawResizeButton, doubleBufferedButton;
-
-    /* Other widgets added to the "Other" group */
-    Button caretButton, fillDamageButton;
-
-    int paintCount;
-    int cx, cy;
-    int maxX, maxY;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        caretButton = new Button (otherGroup, DWT.CHECK);
-        caretButton.setText (ControlExample.getResourceString("Caret"));
-        fillDamageButton = new Button (otherGroup, DWT.CHECK);
-        fillDamageButton.setText (ControlExample.getResourceString("FillDamage"));
-
-        /* Add the listeners */
-        caretButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setCaret ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the canvas widget */
-        canvasGroup = new Group (exampleGroup, DWT.NONE);
-        canvasGroup.setLayout (new GridLayout ());
-        canvasGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        canvasGroup.setText ("Canvas");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (noBackgroundButton.getSelection ()) style |= DWT.NO_BACKGROUND;
-        if (noFocusButton.getSelection ()) style |= DWT.NO_FOCUS;
-        if (noMergePaintsButton.getSelection ()) style |= DWT.NO_MERGE_PAINTS;
-        if (noRedrawResizeButton.getSelection ()) style |= DWT.NO_REDRAW_RESIZE;
-        if (doubleBufferedButton.getSelection ()) style |= DWT.DOUBLE_BUFFERED;
-
-        /* Create the example widgets */
-        paintCount = 0; cx = 0; cy = 0;
-        canvas = new Canvas (canvasGroup, style);
-        canvas.addPaintListener(new class() PaintListener {
-            public void paintControl(PaintEvent e) {
-                paintCount++;
-                GC gc = e.gc;
-                if (fillDamageButton.getSelection ()) {
-                    Color color = e.display.getSystemColor (colors [paintCount % colors.length]);
-                    gc.setBackground(color);
-                    gc.fillRectangle(e.x, e.y, e.width, e.height);
-                }
-                Point size = canvas.getSize ();
-                gc.drawArc(cx + 1, cy + 1, size.x - 2, size.y - 2, 0, 360);
-                gc.drawRectangle(cx + (size.x - 10) / 2, cy + (size.y - 10) / 2, 10, 10);
-                Point extent = gc.textExtent(canvasString);
-                gc.drawString(canvasString, cx + (size.x - extent.x) / 2, cy - extent.y + (size.y - 10) / 2, true);
-            }
-        });
-        canvas.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent event) {
-                Point size = canvas.getSize ();
-                maxX = size.x * 3 / 2; maxY = size.y * 3 / 2;
-                resizeScrollBars ();
-            }
-        });
-        ScrollBar bar = canvas.getHorizontalBar();
-        if (bar !is null) {
-            hookListeners (bar);
-            bar.addSelectionListener(new class() SelectionAdapter {
-                public void widgetSelected(SelectionEvent event) {
-                    scrollHorizontal (cast(ScrollBar)event.widget);
-                }
-            });
-        }
-        bar = canvas.getVerticalBar();
-        if (bar !is null) {
-            hookListeners (bar);
-            bar.addSelectionListener(new class() SelectionAdapter {
-                public void widgetSelected(SelectionEvent event) {
-                    scrollVertical (cast(ScrollBar)event.widget);
-                }
-            });
-        }
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        horizontalButton = new Button (styleGroup, DWT.CHECK);
-        horizontalButton.setText ("DWT.H_SCROLL");
-        horizontalButton.setSelection(true);
-        verticalButton = new Button (styleGroup, DWT.CHECK);
-        verticalButton.setText ("DWT.V_SCROLL");
-        verticalButton.setSelection(true);
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-        noBackgroundButton = new Button (styleGroup, DWT.CHECK);
-        noBackgroundButton.setText ("DWT.NO_BACKGROUND");
-        noFocusButton = new Button (styleGroup, DWT.CHECK);
-        noFocusButton.setText ("DWT.NO_FOCUS");
-        noMergePaintsButton = new Button (styleGroup, DWT.CHECK);
-        noMergePaintsButton.setText ("DWT.NO_MERGE_PAINTS");
-        noRedrawResizeButton = new Button (styleGroup, DWT.CHECK);
-        noRedrawResizeButton.setText ("DWT.NO_REDRAW_RESIZE");
-        doubleBufferedButton = new Button (styleGroup, DWT.CHECK);
-        doubleBufferedButton.setText ("DWT.DOUBLE_BUFFERED");
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        super.createTabFolderPage (tabFolder);
-
-        /*
-         * Add a resize listener to the tabFolderPage so that
-         * if the user types into the example widget to change
-         * its preferred size, and then resizes the shell, we
-         * recalculate the preferred size correctly.
-         */
-        tabFolderPage.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent e) {
-                setExampleWidgetSize ();
-            }
-        });
-
-        return tabFolderPage;
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) canvas ];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Canvas";
-    }
-
-    /**
-     * Resizes the maximum and thumb of both scrollbars.
-     */
-    void resizeScrollBars () {
-        Rectangle clientArea = canvas.getClientArea();
-        ScrollBar bar = canvas.getHorizontalBar();
-        if (bar !is null) {
-            bar.setMaximum(maxX);
-            bar.setThumb(clientArea.width);
-            bar.setPageIncrement(clientArea.width);
-        }
-        bar = canvas.getVerticalBar();
-        if (bar !is null) {
-            bar.setMaximum(maxY);
-            bar.setThumb(clientArea.height);
-            bar.setPageIncrement(clientArea.height);
-        }
-    }
-
-    /**
-     * Scrolls the canvas horizontally.
-     *
-     * @param scrollBar
-     */
-    void scrollHorizontal (ScrollBar scrollBar) {
-        Rectangle bounds = canvas.getClientArea();
-        int x = -scrollBar.getSelection();
-        if (x + maxX < bounds.width) {
-            x = bounds.width - maxX;
-        }
-        canvas.scroll(x, cy, cx, cy, maxX, maxY, false);
-        cx = x;
-    }
-
-    /**
-     * Scrolls the canvas vertically.
-     *
-     * @param scrollBar
-     */
-    void scrollVertical (ScrollBar scrollBar) {
-        Rectangle bounds = canvas.getClientArea();
-        int y = -scrollBar.getSelection();
-        if (y + maxY < bounds.height) {
-            y = bounds.height - maxY;
-        }
-        canvas.scroll(cx, y, cx, cy, maxX, maxY, false);
-        cy = y;
-    }
-
-    /**
-     * Sets or clears the caret in the "Example" widget.
-     */
-    void setCaret () {
-        Caret oldCaret = canvas.getCaret ();
-        if (caretButton.getSelection ()) {
-            Caret newCaret = new Caret(canvas, DWT.NONE);
-            Font font = canvas.getFont();
-            newCaret.setFont(font);
-            GC gc = new GC(canvas);
-            gc.setFont(font);
-            newCaret.setBounds(1, 1, 1, gc.getFontMetrics().getHeight());
-            gc.dispose();
-            canvas.setCaret (newCaret);
-            canvas.setFocus();
-        } else {
-            canvas.setCaret (null);
-        }
-        if (oldCaret !is null) oldCaret.dispose ();
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        horizontalButton.setSelection ((canvas.getStyle () & DWT.H_SCROLL) !is 0);
-        verticalButton.setSelection ((canvas.getStyle () & DWT.V_SCROLL) !is 0);
-        borderButton.setSelection ((canvas.getStyle () & DWT.BORDER) !is 0);
-        noBackgroundButton.setSelection ((canvas.getStyle () & DWT.NO_BACKGROUND) !is 0);
-        noFocusButton.setSelection ((canvas.getStyle () & DWT.NO_FOCUS) !is 0);
-        noMergePaintsButton.setSelection ((canvas.getStyle () & DWT.NO_MERGE_PAINTS) !is 0);
-        noRedrawResizeButton.setSelection ((canvas.getStyle () & DWT.NO_REDRAW_RESIZE) !is 0);
-        doubleBufferedButton.setSelection ((canvas.getStyle () & DWT.DOUBLE_BUFFERED) !is 0);
-        if (!instance.startup) setCaret ();
-    }
-}
--- a/dwtexamples/controlexample/ComboTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ComboTab;
-
-
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Combo;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.TabFolder;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-class ComboTab : Tab {
-
-    /* Example widgets and groups that contain them */
-    Combo combo1;
-    Group comboGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button dropDownButton, readOnlyButton, simpleButton;
-
-    static char[] [] ListData;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-        if( ListData.length is 0 ){
-            ListData = [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")];
-        }
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the combo box */
-        comboGroup = new Group (exampleGroup, DWT.NONE);
-        comboGroup.setLayout (new GridLayout ());
-        comboGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        comboGroup.setText ("Combo");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (dropDownButton.getSelection ()) style |= DWT.DROP_DOWN;
-        if (readOnlyButton.getSelection ()) style |= DWT.READ_ONLY;
-        if (simpleButton.getSelection ()) style |= DWT.SIMPLE;
-
-        /* Create the example widgets */
-        combo1 = new Combo (comboGroup, style);
-        combo1.setItems (ListData);
-        if (ListData.length >= 3) {
-            combo1.setText(ListData [2]);
-        }
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        super.createTabFolderPage (tabFolder);
-
-        /*
-         * Add a resize listener to the tabFolderPage so that
-         * if the user types into the example widget to change
-         * its preferred size, and then resizes the shell, we
-         * recalculate the preferred size correctly.
-         */
-        tabFolderPage.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent e) {
-                setExampleWidgetSize ();
-            }
-        });
-
-        return tabFolderPage;
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        dropDownButton = new Button (styleGroup, DWT.RADIO);
-        dropDownButton.setText ("DWT.DROP_DOWN");
-        simpleButton = new Button (styleGroup, DWT.RADIO);
-        simpleButton.setText("DWT.SIMPLE");
-        readOnlyButton = new Button (styleGroup, DWT.CHECK);
-        readOnlyButton.setText ("DWT.READ_ONLY");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) combo1];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["Items", "Orientation", "Selection", "Text", "TextLimit", "ToolTipText", "VisibleItemCount"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Combo";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        dropDownButton.setSelection ((combo1.getStyle () & DWT.DROP_DOWN) !is 0);
-        simpleButton.setSelection ((combo1.getStyle () & DWT.SIMPLE) !is 0);
-        readOnlyButton.setSelection ((combo1.getStyle () & DWT.READ_ONLY) !is 0);
-        readOnlyButton.setEnabled(!simpleButton.getSelection());
-    }
-}
--- a/dwtexamples/controlexample/ControlExample.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,322 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
-  * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
-*******************************************************************************/
-module dwtexamples.controlexample.ControlExample;
-
-import dwt.DWT;
-import dwt.graphics.Image;
-import dwt.graphics.ImageData;
-import dwt.graphics.Point;
-import dwt.graphics.Rectangle;
-import dwt.layout.FillLayout;
-import dwt.widgets.Composite;
-import dwt.widgets.Display;
-import dwt.widgets.Shell;
-import dwt.widgets.TabFolder;
-import dwt.widgets.TabItem;
-import dwt.dwthelper.ResourceBundle;
-import dwt.dwthelper.ByteArrayInputStream;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ButtonTab;
-import dwtexamples.controlexample.CanvasTab;
-import dwtexamples.controlexample.ComboTab;
-import dwtexamples.controlexample.CoolBarTab;
-//import dwtexamples.controlexample.DateTimeTab;
-import dwtexamples.controlexample.DialogTab;
-import dwtexamples.controlexample.ExpandBarTab;
-import dwtexamples.controlexample.GroupTab;
-import dwtexamples.controlexample.LabelTab;
-import dwtexamples.controlexample.LinkTab;
-import dwtexamples.controlexample.ListTab;
-import dwtexamples.controlexample.MenuTab;
-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;
-
-
-import tango.core.Exception;
-import tango.text.convert.Format;
-import tango.io.Stdout;
-import Math = tango.math.Math;
-
-
-/*** Linker workaround start ***/
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
-/*** Linker workaround end ***/
-
-version(JIVE){
-    import jive.stacktrace;
-}
-
-version( CONTROL_EXAMPLE_MAIN ){
-    void main(){
-        Stdout.formatln( "The ControlExample: still work left" );
-        Stdout.formatln( "todo: search for //PORTING_LEFT" );
-        Stdout.formatln( "todo: Implement Get/Set API reflection" );
-        Stdout.formatln( "todo: DateTimeTab not implemented" );
-        Stdout.formatln( "todo: ExpandBarTab looks strange" );
-        Stdout.formatln( "todo: ProgressBarTab crash on vertical" );
-        Stdout.formatln( "todo: SliderTab horizontal arrow buttons are too high" );
-        Stdout.formatln( "please report problems" );
-        ControlExample.main( null );
-    }
-}
-
-public class ControlExample {
-    private static ResourceBundle resourceBundle;
-    private static const char[] resourceData = import( "controlexample.properties" );
-
-    private ShellTab shellTab;
-    private TabFolder tabFolder;
-    private Tab [] tabs;
-    Image images[];
-
-    static const int ciClosedFolder = 0, ciOpenFolder = 1, ciTarget = 2, ciBackground = 3, ciParentBackground = 4;
-
-    static const byte[][] imageData = [
-        cast(byte[]) import( "closedFolder.gif" ),
-        cast(byte[]) import( "openFolder.gif" ),
-        cast(byte[]) import( "target.gif" ),
-        cast(byte[]) import( "backgroundImage.png" ),
-        cast(byte[]) import( "parentBackgroundImage.png" )
-    ];
-    static const int[] imageTypes = [
-        DWT.ICON,
-        DWT.ICON,
-        DWT.ICON,
-        DWT.BITMAP,
-        DWT.BITMAP];
-
-    bool startup = true;
-
-    static this(){
-        resourceBundle = ResourceBundle.getBundleFromData( resourceData ); //$NON-NLS-1$
-    }
-
-    /**
-     * Creates an instance of a ControlExample embedded inside
-     * the supplied parent Composite.
-     *
-     * @param parent the container of the example
-     */
-    public this(Composite parent) {
-        initResources();
-        tabFolder = new TabFolder (parent, DWT.NONE);
-        tabs = createTabs();
-        for (int i=0; i<tabs.length; i++) {
-            TabItem item = new TabItem (tabFolder, DWT.NONE);
-            item.setText (tabs [i].getTabText ());
-            item.setControl (tabs [i].createTabFolderPage (tabFolder));
-            item.setData (tabs [i]);
-        }
-        startup = false;
-    }
-
-    /**
-     * Answers the set of example Tabs
-     */
-    Tab[] createTabs() {
-        return [ cast(Tab)
-            new ButtonTab (this),
-            new CanvasTab (this),
-            new ComboTab (this),
-            new CoolBarTab (this),
-            //new DateTimeTab (this),
-            new DialogTab (this),
-            new ExpandBarTab (this),
-            new GroupTab (this),
-            new LabelTab (this),
-            new LinkTab (this),
-            new ListTab (this),
-            new MenuTab (this),
-            new ProgressBarTab (this),
-            new SashTab (this),
-            new ScaleTab (this),
-            shellTab = new ShellTab(this),
-            new SliderTab (this),
-            new SpinnerTab (this),
-            new TabFolderTab (this),
-            new TableTab (this),
-            new TextTab (this),
-            new ToolBarTab (this),
-            new ToolTipTab (this),
-            new TreeTab (this)
-        ];
-    }
-
-    /**
-     * Disposes of all resources associated with a particular
-     * instance of the ControlExample.
-     */
-    public void dispose() {
-        /*
-         * Destroy any shells that may have been created
-         * by the Shells tab.  When a shell is disposed,
-         * all child shells are also disposed.  Therefore
-         * it is necessary to check for disposed shells
-         * in the shells list to avoid disposing a shell
-         * twice.
-         */
-        if (shellTab !is null) shellTab.closeAllShells ();
-        shellTab = null;
-        tabFolder = null;
-        freeResources();
-    }
-
-    /**
-     * Frees the resources
-     */
-    void freeResources() {
-        if (images !is null) {
-            for (int i = 0; i < images.length; ++i) {
-                final Image image = images[i];
-                if (image !is null) image.dispose();
-            }
-            images = null;
-        }
-    }
-
-    /**
-     * Gets a string from the resource bundle.
-     * We don't want to crash because of a missing String.
-     * Returns the key if not found.
-     */
-    static char[] getResourceString(char[] key) {
-        char[] res;
-        try {
-            res = resourceBundle.getString(key);
-        } catch (NoSuchElementException e) {
-            return key;
-        }
-        if( res is null ){
-            return "!" ~ key ~ "!"; //$NON-NLS-1$ //$NON-NLS-2$
-        }
-        return res;
-    }
-
-//     /**
-//      * Gets a string from the resource bundle and binds it
-//      * with the given arguments. If the key is not found,
-//      * return the key.
-//      */
-//     static char[] getResourceString(char[] key, Object[] args) {
-//         char[] res;
-//         try {
-//             res = Format(getResourceString(key), args);
-//         } catch (NoSuchElementException e) {
-//             return key;
-//         }
-//         if( res is null ){
-//             return "!" ~ key ~ "!"; //$NON-NLS-1$ //$NON-NLS-2$
-//         }
-//         return res;
-//     }
-
-    /**
-     * Loads the resources
-     */
-    void initResources() {
-        //final Class clazz = ControlExample.class;
-        if (resourceBundle !is null) {
-            try {
-                if (images is null) {
-                    images = new Image[imageData.length];
-
-                    for (int i = 0; i < imageData.length; ++i) {
-                        InputStream sourceStream = new ByteArrayInputStream( imageData[i] );
-                        ImageData source = new ImageData(sourceStream);
-                        if (imageTypes[i] is DWT.ICON) {
-                            ImageData mask = source.getTransparencyMask();
-                            images[i] = new Image(null, source, mask);
-                        } else {
-                            images[i] = new Image(null, source);
-                        }
-                        try {
-                            sourceStream.close();
-                        } catch (IOException e) {
-                            Stderr.formatln( "Stacktrace: {}", e.toString );
-                        }
-                    }
-                }
-                return;
-            } catch (TracedException t) {
-                Stdout.formatln( "ups {}", t );
-            }
-        }
-        char[] error = (resourceBundle !is null) ?
-            getResourceString("error.CouldNotLoadResources") :
-            "Unable to load resources"; //$NON-NLS-1$
-        freeResources();
-        throw new TracedException(error);
-    }
-
-    /**
-     * Invokes as a standalone program.
-     */
-    public static void main(char[][] args) {
-        Display display = new Display();
-        Shell shell = new Shell(display, DWT.SHELL_TRIM);
-        shell.setLayout(new FillLayout());
-        ControlExample instance = new ControlExample(shell);
-        shell.setText(getResourceString("window.title"));
-        setShellSize(instance, shell);
-        shell.open();
-        while (! shell.isDisposed()) {
-            if (! display.readAndDispatch()) display.sleep();
-        }
-        instance.dispose();
-        display.dispose();
-    }
-
-    /**
-     * Grabs input focus.
-     */
-    public void setFocus() {
-        tabFolder.setFocus();
-    }
-
-    /**
-     * Sets the size of the shell to it's "packed" size,
-     * unless that makes it larger than the monitor it is being displayed on,
-     * in which case just set the shell size to be slightly smaller than the monitor.
-     */
-    static void setShellSize(ControlExample instance, Shell shell) {
-        Point size = shell.computeSize(DWT.DEFAULT, DWT.DEFAULT);
-        Rectangle monitorArea = shell.getMonitor().getClientArea();
-        /* Workaround: if the tab folder is wider than the screen,
-         * carbon clips instead of somehow scrolling the tab items.
-         * We try to recover some width by using shorter tab names. */
-        if (size.x > monitorArea.width && DWT.getPlatform()=="carbon") {
-            TabItem [] tabItems = instance.tabFolder.getItems();
-            for (int i=0; i<tabItems.length; i++) {
-                tabItems[i].setText (instance.tabs [i].getShortTabText ());
-            }
-            size = shell.computeSize(DWT.DEFAULT, DWT.DEFAULT);
-        }
-        shell.setSize(Math.min(size.x, monitorArea.width), Math.min(size.y, monitorArea.height));
-    }
-}
-
--- a/dwtexamples/controlexample/CoolBarTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,515 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.CoolBarTab;
-
-
-
-import dwt.DWT;
-import dwt.events.MenuAdapter;
-import dwt.events.MenuEvent;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.graphics.Image;
-import dwt.graphics.Point;
-import dwt.graphics.Rectangle;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Control;
-import dwt.widgets.CoolBar;
-import dwt.widgets.CoolItem;
-import dwt.widgets.Event;
-import dwt.widgets.Group;
-import dwt.widgets.Item;
-import dwt.widgets.Listener;
-import dwt.widgets.Menu;
-import dwt.widgets.MenuItem;
-import dwt.widgets.Text;
-import dwt.widgets.ToolBar;
-import dwt.widgets.ToolItem;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-import tango.util.Convert;
-
-class CoolBarTab : Tab {
-    /* Example widgets and group that contains them */
-    CoolBar coolBar;
-    CoolItem pushItem, dropDownItem, radioItem, checkItem, textItem;
-    Group coolBarGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button horizontalButton, verticalButton;
-    Button dropDownButton, flatButton;
-
-    /* Other widgets added to the "Other" group */
-    Button lockedButton;
-
-    Point[] sizes;
-    int[] wrapIndices;
-    int[] order;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        lockedButton = new Button (otherGroup, DWT.CHECK);
-        lockedButton.setText (ControlExample.getResourceString("Locked"));
-
-        /* Add the listeners */
-        lockedButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetLocked ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-        coolBarGroup = new Group (exampleGroup, DWT.NONE);
-        coolBarGroup.setLayout (new GridLayout ());
-        coolBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        coolBarGroup.setText ("CoolBar");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-        int style = getDefaultStyle(), itemStyle = 0;
-
-        /* Compute the widget, item, and item toolBar styles */
-        int toolBarStyle = DWT.FLAT;
-        bool vertical = false;
-        if (horizontalButton.getSelection ()) {
-            style |= DWT.HORIZONTAL;
-            toolBarStyle |= DWT.HORIZONTAL;
-        }
-        if (verticalButton.getSelection ()) {
-            style |= DWT.VERTICAL;
-            toolBarStyle |= DWT.VERTICAL;
-            vertical = true;
-        }
-        if (borderButton.getSelection()) style |= DWT.BORDER;
-        if (flatButton.getSelection()) style |= DWT.FLAT;
-        if (dropDownButton.getSelection()) itemStyle |= DWT.DROP_DOWN;
-
-        /*
-        * Create the example widgets.
-        */
-        coolBar = new CoolBar (coolBarGroup, style);
-
-        /* Create the push button toolbar cool item */
-        ToolBar toolBar = new ToolBar (coolBar, toolBarStyle);
-        ToolItem item = new ToolItem (toolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.PUSH");
-        item = new ToolItem (toolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setToolTipText ("DWT.PUSH");
-        item = new ToolItem (toolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setToolTipText ("DWT.PUSH");
-        item = new ToolItem (toolBar, DWT.SEPARATOR);
-        item = new ToolItem (toolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.PUSH");
-        item = new ToolItem (toolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setToolTipText ("DWT.PUSH");
-        pushItem = new CoolItem (coolBar, itemStyle);
-        pushItem.setControl (toolBar);
-        pushItem.addSelectionListener (new CoolItemSelectionListener());
-
-        /* Create the dropdown toolbar cool item */
-        toolBar = new ToolBar (coolBar, toolBarStyle);
-        item = new ToolItem (toolBar, DWT.DROP_DOWN);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setToolTipText ("DWT.DROP_DOWN");
-        item.addSelectionListener (new DropDownSelectionListener());
-        item = new ToolItem (toolBar, DWT.DROP_DOWN);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.DROP_DOWN");
-        item.addSelectionListener (new DropDownSelectionListener());
-        dropDownItem = new CoolItem (coolBar, itemStyle);
-        dropDownItem.setControl (toolBar);
-        dropDownItem.addSelectionListener (new CoolItemSelectionListener());
-
-        /* Create the radio button toolbar cool item */
-        toolBar = new ToolBar (coolBar, toolBarStyle);
-        item = new ToolItem (toolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        item = new ToolItem (toolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        item = new ToolItem (toolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        radioItem = new CoolItem (coolBar, itemStyle);
-        radioItem.setControl (toolBar);
-        radioItem.addSelectionListener (new CoolItemSelectionListener());
-
-        /* Create the check button toolbar cool item */
-        toolBar = new ToolBar (coolBar, toolBarStyle);
-        item = new ToolItem (toolBar, DWT.CHECK);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.CHECK");
-        item = new ToolItem (toolBar, DWT.CHECK);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setToolTipText ("DWT.CHECK");
-        item = new ToolItem (toolBar, DWT.CHECK);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setToolTipText ("DWT.CHECK");
-        item = new ToolItem (toolBar, DWT.CHECK);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setToolTipText ("DWT.CHECK");
-        checkItem = new CoolItem (coolBar, itemStyle);
-        checkItem.setControl (toolBar);
-        checkItem.addSelectionListener (new CoolItemSelectionListener());
-
-        /* Create the text cool item */
-        if (!vertical) {
-            Text text = new Text (coolBar, DWT.BORDER | DWT.SINGLE);
-            textItem = new CoolItem (coolBar, itemStyle);
-            textItem.setControl (text);
-            textItem.addSelectionListener (new CoolItemSelectionListener());
-            Point textSize = text.computeSize(DWT.DEFAULT, DWT.DEFAULT);
-            textSize = textItem.computeSize(textSize.x, textSize.y);
-            textItem.setMinimumSize(textSize);
-            textItem.setPreferredSize(textSize);
-            textItem.setSize(textSize);
-        }
-
-        /* Set the sizes after adding all cool items */
-        CoolItem[] coolItems = coolBar.getItems();
-        for (int i = 0; i < coolItems.length; i++) {
-            CoolItem coolItem = coolItems[i];
-            Control control = coolItem.getControl();
-            Point size = control.computeSize(DWT.DEFAULT, DWT.DEFAULT);
-            Point coolSize = coolItem.computeSize(size.x, size.y);
-            if ( auto bar = cast(ToolBar)control ) {
-                if (bar.getItemCount() > 0) {
-                    if (vertical) {
-                        size.y = bar.getItem(0).getBounds().height;
-                    } else {
-                        size.x = bar.getItem(0).getWidth();
-                    }
-                }
-            }
-            coolItem.setMinimumSize(size);
-            coolItem.setPreferredSize(coolSize);
-            coolItem.setSize(coolSize);
-        }
-
-        /* If we have saved state, restore it */
-        if (order !is null && order.length is coolBar.getItemCount()) {
-            coolBar.setItemLayout(order, wrapIndices, sizes);
-        } else {
-            coolBar.setWrapIndices([1, 3]);
-        }
-
-        /* Add a listener to resize the group box to match the coolbar */
-        coolBar.addListener(DWT.Resize, new class() Listener {
-            public void handleEvent(Event event) {
-                exampleGroup.layout();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        horizontalButton = new Button (styleGroup, DWT.RADIO);
-        horizontalButton.setText ("DWT.HORIZONTAL");
-        verticalButton = new Button (styleGroup, DWT.RADIO);
-        verticalButton.setText ("DWT.VERTICAL");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-        flatButton = new Button (styleGroup, DWT.CHECK);
-        flatButton.setText ("DWT.FLAT");
-        Group itemGroup = new Group(styleGroup, DWT.NONE);
-        itemGroup.setLayout (new GridLayout ());
-        itemGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        itemGroup.setText(ControlExample.getResourceString("Item_Styles"));
-        dropDownButton = new Button (itemGroup, DWT.CHECK);
-        dropDownButton.setText ("DWT.DROP_DOWN");
-    }
-
-    /**
-     * Disposes the "Example" widgets.
-     */
-    void disposeExampleWidgets () {
-        /* store the state of the toolbar if applicable */
-        if (coolBar !is null) {
-            sizes = coolBar.getItemSizes();
-            wrapIndices = coolBar.getWrapIndices();
-            order = coolBar.getItemOrder();
-        }
-        super.disposeExampleWidgets();
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        return coolBar.getItems();
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) coolBar];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["ToolTipText"];
-    }
-
-    /**
-     * Gets the short text for the tab folder item.
-     */
-    public char[] getShortTabText() {
-        return "CB";
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "CoolBar";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        horizontalButton.setSelection ((coolBar.getStyle () & DWT.HORIZONTAL) !is 0);
-        verticalButton.setSelection ((coolBar.getStyle () & DWT.VERTICAL) !is 0);
-        borderButton.setSelection ((coolBar.getStyle () & DWT.BORDER) !is 0);
-        flatButton.setSelection ((coolBar.getStyle () & DWT.FLAT) !is 0);
-        dropDownButton.setSelection ((coolBar.getItem(0).getStyle () & DWT.DROP_DOWN) !is 0);
-        lockedButton.setSelection(coolBar.getLocked());
-        if (!instance.startup) setWidgetLocked ();
-    }
-
-    /**
-     * Sets the header visible state of the "Example" widgets.
-     */
-    void setWidgetLocked () {
-        coolBar.setLocked (lockedButton.getSelection ());
-    }
-
-    /**
-     * Listens to widgetSelected() events on DWT.DROP_DOWN type ToolItems
-     * and opens/closes a menu when appropriate.
-     */
-    class DropDownSelectionListener : SelectionAdapter {
-        private Menu menu = null;
-        private bool visible = false;
-
-        public void widgetSelected(SelectionEvent event) {
-            // Create the menu if it has not already been created
-            if (menu is null) {
-                // Lazy create the menu.
-                menu = new Menu(shell);
-                menu.addMenuListener(new class() MenuAdapter {
-                    public void menuHidden(MenuEvent e) {
-                        visible = false;
-                    }
-                });
-                for (int i = 0; i < 9; ++i) {
-                    final char[] text = ControlExample.getResourceString("DropDownData_" ~ to!(char[])(i));
-                    if (text.length !is 0) {
-                        MenuItem menuItem = new MenuItem(menu, DWT.NONE);
-                        menuItem.setText(text);
-                        /*
-                         * Add a menu selection listener so that the menu is hidden
-                         * when the user selects an item from the drop down menu.
-                         */
-                        menuItem.addSelectionListener(new class() SelectionAdapter {
-                            public void widgetSelected(SelectionEvent e) {
-                                setMenuVisible(false);
-                            }
-                        });
-                    } else {
-                        new MenuItem(menu, DWT.SEPARATOR);
-                    }
-                }
-            }
-
-            /**
-             * A selection event will be fired when a drop down tool
-             * item is selected in the main area and in the drop
-             * down arrow.  Examine the event detail to determine
-             * where the widget was selected.
-             */
-            if (event.detail is DWT.ARROW) {
-                /*
-                 * The drop down arrow was selected.
-                 */
-                if (visible) {
-                    // Hide the menu to give the Arrow the appearance of being a toggle button.
-                    setMenuVisible(false);
-                } else {
-                    // Position the menu below and vertically aligned with the the drop down tool button.
-                    ToolItem toolItem = cast(ToolItem) event.widget;
-                    ToolBar  toolBar = toolItem.getParent();
-
-                    Rectangle toolItemBounds = toolItem.getBounds();
-                    Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y));
-                    menu.setLocation(point.x, point.y + toolItemBounds.height);
-                    setMenuVisible(true);
-                }
-            } else {
-                /*
-                 * Main area of drop down tool item selected.
-                 * An application would invoke the code to perform the action for the tool item.
-                 */
-            }
-        }
-        private void setMenuVisible(bool visible) {
-            menu.setVisible(visible);
-            this.visible = visible;
-        }
-    }
-
-    /**
-     * Listens to widgetSelected() events on DWT.DROP_DOWN type CoolItems
-     * and opens/closes a menu when appropriate.
-     */
-    class CoolItemSelectionListener : SelectionAdapter {
-        private Menu menu = null;
-
-        public void widgetSelected(SelectionEvent event) {
-            /**
-             * A selection event will be fired when the cool item
-             * is selected by its gripper or if the drop down arrow
-             * (or 'chevron') is selected. Examine the event detail
-             * to determine where the widget was selected.
-             */
-            if (event.detail is DWT.ARROW) {
-                /* If the popup menu is already up (i.e. user pressed arrow twice),
-                 * then dispose it.
-                 */
-                if (menu !is null) {
-                    menu.dispose();
-                    menu = null;
-                    return;
-                }
-
-                /* Get the cool item and convert its bounds to display coordinates. */
-                CoolItem coolItem = cast(CoolItem) event.widget;
-                Rectangle itemBounds = coolItem.getBounds ();
-                itemBounds.width = event.x - itemBounds.x;
-                Point pt = coolBar.toDisplay(new Point (itemBounds.x, itemBounds.y));
-                itemBounds.x = pt.x;
-                itemBounds.y = pt.y;
-
-                /* Get the toolbar from the cool item. */
-                ToolBar toolBar = cast(ToolBar) coolItem.getControl ();
-                ToolItem[] tools = toolBar.getItems ();
-                int toolCount = tools.length;
-
-                /* Convert the bounds of each tool item to display coordinates,
-                 * and determine which ones are past the bounds of the cool item.
-                 */
-                int i = 0;
-                while (i < toolCount) {
-                    Rectangle toolBounds = tools[i].getBounds ();
-                    pt = toolBar.toDisplay(new Point(toolBounds.x, toolBounds.y));
-                    toolBounds.x = pt.x;
-                    toolBounds.y = pt.y;
-                    Rectangle intersection = itemBounds.intersection (toolBounds);
-                    if (intersection!=toolBounds) break;
-                    i++;
-                }
-
-                /* Create a pop-up menu with items for each of the hidden buttons. */
-                menu = new Menu (coolBar);
-                for (int j = i; j < toolCount; j++) {
-                    ToolItem tool = tools[j];
-                    Image image = tool.getImage();
-                    if (image is null) {
-                        new MenuItem (menu, DWT.SEPARATOR);
-                    } else {
-                        if ((tool.getStyle() & DWT.DROP_DOWN) !is 0) {
-                            MenuItem menuItem = new MenuItem (menu, DWT.CASCADE);
-                            menuItem.setImage(image);
-                            char[] text = tool.getToolTipText();
-                            if (text !is null) menuItem.setText(text);
-                            Menu m = new Menu(menu);
-                            menuItem.setMenu(m);
-                            for (int k = 0; k < 9; ++k) {
-                                text = ControlExample.getResourceString("DropDownData_" ~ to!(char[])(k));
-                                if (text.length !is 0) {
-                                    MenuItem mi = new MenuItem(m, DWT.NONE);
-                                    mi.setText(text);
-                                    /* Application code to perform the action for the submenu item would go here. */
-                                } else {
-                                    new MenuItem(m, DWT.SEPARATOR);
-                                }
-                            }
-                        } else {
-                            MenuItem menuItem = new MenuItem (menu, DWT.NONE);
-                            menuItem.setImage(image);
-                            char[] text = tool.getToolTipText();
-                            if (text !is null) menuItem.setText(text);
-                        }
-                        /* Application code to perform the action for the menu item would go here. */
-                    }
-                }
-
-                /* Display the pop-up menu at the lower left corner of the arrow button.
-                 * Dispose the menu when the user is done with it.
-                 */
-                pt = coolBar.toDisplay(new Point(event.x, event.y));
-                menu.setLocation (pt.x, pt.y);
-                menu.setVisible (true);
-                while (menu !is null && !menu.isDisposed() && menu.isVisible ()) {
-                    if (!display.readAndDispatch ()) display.sleep ();
-                }
-                if (menu !is null) {
-                    menu.dispose ();
-                    menu = null;
-                }
-            }
-        }
-    }
-}
--- a/dwtexamples/controlexample/CustomControlExample.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.CustomControlExample;
-
-
-import dwt.layout.FillLayout;
-import dwt.widgets.Composite;
-import dwt.widgets.Display;
-import dwt.widgets.Shell;
-
-import dwtexamples.controlexample.ControlExample;
-import dwtexamples.controlexample.CComboTab;
-import dwtexamples.controlexample.CLabelTab;
-import dwtexamples.controlexample.CTabFolderTab;
-import dwtexamples.controlexample.SashFormTab;
-import dwtexamples.controlexample.StyledTextTab;
-
-import dwtexamples.controlexample.Tab;
-import tango.io.Stdout;
-
-version( CUSTOM_CONTROL_EXAMPLE_MAIN ){
-    void main(){
-        Stdout.formatln( "The CustomControlExample: still work left" );
-        Stdout.formatln( "warning in Control:setBounds() line=695 gtk_widget_size_allocate()" );
-        Stdout.formatln( "Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -5 and height 15" );
-        Stdout.formatln( "for the CTabFolder widget. Params are OK. Further bugtracking needed." );
-        Stdout.formatln( "please report problems" );
-        CustomControlExample.main( null );
-    }
-}
-
-public class CustomControlExample : ControlExample {
-
-    /**
-     * Creates an instance of a CustomControlExample embedded
-     * inside the supplied parent Composite.
-     *
-     * @param parent the container of the example
-     */
-    public this(Composite parent) {
-        super (parent);
-    }
-
-    /**
-     * Answers the set of example Tabs
-     */
-    Tab[] createTabs() {
-        return [ cast(Tab)
-            new CComboTab (this),
-            new CLabelTab (this),
-            new CTabFolderTab (this),
-            new SashFormTab (this),
-            new StyledTextTab (this)
-        ];
-    }
-
-    /**
-     * Invokes as a standalone program.
-     */
-    public static void main(char[][] args) {
-        Display display = new Display();
-        Shell shell = new Shell(display);
-        shell.setLayout(new FillLayout());
-        CustomControlExample instance = new CustomControlExample(shell);
-        shell.setText(getResourceString("custom.window.title"));
-        setShellSize(instance, shell);
-        shell.open();
-        while (! shell.isDisposed()) {
-            if (! display.readAndDispatch()) display.sleep();
-        }
-        instance.dispose();
-    }
-}
--- a/dwtexamples/controlexample/DateTimeTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.DateTimeTab;
-
-
-
-import dwt.DWT;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.DateTime;
-import dwt.widgets.Group;
-import dwt.widgets.Widget;
-
-class DateTimeTab : Tab {
-    /* Example widgets and groups that contain them */
-    DateTime dateTime1;
-    Group dateTimeGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button dateButton, timeButton, calendarButton, shortButton, mediumButton, longButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the list */
-        dateTimeGroup = new Group (exampleGroup, DWT.NONE);
-        dateTimeGroup.setLayout (new GridLayout ());
-        dateTimeGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        dateTimeGroup.setText ("DateTime");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (dateButton.getSelection ()) style |= DWT.DATE;
-        if (timeButton.getSelection ()) style |= DWT.TIME;
-        if (calendarButton.getSelection ()) style |= DWT.CALENDAR;
-        if (shortButton.getSelection ()) style |= DWT.SHORT;
-        if (mediumButton.getSelection ()) style |= DWT.MEDIUM;
-        if (longButton.getSelection ()) style |= DWT.LONG;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        dateTime1 = new DateTime (dateTimeGroup, style);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        dateButton = new Button(styleGroup, DWT.RADIO);
-        dateButton.setText("DWT.DATE");
-        timeButton = new Button(styleGroup, DWT.RADIO);
-        timeButton.setText("DWT.TIME");
-        calendarButton = new Button(styleGroup, DWT.RADIO);
-        calendarButton.setText("DWT.CALENDAR");
-        Group formatGroup = new Group(styleGroup, DWT.NONE);
-        formatGroup.setLayout(new GridLayout());
-        shortButton = new Button(formatGroup, DWT.RADIO);
-        shortButton.setText("DWT.SHORT");
-        mediumButton = new Button(formatGroup, DWT.RADIO);
-        mediumButton.setText("DWT.MEDIUM");
-        longButton = new Button(formatGroup, DWT.RADIO);
-        longButton.setText("DWT.LONG");
-        borderButton = new Button(styleGroup, DWT.CHECK);
-        borderButton.setText("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return new Widget [] {dateTime1};
-    }
-
-    /**
-     * 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[] {"Day", "Hours", "Minutes", "Month", "Seconds", "Year"};
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    String getTabText () {
-        return "DateTime";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        dateButton.setSelection ((dateTime1.getStyle () & DWT.DATE) !is 0);
-        timeButton.setSelection ((dateTime1.getStyle () & DWT.TIME) !is 0);
-        calendarButton.setSelection ((dateTime1.getStyle () & DWT.CALENDAR) !is 0);
-        shortButton.setSelection ((dateTime1.getStyle () & DWT.SHORT) !is 0);
-        mediumButton.setSelection ((dateTime1.getStyle () & DWT.MEDIUM) !is 0);
-        longButton.setSelection ((dateTime1.getStyle () & DWT.LONG) !is 0);
-        borderButton.setSelection ((dateTime1.getStyle () & DWT.BORDER) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/DialogTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,512 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.DialogTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.graphics.FontData;
-import dwt.graphics.RGB;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.printing.PrintDialog;
-import dwt.printing.PrinterData;
-import dwt.widgets.Button;
-import dwt.widgets.ColorDialog;
-import dwt.widgets.Combo;
-import dwt.widgets.DirectoryDialog;
-import dwt.widgets.FileDialog;
-import dwt.widgets.FontDialog;
-import dwt.widgets.Group;
-import dwt.widgets.MessageBox;
-import dwt.widgets.Text;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-import tango.text.convert.Format;
-
-class DialogTab : Tab {
-    /* Example widgets and groups that contain them */
-    Group dialogStyleGroup, resultGroup;
-    Text textWidget;
-
-    /* Style widgets added to the "Style" group */
-    Combo dialogCombo;
-    Button createButton;
-    Button okButton, cancelButton;
-    Button yesButton, noButton;
-    Button retryButton;
-    Button abortButton, ignoreButton;
-    Button iconErrorButton, iconInformationButton, iconQuestionButton;
-    Button iconWarningButton, iconWorkingButton, noIconButton;
-    Button primaryModalButton, applicationModalButton, systemModalButton;
-    Button saveButton, openButton, multiButton;
-
-    static const char[] [] FilterExtensions   = ["*.txt", "*.bat", "*.doc", "*"];
-    static char[] [] FilterNames;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-        if( FilterNames.length is 0 ){
-            FilterNames = [ ControlExample.getResourceString("FilterName_0"),
-                            ControlExample.getResourceString("FilterName_1"),
-                            ControlExample.getResourceString("FilterName_2"),
-                            ControlExample.getResourceString("FilterName_3")];
-        }
-    }
-
-    /**
-     * Handle a button style selection event.
-     *
-     * @param event the selection event
-     */
-    void buttonStyleSelected(SelectionEvent event) {
-        /*
-         * Only certain combinations of button styles are
-         * supported for various dialogs.  Make sure the
-         * control widget reflects only valid combinations.
-         */
-        bool ok = okButton.getSelection ();
-        bool cancel = cancelButton.getSelection ();
-        bool yes = yesButton.getSelection ();
-        bool no = noButton.getSelection ();
-        bool abort = abortButton.getSelection ();
-        bool retry = retryButton.getSelection ();
-        bool ignore = ignoreButton.getSelection ();
-
-        okButton.setEnabled (!(yes || no || retry || abort || ignore));
-        cancelButton.setEnabled (!(abort || ignore || (yes !is no)));
-        yesButton.setEnabled (!(ok || retry || abort || ignore || (cancel && !yes && !no)));
-        noButton.setEnabled (!(ok || retry || abort || ignore || (cancel && !yes && !no)));
-        retryButton.setEnabled (!(ok || yes || no));
-        abortButton.setEnabled (!(ok || cancel || yes || no));
-        ignoreButton.setEnabled (!(ok || cancel || yes || no));
-
-        createButton.setEnabled (
-                !(ok || cancel || yes || no || retry || abort || ignore) ||
-                ok ||
-                (ok && cancel) ||
-                (yes && no) ||
-                (yes && no && cancel) ||
-                (retry && cancel) ||
-                (abort && retry && ignore));
-
-
-    }
-
-    /**
-     * Handle the create button selection event.
-     *
-     * @param event org.eclipse.swt.events.SelectionEvent
-     */
-    void createButtonSelected(SelectionEvent event) {
-
-        /* Compute the appropriate dialog style */
-        int style = getDefaultStyle();
-        if (okButton.getEnabled () && okButton.getSelection ()) style |= DWT.OK;
-        if (cancelButton.getEnabled () && cancelButton.getSelection ()) style |= DWT.CANCEL;
-        if (yesButton.getEnabled () && yesButton.getSelection ()) style |= DWT.YES;
-        if (noButton.getEnabled () && noButton.getSelection ()) style |= DWT.NO;
-        if (retryButton.getEnabled () && retryButton.getSelection ()) style |= DWT.RETRY;
-        if (abortButton.getEnabled () && abortButton.getSelection ()) style |= DWT.ABORT;
-        if (ignoreButton.getEnabled () && ignoreButton.getSelection ()) style |= DWT.IGNORE;
-        if (iconErrorButton.getEnabled () && iconErrorButton.getSelection ()) style |= DWT.ICON_ERROR;
-        if (iconInformationButton.getEnabled () && iconInformationButton.getSelection ()) style |= DWT.ICON_INFORMATION;
-        if (iconQuestionButton.getEnabled () && iconQuestionButton.getSelection ()) style |= DWT.ICON_QUESTION;
-        if (iconWarningButton.getEnabled () && iconWarningButton.getSelection ()) style |= DWT.ICON_WARNING;
-        if (iconWorkingButton.getEnabled () && iconWorkingButton.getSelection ()) style |= DWT.ICON_WORKING;
-        if (primaryModalButton.getEnabled () && primaryModalButton.getSelection ()) style |= DWT.PRIMARY_MODAL;
-        if (applicationModalButton.getEnabled () && applicationModalButton.getSelection ()) style |= DWT.APPLICATION_MODAL;
-        if (systemModalButton.getEnabled () && systemModalButton.getSelection ()) style |= DWT.SYSTEM_MODAL;
-        if (saveButton.getEnabled () && saveButton.getSelection ()) style |= DWT.SAVE;
-        if (openButton.getEnabled () && openButton.getSelection ()) style |= DWT.OPEN;
-        if (multiButton.getEnabled () && multiButton.getSelection ()) style |= DWT.MULTI;
-
-        /* Open the appropriate dialog type */
-        char[] name = dialogCombo.getText ();
-
-        if (name == ControlExample.getResourceString("ColorDialog")) {
-            ColorDialog dialog = new ColorDialog (shell ,style);
-            dialog.setRGB (new RGB (100, 100, 100));
-            dialog.setText (ControlExample.getResourceString("Title"));
-            RGB result = dialog.open ();
-            textWidget.append (Format( ControlExample.getResourceString("ColorDialog")~"{}", Text.DELIMITER));
-            textWidget.append (Format( ControlExample.getResourceString("Result")~"{}{}", result, Text.DELIMITER, Text.DELIMITER));
-            return;
-        }
-
-        if (name == ControlExample.getResourceString("DirectoryDialog")) {
-            DirectoryDialog dialog = new DirectoryDialog (shell, style);
-            dialog.setMessage (ControlExample.getResourceString("Example_string"));
-            dialog.setText (ControlExample.getResourceString("Title"));
-            char[] result = dialog.open ();
-            textWidget.append (ControlExample.getResourceString("DirectoryDialog") ~ Text.DELIMITER);
-            textWidget.append (Format( ControlExample.getResourceString("Result"), result ) ~ Text.DELIMITER ~ Text.DELIMITER);
-            return;
-        }
-
-        if (name== ControlExample.getResourceString("FileDialog")) {
-            FileDialog dialog = new FileDialog (shell, style);
-            dialog.setFileName (ControlExample.getResourceString("readme_txt"));
-            dialog.setFilterNames (FilterNames);
-            dialog.setFilterExtensions (FilterExtensions);
-            dialog.setText (ControlExample.getResourceString("Title"));
-            char[] result = dialog.open();
-            textWidget.append (ControlExample.getResourceString("FileDialog") ~ Text.DELIMITER);
-            textWidget.append (Format( ControlExample.getResourceString("Result"), result ) ~ Text.DELIMITER);
-            if ((dialog.getStyle () & DWT.MULTI) !is 0) {
-                char[] [] files = dialog.getFileNames ();
-                for (int i=0; i<files.length; i++) {
-                    textWidget.append ("\t" ~ files [i] ~ Text.DELIMITER);
-                }
-            }
-            textWidget.append (Text.DELIMITER);
-            return;
-        }
-
-        if (name == ControlExample.getResourceString("FontDialog")) {
-            FontDialog dialog = new FontDialog (shell, style);
-            dialog.setText (ControlExample.getResourceString("Title"));
-            FontData result = dialog.open ();
-            textWidget.append (ControlExample.getResourceString("FontDialog") ~ Text.DELIMITER);
-            textWidget.append (Format( ControlExample.getResourceString("Result"), result ) ~ Text.DELIMITER ~ Text.DELIMITER);
-            return;
-        }
-
-        if (name == ControlExample.getResourceString("PrintDialog")) {
-            PrintDialog dialog = new PrintDialog (shell, style);
-            dialog.setText(ControlExample.getResourceString("Title"));
-            PrinterData result = dialog.open ();
-            textWidget.append (ControlExample.getResourceString("PrintDialog") ~ Text.DELIMITER);
-            textWidget.append (Format( ControlExample.getResourceString("Result"), result ) ~ Text.DELIMITER ~ Text.DELIMITER);
-            return;
-        }
-
-        if (name == ControlExample.getResourceString("MessageBox")) {
-            MessageBox dialog = new MessageBox (shell, style);
-            dialog.setMessage (ControlExample.getResourceString("Example_string"));
-            dialog.setText (ControlExample.getResourceString("Title"));
-            int result = dialog.open ();
-            textWidget.append (ControlExample.getResourceString("MessageBox") ~ Text.DELIMITER);
-            /*
-             * The resulting integer depends on the original
-             * dialog style.  Decode the result and display it.
-             */
-            switch (result) {
-                case DWT.OK:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.OK"));
-                    break;
-                case DWT.YES:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.YES"));
-                    break;
-                case DWT.NO:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.NO"));
-                    break;
-                case DWT.CANCEL:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.CANCEL"));
-                    break;
-                case DWT.ABORT:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.ABORT"));
-                    break;
-                case DWT.RETRY:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.RETRY"));
-                    break;
-                case DWT.IGNORE:
-                    textWidget.append (Format( ControlExample.getResourceString("Result"), "DWT.IGNORE"));
-                    break;
-                default:
-                    textWidget.append(Format( ControlExample.getResourceString("Result"), result));
-                    break;
-            }
-            textWidget.append (Text.DELIMITER ~ Text.DELIMITER);
-        }
-    }
-
-    /**
-     * Creates the "Control" group.
-     */
-    void createControlGroup () {
-        /*
-         * Create the "Control" group.  This is the group on the
-         * right half of each example tab.  It consists of the
-         * style group, the display group and the size group.
-         */
-        controlGroup = new Group (tabFolderPage, DWT.NONE);
-        GridLayout gridLayout= new GridLayout ();
-        controlGroup.setLayout(gridLayout);
-        gridLayout.numColumns = 2;
-        gridLayout.makeColumnsEqualWidth = true;
-        controlGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        controlGroup.setText (ControlExample.getResourceString("Parameters"));
-
-        /*
-         * Create a group to hold the dialog style combo box and
-         * create dialog button.
-         */
-        dialogStyleGroup = new Group (controlGroup, DWT.NONE);
-        dialogStyleGroup.setLayout (new GridLayout ());
-        GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_CENTER);
-        gridData.horizontalSpan = 2;
-        dialogStyleGroup.setLayoutData (gridData);
-        dialogStyleGroup.setText (ControlExample.getResourceString("Dialog_Type"));
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-
-        /* Create the combo */
-        char[] [] strings = [
-            ControlExample.getResourceString("ColorDialog"),
-            ControlExample.getResourceString("DirectoryDialog"),
-            ControlExample.getResourceString("FileDialog"),
-            ControlExample.getResourceString("FontDialog"),
-            ControlExample.getResourceString("PrintDialog"),
-            ControlExample.getResourceString("MessageBox"),
-        ];
-        dialogCombo = new Combo (dialogStyleGroup, DWT.READ_ONLY);
-        dialogCombo.setItems (strings);
-        dialogCombo.setText (strings [0]);
-        dialogCombo.setVisibleItemCount(strings.length);
-
-        /* Create the create dialog button */
-        createButton = new Button(dialogStyleGroup, DWT.NONE);
-        createButton.setText (ControlExample.getResourceString("Create_Dialog"));
-        createButton.setLayoutData (new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
-
-        /* Create a group for the various dialog button style controls */
-        Group buttonStyleGroup = new Group (controlGroup, DWT.NONE);
-        buttonStyleGroup.setLayout (new GridLayout ());
-        buttonStyleGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        buttonStyleGroup.setText (ControlExample.getResourceString("Button_Styles"));
-
-        /* Create the button style buttons */
-        okButton = new Button (buttonStyleGroup, DWT.CHECK);
-        okButton.setText ("DWT.OK");
-        cancelButton = new Button (buttonStyleGroup, DWT.CHECK);
-        cancelButton.setText ("DWT.CANCEL");
-        yesButton = new Button (buttonStyleGroup, DWT.CHECK);
-        yesButton.setText ("DWT.YES");
-        noButton = new Button (buttonStyleGroup, DWT.CHECK);
-        noButton.setText ("DWT.NO");
-        retryButton = new Button (buttonStyleGroup, DWT.CHECK);
-        retryButton.setText ("DWT.RETRY");
-        abortButton = new Button (buttonStyleGroup, DWT.CHECK);
-        abortButton.setText ("DWT.ABORT");
-        ignoreButton = new Button (buttonStyleGroup, DWT.CHECK);
-        ignoreButton.setText ("DWT.IGNORE");
-
-        /* Create a group for the icon style controls */
-        Group iconStyleGroup = new Group (controlGroup, DWT.NONE);
-        iconStyleGroup.setLayout (new GridLayout ());
-        iconStyleGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        iconStyleGroup.setText (ControlExample.getResourceString("Icon_Styles"));
-
-        /* Create the icon style buttons */
-        iconErrorButton = new Button (iconStyleGroup, DWT.RADIO);
-        iconErrorButton.setText ("DWT.ICON_ERROR");
-        iconInformationButton = new Button (iconStyleGroup, DWT.RADIO);
-        iconInformationButton.setText ("DWT.ICON_INFORMATION");
-        iconQuestionButton = new Button (iconStyleGroup, DWT.RADIO);
-        iconQuestionButton.setText ("DWT.ICON_QUESTION");
-        iconWarningButton = new Button (iconStyleGroup, DWT.RADIO);
-        iconWarningButton.setText ("DWT.ICON_WARNING");
-        iconWorkingButton = new Button (iconStyleGroup, DWT.RADIO);
-        iconWorkingButton.setText ("DWT.ICON_WORKING");
-        noIconButton = new Button (iconStyleGroup, DWT.RADIO);
-        noIconButton.setText (ControlExample.getResourceString("No_Icon"));
-
-        /* Create a group for the modal style controls */
-        Group modalStyleGroup = new Group (controlGroup, DWT.NONE);
-        modalStyleGroup.setLayout (new GridLayout ());
-        modalStyleGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        modalStyleGroup.setText (ControlExample.getResourceString("Modal_Styles"));
-
-        /* Create the modal style buttons */
-        primaryModalButton = new Button (modalStyleGroup, DWT.RADIO);
-        primaryModalButton.setText ("DWT.PRIMARY_MODAL");
-        applicationModalButton = new Button (modalStyleGroup, DWT.RADIO);
-        applicationModalButton.setText ("DWT.APPLICATION_MODAL");
-        systemModalButton = new Button (modalStyleGroup, DWT.RADIO);
-        systemModalButton.setText ("DWT.SYSTEM_MODAL");
-
-        /* Create a group for the file dialog style controls */
-        Group fileDialogStyleGroup = new Group (controlGroup, DWT.NONE);
-        fileDialogStyleGroup.setLayout (new GridLayout ());
-        fileDialogStyleGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        fileDialogStyleGroup.setText (ControlExample.getResourceString("File_Dialog_Styles"));
-
-        /* Create the file dialog style buttons */
-        openButton = new Button(fileDialogStyleGroup, DWT.RADIO);
-        openButton.setText("DWT.OPEN");
-        saveButton = new Button (fileDialogStyleGroup, DWT.RADIO);
-        saveButton.setText ("DWT.SAVE");
-        multiButton = new Button(fileDialogStyleGroup, DWT.CHECK);
-        multiButton.setText("DWT.MULTI");
-
-        /* Create the orientation group */
-        if (RTL_SUPPORT_ENABLE) {
-            createOrientationGroup();
-        }
-
-        /* Add the listeners */
-        dialogCombo.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                dialogSelected (event);
-            }
-        });
-        createButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                createButtonSelected (event);
-            }
-        });
-        SelectionListener buttonStyleListener = new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                buttonStyleSelected (event);
-            }
-        };
-        okButton.addSelectionListener (buttonStyleListener);
-        cancelButton.addSelectionListener (buttonStyleListener);
-        yesButton.addSelectionListener (buttonStyleListener);
-        noButton.addSelectionListener (buttonStyleListener);
-        retryButton.addSelectionListener (buttonStyleListener);
-        abortButton.addSelectionListener (buttonStyleListener);
-        ignoreButton.addSelectionListener (buttonStyleListener);
-
-        /* Set default values for style buttons */
-        okButton.setEnabled (false);
-        cancelButton.setEnabled (false);
-        yesButton.setEnabled (false);
-        noButton.setEnabled (false);
-        retryButton.setEnabled (false);
-        abortButton.setEnabled (false);
-        ignoreButton.setEnabled (false);
-        iconErrorButton.setEnabled (false);
-        iconInformationButton.setEnabled (false);
-        iconQuestionButton.setEnabled (false);
-        iconWarningButton.setEnabled (false);
-        iconWorkingButton.setEnabled (false);
-        noIconButton.setEnabled (false);
-        saveButton.setEnabled (false);
-        openButton.setEnabled (false);
-        openButton.setSelection (true);
-        multiButton.setEnabled (false);
-        noIconButton.setSelection (true);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-        exampleGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-
-        /*
-         * Create a group for the text widget to display
-         * the results returned by the example dialogs.
-         */
-        resultGroup = new Group (exampleGroup, DWT.NONE);
-        resultGroup.setLayout (new GridLayout ());
-        resultGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        resultGroup.setText (ControlExample.getResourceString("Dialog_Result"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-        /*
-         * Create a multi lined, scrolled text widget for output.
-         */
-        textWidget = new Text(resultGroup, DWT.H_SCROLL | DWT.V_SCROLL | DWT.BORDER);
-        GridData gridData = new GridData (GridData.FILL_BOTH);
-        textWidget.setLayoutData (gridData);
-    }
-
-    /**
-     * The platform dialogs do not have DWT listeners.
-     */
-    void createListenersGroup () {
-    }
-
-    /**
-     * Handle a dialog type combo selection event.
-     *
-     * @param event the selection event
-     */
-    void dialogSelected (SelectionEvent event) {
-
-        /* Enable/Disable the buttons */
-        char[] name = dialogCombo.getText ();
-        bool isMessageBox = ( name == ControlExample.getResourceString("MessageBox"));
-        bool isFileDialog = ( name == ControlExample.getResourceString("FileDialog"));
-        okButton.setEnabled (isMessageBox);
-        cancelButton.setEnabled (isMessageBox);
-        yesButton.setEnabled (isMessageBox);
-        noButton.setEnabled (isMessageBox);
-        retryButton.setEnabled (isMessageBox);
-        abortButton.setEnabled (isMessageBox);
-        ignoreButton.setEnabled (isMessageBox);
-        iconErrorButton.setEnabled (isMessageBox);
-        iconInformationButton.setEnabled (isMessageBox);
-        iconQuestionButton.setEnabled (isMessageBox);
-        iconWarningButton.setEnabled (isMessageBox);
-        iconWorkingButton.setEnabled (isMessageBox);
-        noIconButton.setEnabled (isMessageBox);
-        saveButton.setEnabled (isFileDialog);
-        openButton.setEnabled (isFileDialog);
-        multiButton.setEnabled (isFileDialog);
-
-        /* Unselect the buttons */
-        if (!isMessageBox) {
-            okButton.setSelection (false);
-            cancelButton.setSelection (false);
-            yesButton.setSelection (false);
-            noButton.setSelection (false);
-            retryButton.setSelection (false);
-            abortButton.setSelection (false);
-            ignoreButton.setSelection (false);
-        }
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return null;
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Dialog";
-    }
-
-    /**
-     * Recreates the "Example" widgets.
-     */
-    void recreateExampleWidgets () {
-        if (textWidget is null) {
-            super.recreateExampleWidgets ();
-        }
-    }
-}
--- a/dwtexamples/controlexample/ExpandBarTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ExpandBarTab;
-
-
-
-import dwt.DWT;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.ExpandBar;
-import dwt.widgets.ExpandItem;
-import dwt.widgets.Group;
-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;
-    Group expandBarGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button verticalButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the list */
-        expandBarGroup = new Group (exampleGroup, DWT.NONE);
-        expandBarGroup.setLayout (new GridLayout ());
-        expandBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        expandBarGroup.setText ("ExpandBar");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (verticalButton.getSelection()) style |= DWT.V_SCROLL;
-
-        /* Create the example widgets */
-        expandBar1 = new ExpandBar (expandBarGroup, style);
-
-        // 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");
-        ExpandItem item = new ExpandItem (expandBar1, DWT.NONE, 0);
-        item.setText(ControlExample.getResourceString("Item1_Text"));
-        item.setHeight(composite.computeSize(DWT.DEFAULT, DWT.DEFAULT).y);
-        item.setControl(composite);
-        item.setImage(instance.images[ControlExample.ciClosedFolder]);
-
-        // 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");
-        item = new ExpandItem (expandBar1, DWT.NONE, 1);
-        item.setText(ControlExample.getResourceString("Item2_Text"));
-        item.setHeight(composite.computeSize(DWT.DEFAULT, DWT.DEFAULT).y);
-        item.setControl(composite);
-        item.setImage(instance.images[ControlExample.ciOpenFolder]);
-        item.setExpanded(true);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        verticalButton = new Button (styleGroup, DWT.CHECK);
-        verticalButton.setText ("DWT.V_SCROLL");
-        verticalButton.setSelection(true);
-        borderButton = new Button(styleGroup, DWT.CHECK);
-        borderButton.setText("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Spacing"];
-    }
-
-    /**
-     * Gets the short text for the tab folder item.
-     */
-    public char[] getShortTabText() {
-        return "EB";
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "ExpandBar";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        Widget [] widgets = getExampleWidgets ();
-        if (widgets.length !is 0){
-            verticalButton.setSelection ((widgets [0].getStyle () & DWT.V_SCROLL) !is 0);
-            borderButton.setSelection ((widgets [0].getStyle () & DWT.BORDER) !is 0);
-        }
-    }
-}
--- a/dwtexamples/controlexample/GroupTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.GroupTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-class GroupTab : Tab {
-    Button titleButton;
-
-    /* Example widgets and groups that contain them */
-    Group group1;
-    Group groupGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button shadowEtchedInButton, shadowEtchedOutButton, shadowInButton, shadowOutButton, shadowNoneButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        titleButton = new Button (otherGroup, DWT.CHECK);
-        titleButton.setText (ControlExample.getResourceString("Title_Text"));
-
-        /* Add the listeners */
-        titleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setTitleText ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the Group */
-        groupGroup = new Group (exampleGroup, DWT.NONE);
-        groupGroup.setLayout (new GridLayout ());
-        groupGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        groupGroup.setText ("Group");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (shadowEtchedInButton.getSelection ()) style |= DWT.SHADOW_ETCHED_IN;
-        if (shadowEtchedOutButton.getSelection ()) style |= DWT.SHADOW_ETCHED_OUT;
-        if (shadowInButton.getSelection ()) style |= DWT.SHADOW_IN;
-        if (shadowOutButton.getSelection ()) style |= DWT.SHADOW_OUT;
-        if (shadowNoneButton.getSelection ()) style |= DWT.SHADOW_NONE;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        group1 = new Group (groupGroup, style);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        shadowEtchedInButton = new Button (styleGroup, DWT.RADIO);
-        shadowEtchedInButton.setText ("DWT.SHADOW_ETCHED_IN");
-        shadowEtchedInButton.setSelection(true);
-        shadowEtchedOutButton = new Button (styleGroup, DWT.RADIO);
-        shadowEtchedOutButton.setText ("DWT.SHADOW_ETCHED_OUT");
-        shadowInButton = new Button (styleGroup, DWT.RADIO);
-        shadowInButton.setText ("DWT.SHADOW_IN");
-        shadowOutButton = new Button (styleGroup, DWT.RADIO);
-        shadowOutButton.setText ("DWT.SHADOW_OUT");
-        shadowNoneButton = new Button (styleGroup, DWT.RADIO);
-        shadowNoneButton.setText ("DWT.SHADOW_NONE");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Group";
-    }
-
-    /**
-     * Sets the title text of the "Example" widgets.
-     */
-    void setTitleText () {
-        if (titleButton.getSelection ()) {
-            group1.setText (ControlExample.getResourceString("Title_Text"));
-        } else {
-            group1.setText ("");
-        }
-        setExampleWidgetSize ();
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        shadowEtchedInButton.setSelection ((group1.getStyle () & DWT.SHADOW_ETCHED_IN) !is 0);
-        shadowEtchedOutButton.setSelection ((group1.getStyle () & DWT.SHADOW_ETCHED_OUT) !is 0);
-        shadowInButton.setSelection ((group1.getStyle () & DWT.SHADOW_IN) !is 0);
-        shadowOutButton.setSelection ((group1.getStyle () & DWT.SHADOW_OUT) !is 0);
-        shadowNoneButton.setSelection ((group1.getStyle () & DWT.SHADOW_NONE) !is 0);
-        borderButton.setSelection ((group1.getStyle () & DWT.BORDER) !is 0);
-        if (!instance.startup) setTitleText ();
-    }
-}
--- a/dwtexamples/controlexample/LabelTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.LabelTab;
-
-
-
-import dwt.DWT;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-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;
-    Group textLabelGroup, imageLabelGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button wrapButton, separatorButton, horizontalButton, verticalButton, shadowInButton, shadowOutButton, shadowNoneButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the text labels */
-        textLabelGroup = new Group(exampleGroup, DWT.NONE);
-        GridLayout gridLayout = new GridLayout ();
-        textLabelGroup.setLayout (gridLayout);
-        gridLayout.numColumns = 3;
-        textLabelGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        textLabelGroup.setText (ControlExample.getResourceString("Text_Labels"));
-
-        /* Create a group for the image labels */
-        imageLabelGroup = new Group (exampleGroup, DWT.SHADOW_NONE);
-        gridLayout = new GridLayout ();
-        imageLabelGroup.setLayout (gridLayout);
-        gridLayout.numColumns = 3;
-        imageLabelGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        imageLabelGroup.setText (ControlExample.getResourceString("Image_Labels"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (wrapButton.getSelection ()) style |= DWT.WRAP;
-        if (separatorButton.getSelection ()) style |= DWT.SEPARATOR;
-        if (horizontalButton.getSelection ()) style |= DWT.HORIZONTAL;
-        if (verticalButton.getSelection ()) style |= DWT.VERTICAL;
-        if (shadowInButton.getSelection ()) style |= DWT.SHADOW_IN;
-        if (shadowOutButton.getSelection ()) style |= DWT.SHADOW_OUT;
-        if (shadowNoneButton.getSelection ()) style |= DWT.SHADOW_NONE;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (leftButton.getSelection ()) style |= DWT.LEFT;
-        if (centerButton.getSelection ()) style |= DWT.CENTER;
-        if (rightButton.getSelection ()) style |= DWT.RIGHT;
-
-        /* Create the example widgets */
-        label1 = new Label (textLabelGroup, style);
-        label1.setText(ControlExample.getResourceString("One"));
-        label2 = new Label (textLabelGroup, style);
-        label2.setText(ControlExample.getResourceString("Two"));
-        label3 = new Label (textLabelGroup, style);
-        if (wrapButton.getSelection ()) {
-            label3.setText (ControlExample.getResourceString("Wrap_Text"));
-        } else {
-            label3.setText (ControlExample.getResourceString("Three"));
-        }
-        label4 = new Label (imageLabelGroup, style);
-        label4.setImage (instance.images[ControlExample.ciClosedFolder]);
-        label5 = new Label (imageLabelGroup, style);
-        label5.setImage (instance.images[ControlExample.ciOpenFolder]);
-        label6 = new Label(imageLabelGroup, style);
-        label6.setImage (instance.images[ControlExample.ciTarget]);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        wrapButton = new Button (styleGroup, DWT.CHECK);
-        wrapButton.setText ("DWT.WRAP");
-        separatorButton = new Button (styleGroup, DWT.CHECK);
-        separatorButton.setText ("DWT.SEPARATOR");
-        horizontalButton = new Button (styleGroup, DWT.RADIO);
-        horizontalButton.setText ("DWT.HORIZONTAL");
-        verticalButton = new Button (styleGroup, DWT.RADIO);
-        verticalButton.setText ("DWT.VERTICAL");
-        Group styleSubGroup = new Group (styleGroup, DWT.NONE);
-        styleSubGroup.setLayout (new GridLayout ());
-        shadowInButton = new Button (styleSubGroup, DWT.RADIO);
-        shadowInButton.setText ("DWT.SHADOW_IN");
-        shadowOutButton = new Button (styleSubGroup, DWT.RADIO);
-        shadowOutButton.setText ("DWT.SHADOW_OUT");
-        shadowNoneButton = new Button (styleSubGroup, DWT.RADIO);
-        shadowNoneButton.setText ("DWT.SHADOW_NONE");
-        borderButton = new Button(styleGroup, DWT.CHECK);
-        borderButton.setText("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Text", "ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Label";
-    }
-
-    /**
-     * Sets the alignment of the "Example" widgets.
-     */
-    void setExampleWidgetAlignment () {
-        int alignment = 0;
-        if (leftButton.getSelection ()) alignment = DWT.LEFT;
-        if (centerButton.getSelection ()) alignment = DWT.CENTER;
-        if (rightButton.getSelection ()) alignment = DWT.RIGHT;
-        label1.setAlignment (alignment);
-        label2.setAlignment (alignment);
-        label3.setAlignment (alignment);
-        label4.setAlignment (alignment);
-        label5.setAlignment (alignment);
-        label6.setAlignment (alignment);
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        bool isSeparator = (label1.getStyle () & DWT.SEPARATOR) !is 0;
-        wrapButton.setSelection (!isSeparator && (label1.getStyle () & DWT.WRAP) !is 0);
-        leftButton.setSelection (!isSeparator && (label1.getStyle () & DWT.LEFT) !is 0);
-        centerButton.setSelection (!isSeparator && (label1.getStyle () & DWT.CENTER) !is 0);
-        rightButton.setSelection (!isSeparator && (label1.getStyle () & DWT.RIGHT) !is 0);
-        shadowInButton.setSelection (isSeparator && (label1.getStyle () & DWT.SHADOW_IN) !is 0);
-        shadowOutButton.setSelection (isSeparator && (label1.getStyle () & DWT.SHADOW_OUT) !is 0);
-        shadowNoneButton.setSelection (isSeparator && (label1.getStyle () & DWT.SHADOW_NONE) !is 0);
-        horizontalButton.setSelection (isSeparator && (label1.getStyle () & DWT.HORIZONTAL) !is 0);
-        verticalButton.setSelection (isSeparator && (label1.getStyle () & DWT.VERTICAL) !is 0);
-        wrapButton.setEnabled (!isSeparator);
-        leftButton.setEnabled (!isSeparator);
-        centerButton.setEnabled (!isSeparator);
-        rightButton.setEnabled (!isSeparator);
-        shadowInButton.setEnabled (isSeparator);
-        shadowOutButton.setEnabled (isSeparator);
-        shadowNoneButton.setEnabled (isSeparator);
-        horizontalButton.setEnabled (isSeparator);
-        verticalButton.setEnabled (isSeparator);
-    }
-}
--- a/dwtexamples/controlexample/LinkTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.LinkTab;
-
-
-
-import dwt.DWT;
-import dwt.DWTError;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Label;
-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;
-    Group linkGroup;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    override void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the list */
-        linkGroup = new Group (exampleGroup, DWT.NONE);
-        linkGroup.setLayout (new GridLayout ());
-        linkGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        linkGroup.setText ("Link");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    override void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        try {
-            link1 = new Link (linkGroup, style);
-            link1.setText (ControlExample.getResourceString("LinkText"));
-        } catch (DWTError e) {
-            // temporary code for photon
-            Label label = new Label (linkGroup, DWT.CENTER | DWT.WRAP);
-            label.setText ("Link widget not suported");
-        }
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        borderButton = new Button(styleGroup, DWT.CHECK);
-        borderButton.setText("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-//       temporary code for photon
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Text", "ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Link";
-    }
-
-}
--- a/dwtexamples/controlexample/ListTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ListTab;
-
-
-
-import dwt.DWT;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Group;
-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 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")];
-        }
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the list */
-        listGroup = new Group (exampleGroup, DWT.NONE);
-        listGroup.setLayout (new GridLayout ());
-        listGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        listGroup.setText ("List");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (singleButton.getSelection ()) style |= DWT.SINGLE;
-        if (multiButton.getSelection ()) style |= DWT.MULTI;
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        list1 = new List (listGroup, style);
-        list1.setItems (ListData1);
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Items", "Selection", "ToolTipText", "TopIndex" ];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "List";
-    }
-}
--- a/dwtexamples/controlexample/MenuTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.MenuTab;
-
-
-
-import dwt.DWT;
-import dwt.events.PaintEvent;
-import dwt.events.PaintListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Label;
-import dwt.widgets.Menu;
-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;
-    Button checkButton, cascadeButton, pushButton, radioButton, separatorButton;
-    Button imagesButton, acceleratorsButton, mnemonicsButton, subMenuButton, subSubMenuButton;
-    Button createButton, closeAllButton;
-    Group menuItemStyleGroup;
-
-    /* Variables used to track the open shells */
-    int shellCount = 0;
-    Shell [] shells;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-        shells = new Shell [4];
-    }
-
-    /**
-     * Close all the example shells.
-     */
-    void closeAllShells() {
-        for (int i = 0; i<shellCount; i++) {
-            if (shells[i] !is null & !shells [i].isDisposed ()) {
-                shells [i].dispose();
-            }
-        }
-        shellCount = 0;
-    }
-
-    /**
-     * Handle the Create button selection event.
-     *
-     * @param event org.eclipse.swt.events.SelectionEvent
-     */
-    public void createButtonSelected(SelectionEvent event) {
-
-        /*
-         * Remember the example shells so they
-         * can be disposed by the user.
-         */
-        if (shellCount >= shells.length) {
-            Shell [] newShells = new Shell [shells.length + 4];
-            System.arraycopy (shells, 0, newShells, 0, shells.length);
-            shells = newShells;
-        }
-
-        int orientation = 0;
-        if (leftToRightButton.getSelection()) orientation |= DWT.LEFT_TO_RIGHT;
-        if (rightToLeftButton.getSelection()) orientation |= DWT.RIGHT_TO_LEFT;
-        int radioBehavior = 0;
-        if (noRadioGroupButton.getSelection()) radioBehavior |= DWT.NO_RADIO_GROUP;
-
-        /* Create the shell and menu(s) */
-        Shell shell = new Shell (DWT.SHELL_TRIM | orientation);
-        shells [shellCount] = shell;
-        if (barButton.getSelection ()) {
-            /* Create menu bar. */
-            Menu menuBar = new Menu(shell, DWT.BAR | radioBehavior);
-            shell.setMenuBar(menuBar);
-            hookListeners(menuBar);
-
-            if (dropDownButton.getSelection() && cascadeButton.getSelection()) {
-                /* Create cascade button and drop-down menu in menu bar. */
-                MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
-                item.setText(getMenuItemText("Cascade"));
-                if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciOpenFolder]);
-                hookListeners(item);
-                Menu dropDownMenu = new Menu(shell, DWT.DROP_DOWN | radioBehavior);
-                item.setMenu(dropDownMenu);
-                hookListeners(dropDownMenu);
-
-                /* Create various menu items, depending on selections. */
-                createMenuItems(dropDownMenu, subMenuButton.getSelection(), subSubMenuButton.getSelection());
-            }
-        }
-
-        if (popUpButton.getSelection()) {
-            /* Create pop-up menu. */
-            Menu popUpMenu = new Menu(shell, DWT.POP_UP | radioBehavior);
-            shell.setMenu(popUpMenu);
-            hookListeners(popUpMenu);
-
-            /* Create various menu items, depending on selections. */
-            createMenuItems(popUpMenu, subMenuButton.getSelection(), subSubMenuButton.getSelection());
-        }
-
-        /* Set the size, title and open the shell. */
-        shell.setSize (300, 100);
-        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);
-            }
-        });
-        shell.open ();
-        shellCount++;
-    }
-
-    /**
-     * Creates the "Control" group.
-     */
-    void createControlGroup () {
-        /*
-         * Create the "Control" group.  This is the group on the
-         * right half of each example tab.  For MenuTab, it consists of
-         * the Menu style group, the MenuItem style group and the 'other' group.
-         */
-        controlGroup = new Group (tabFolderPage, DWT.NONE);
-        controlGroup.setLayout (new GridLayout (2, true));
-        controlGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        controlGroup.setText (ControlExample.getResourceString("Parameters"));
-
-        /* Create a group for the menu style controls */
-        styleGroup = new Group (controlGroup, DWT.NONE);
-        styleGroup.setLayout (new GridLayout ());
-        styleGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        styleGroup.setText (ControlExample.getResourceString("Menu_Styles"));
-
-        /* Create a group for the menu item style controls */
-        menuItemStyleGroup = new Group (controlGroup, DWT.NONE);
-        menuItemStyleGroup.setLayout (new GridLayout ());
-        menuItemStyleGroup.setLayoutData (new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        menuItemStyleGroup.setText (ControlExample.getResourceString("MenuItem_Styles"));
-
-        /* Create a group for the 'other' controls */
-        otherGroup = new Group (controlGroup, DWT.NONE);
-        otherGroup.setLayout (new GridLayout ());
-        otherGroup.setLayoutData (new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        otherGroup.setText (ControlExample.getResourceString("Other"));
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-
-        /* Create the menu style buttons */
-        barButton = new Button (styleGroup, DWT.CHECK);
-        barButton.setText ("DWT.BAR");
-        dropDownButton = new Button (styleGroup, DWT.CHECK);
-        dropDownButton.setText ("DWT.DROP_DOWN");
-        popUpButton = new Button (styleGroup, DWT.CHECK);
-        popUpButton.setText ("DWT.POP_UP");
-        noRadioGroupButton = new Button (styleGroup, DWT.CHECK);
-        noRadioGroupButton.setText ("DWT.NO_RADIO_GROUP");
-        leftToRightButton = new Button (styleGroup, DWT.RADIO);
-        leftToRightButton.setText ("DWT.LEFT_TO_RIGHT");
-        leftToRightButton.setSelection(true);
-        rightToLeftButton = new Button (styleGroup, DWT.RADIO);
-        rightToLeftButton.setText ("DWT.RIGHT_TO_LEFT");
-
-        /* Create the menu item style buttons */
-        cascadeButton = new Button (menuItemStyleGroup, DWT.CHECK);
-        cascadeButton.setText ("DWT.CASCADE");
-        checkButton = new Button (menuItemStyleGroup, DWT.CHECK);
-        checkButton.setText ("DWT.CHECK");
-        pushButton = new Button (menuItemStyleGroup, DWT.CHECK);
-        pushButton.setText ("DWT.PUSH");
-        radioButton = new Button (menuItemStyleGroup, DWT.CHECK);
-        radioButton.setText ("DWT.RADIO");
-        separatorButton = new Button (menuItemStyleGroup, DWT.CHECK);
-        separatorButton.setText ("DWT.SEPARATOR");
-
-        /* Create the 'other' buttons */
-        imagesButton = new Button (otherGroup, DWT.CHECK);
-        imagesButton.setText (ControlExample.getResourceString("Images"));
-        acceleratorsButton = new Button (otherGroup, DWT.CHECK);
-        acceleratorsButton.setText (ControlExample.getResourceString("Accelerators"));
-        mnemonicsButton = new Button (otherGroup, DWT.CHECK);
-        mnemonicsButton.setText (ControlExample.getResourceString("Mnemonics"));
-        subMenuButton = new Button (otherGroup, DWT.CHECK);
-        subMenuButton.setText (ControlExample.getResourceString("SubMenu"));
-        subSubMenuButton = new Button (otherGroup, DWT.CHECK);
-        subSubMenuButton.setText (ControlExample.getResourceString("SubSubMenu"));
-
-        /* Create the "create" and "closeAll" buttons (and a 'filler' label to place them) */
-        new Label(controlGroup, DWT.NONE);
-        createButton = new Button (controlGroup, DWT.NONE);
-        createButton.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_END));
-        createButton.setText (ControlExample.getResourceString("Create_Shell"));
-        closeAllButton = new Button (controlGroup, DWT.NONE);
-        closeAllButton.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING));
-        closeAllButton.setText (ControlExample.getResourceString("Close_All_Shells"));
-
-        /* Add the listeners */
-        createButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                createButtonSelected(e);
-            }
-        });
-        closeAllButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                closeAllShells ();
-            }
-        });
-        subMenuButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                subSubMenuButton.setEnabled (subMenuButton.getSelection ());
-            }
-        });
-
-        /* Set the default state */
-        barButton.setSelection (true);
-        dropDownButton.setSelection (true);
-        popUpButton.setSelection (true);
-        cascadeButton.setSelection (true);
-        checkButton.setSelection (true);
-        pushButton.setSelection (true);
-        radioButton.setSelection (true);
-        separatorButton.setSelection (true);
-        subSubMenuButton.setEnabled (subMenuButton.getSelection ());
-    }
-
-    /* Create various menu items, depending on selections. */
-    void createMenuItems(Menu menu, bool createSubMenu, bool createSubSubMenu) {
-        MenuItem item;
-        if (pushButton.getSelection()) {
-            item = new MenuItem(menu, DWT.PUSH);
-            item.setText(getMenuItemText("Push"));
-            if (acceleratorsButton.getSelection()) item.setAccelerator(DWT.MOD1 + DWT.MOD2 + 'P');
-            if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciClosedFolder]);
-            hookListeners(item);
-        }
-
-        if (separatorButton.getSelection()) {
-            new MenuItem(menu, DWT.SEPARATOR);
-        }
-
-        if (checkButton.getSelection()) {
-            item = new MenuItem(menu, DWT.CHECK);
-            item.setText(getMenuItemText("Check"));
-            if (acceleratorsButton.getSelection()) item.setAccelerator(DWT.MOD1 + DWT.MOD2 + 'C');
-            if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciOpenFolder]);
-            hookListeners(item);
-        }
-
-        if (radioButton.getSelection()) {
-            item = new MenuItem(menu, DWT.RADIO);
-            item.setText(getMenuItemText("1Radio"));
-            if (acceleratorsButton.getSelection()) item.setAccelerator(DWT.MOD1 + DWT.MOD2 + '1');
-            if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciTarget]);
-            item.setSelection(true);
-            hookListeners(item);
-
-            item = new MenuItem(menu, DWT.RADIO);
-            item.setText(getMenuItemText("2Radio"));
-            if (acceleratorsButton.getSelection()) item.setAccelerator(DWT.MOD1 + DWT.MOD2 + '2');
-            if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciTarget]);
-            hookListeners(item);
-        }
-
-        if (createSubMenu && cascadeButton.getSelection()) {
-            /* Create cascade button and drop-down menu for the sub-menu. */
-            item = new MenuItem(menu, DWT.CASCADE);
-            item.setText(getMenuItemText("Cascade"));
-            if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciOpenFolder]);
-            hookListeners(item);
-            Menu subMenu = new Menu(menu.getShell(), DWT.DROP_DOWN);
-            item.setMenu(subMenu);
-            hookListeners(subMenu);
-
-            createMenuItems(subMenu, createSubSubMenu, false);
-        }
-    }
-
-    char[] getMenuItemText(char[] item) {
-        bool cascade = ( item == "Cascade");
-        bool mnemonic = mnemonicsButton.getSelection();
-        bool accelerator = acceleratorsButton.getSelection();
-        char acceleratorKey = item[0];
-        if (mnemonic && accelerator && !cascade) {
-            return ControlExample.getResourceString(item ~ "WithMnemonic") ~ "\tCtrl+Shift+" ~ acceleratorKey;
-        }
-        if (accelerator && !cascade) {
-            return ControlExample.getResourceString(item) ~ "\tCtrl+Shift+" ~ acceleratorKey;
-        }
-        if (mnemonic) {
-            return ControlExample.getResourceString(item ~ "WithMnemonic");
-        }
-        return ControlExample.getResourceString(item);
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Menu";
-    }
-}
--- a/dwtexamples/controlexample/ProgressBarTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ProgressBarTab;
-
-
-
-import dwt.DWT;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-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;
-    Group progressBarGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button smoothButton;
-    Button indeterminateButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup() {
-        super.createExampleGroup ();
-
-        /* Create a group for the progress bar */
-        progressBarGroup = new Group (exampleGroup, DWT.NONE);
-        progressBarGroup.setLayout (new GridLayout ());
-        progressBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        progressBarGroup.setText ("ProgressBar");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (horizontalButton.getSelection ()) style |= DWT.HORIZONTAL;
-        if (verticalButton.getSelection ()) style |= DWT.VERTICAL;
-        if (smoothButton.getSelection ()) style |= DWT.SMOOTH;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (indeterminateButton.getSelection ()) style |= DWT.INDETERMINATE;
-
-        /* Create the example widgets */
-        progressBar1 = new ProgressBar (progressBarGroup, style);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        smoothButton = new Button (styleGroup, DWT.CHECK);
-        smoothButton.setText ("DWT.SMOOTH");
-        indeterminateButton = new Button (styleGroup, DWT.CHECK);
-        indeterminateButton.setText ("DWT.INDETERMINATE");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Selection", "ToolTipText"];
-    }
-
-    /**
-     * Gets the short text for the tab folder item.
-     */
-    public char[] getShortTabText() {
-        return "PB";
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "ProgressBar";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        if (indeterminateButton.getSelection ()) {
-            selectionSpinner.setEnabled (false);
-            minimumSpinner.setEnabled (false);
-            maximumSpinner.setEnabled (false);
-        } else {
-            selectionSpinner.setEnabled (true);
-            minimumSpinner.setEnabled (true);
-            maximumSpinner.setEnabled (true);
-        }
-        smoothButton.setSelection ((progressBar1.getStyle () & DWT.SMOOTH) !is 0);
-        indeterminateButton.setSelection ((progressBar1.getStyle () & DWT.INDETERMINATE) !is 0);
-    }
-
-    /**
-     * Gets the default maximum of the "Example" widgets.
-     */
-    int getDefaultMaximum () {
-        return progressBar1.getMaximum();
-    }
-
-    /**
-     * Gets the default minimim of the "Example" widgets.
-     */
-    int getDefaultMinimum () {
-        return progressBar1.getMinimum();
-    }
-
-    /**
-     * Gets the default selection of the "Example" widgets.
-     */
-    int getDefaultSelection () {
-        return progressBar1.getSelection();
-    }
-
-    /**
-     * Sets the maximum of the "Example" widgets.
-     */
-    void setWidgetMaximum () {
-        progressBar1.setMaximum (maximumSpinner.getSelection ());
-        updateSpinners ();
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMinimum () {
-        progressBar1.setMinimum (minimumSpinner.getSelection ());
-        updateSpinners ();
-    }
-
-    /**
-     * Sets the selection of the "Example" widgets.
-     */
-    void setWidgetSelection () {
-        progressBar1.setSelection (selectionSpinner.getSelection ());
-        updateSpinners ();
-    }
-
-    /**
-     * Update the Spinner widgets to reflect the actual value set
-     * on the "Example" widget.
-     */
-    void updateSpinners () {
-        minimumSpinner.setSelection (progressBar1.getMinimum ());
-        selectionSpinner.setSelection (progressBar1.getSelection ());
-        maximumSpinner.setSelection (progressBar1.getMaximum ());
-    }
-}
--- a/dwtexamples/controlexample/RangeTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.RangeTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-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;
-    bool orientationButtons = true;
-
-    /* Scale widgets added to the "Control" group */
-    Spinner minimumSpinner, selectionSpinner, maximumSpinner;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-        /* Create controls specific to this example */
-        createMinimumGroup ();
-        createMaximumGroup ();
-        createSelectionGroup ();
-    }
-
-    /**
-     * Create a group of widgets to control the maximum
-     * attribute of the example widget.
-     */
-    void createMaximumGroup() {
-
-        /* Create the group */
-        Group maximumGroup = new Group (controlGroup, DWT.NONE);
-        maximumGroup.setLayout (new GridLayout ());
-        maximumGroup.setText (ControlExample.getResourceString("Maximum"));
-        maximumGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create a Spinner widget */
-        maximumSpinner = new Spinner (maximumGroup, DWT.BORDER);
-        maximumSpinner.setMaximum (100000);
-        maximumSpinner.setSelection (getDefaultMaximum());
-        maximumSpinner.setPageIncrement (100);
-        maximumSpinner.setIncrement (1);
-        maximumSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        maximumSpinner.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetMaximum ();
-            }
-        });
-    }
-
-    /**
-     * Create a group of widgets to control the minimum
-     * attribute of the example widget.
-     */
-    void createMinimumGroup() {
-
-        /* Create the group */
-        Group minimumGroup = new Group (controlGroup, DWT.NONE);
-        minimumGroup.setLayout (new GridLayout ());
-        minimumGroup.setText (ControlExample.getResourceString("Minimum"));
-        minimumGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create a Spinner widget */
-        minimumSpinner = new Spinner (minimumGroup, DWT.BORDER);
-        minimumSpinner.setMaximum (100000);
-        minimumSpinner.setSelection(getDefaultMinimum());
-        minimumSpinner.setPageIncrement (100);
-        minimumSpinner.setIncrement (1);
-        minimumSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        minimumSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetMinimum ();
-            }
-        });
-
-    }
-
-    /**
-     * Create a group of widgets to control the selection
-     * attribute of the example widget.
-     */
-    void createSelectionGroup() {
-
-        /* Create the group */
-        Group selectionGroup = new Group(controlGroup, DWT.NONE);
-        selectionGroup.setLayout(new GridLayout());
-        GridData gridData = new GridData(DWT.FILL, DWT.BEGINNING, false, false);
-        selectionGroup.setLayoutData(gridData);
-        selectionGroup.setText(ControlExample.getResourceString("Selection"));
-
-        /* Create a Spinner widget */
-        selectionSpinner = new Spinner (selectionGroup, DWT.BORDER);
-        selectionSpinner.setMaximum (100000);
-        selectionSpinner.setSelection (getDefaultSelection());
-        selectionSpinner.setPageIncrement (100);
-        selectionSpinner.setIncrement (1);
-        selectionSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        selectionSpinner.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent event) {
-                setWidgetSelection ();
-            }
-        });
-
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        if (orientationButtons) {
-            horizontalButton = new Button (styleGroup, DWT.RADIO);
-            horizontalButton.setText ("DWT.HORIZONTAL");
-            verticalButton = new Button (styleGroup, DWT.RADIO);
-            verticalButton.setText ("DWT.VERTICAL");
-        }
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        if (!instance.startup) {
-            setWidgetMinimum ();
-            setWidgetMaximum ();
-            setWidgetSelection ();
-        }
-        Widget [] widgets = getExampleWidgets ();
-        if (widgets.length !is 0) {
-            if (orientationButtons) {
-                horizontalButton.setSelection ((widgets [0].getStyle () & DWT.HORIZONTAL) !is 0);
-                verticalButton.setSelection ((widgets [0].getStyle () & DWT.VERTICAL) !is 0);
-            }
-            borderButton.setSelection ((widgets [0].getStyle () & DWT.BORDER) !is 0);
-        }
-    }
-
-    /**
-     * Gets the default maximum of the "Example" widgets.
-     */
-    abstract int getDefaultMaximum ();
-
-    /**
-     * Gets the default minimim of the "Example" widgets.
-     */
-    abstract int getDefaultMinimum ();
-
-    /**
-     * Gets the default selection of the "Example" widgets.
-     */
-    abstract int getDefaultSelection ();
-
-    /**
-     * Sets the maximum of the "Example" widgets.
-     */
-    abstract void setWidgetMaximum ();
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    abstract void setWidgetMinimum ();
-
-    /**
-     * Sets the selection of the "Example" widgets.
-     */
-    abstract void setWidgetSelection ();
-}
--- a/dwtexamples/controlexample/SashFormTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.SashFormTab;
-
-
-
-import dwt.DWT;
-import dwt.custom.SashForm;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.List;
-import dwt.widgets.Text;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-
-class SashFormTab : Tab {
-    /* Example widgets and groups that contain them */
-    Group sashFormGroup;
-    SashForm form;
-    List list1, list2;
-    Text text;
-
-    /* Style widgets added to the "Style" group */
-    Button horizontalButton, verticalButton, smoothButton;
-
-    static char[] [] ListData0;
-    static char[] [] ListData1;
-
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-        if( ListData0 is null ){
-            ListData0 = [
-                ControlExample.getResourceString("ListData0_0"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_1"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_2"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_3"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_4"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_5"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_6"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData0_7")]; //$NON-NLS-1$
-
-        }
-        if( ListData1 is null ){
-            ListData1 = [
-                ControlExample.getResourceString("ListData1_0"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_1"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_2"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_3"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_4"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_5"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_6"), //$NON-NLS-1$
-                ControlExample.getResourceString("ListData1_7")]; //$NON-NLS-1$
-        }
-    }
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the sashform widget */
-        sashFormGroup = new Group (exampleGroup, DWT.NONE);
-        sashFormGroup.setLayout (new GridLayout ());
-        sashFormGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        sashFormGroup.setText ("SashForm");
-    }
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (smoothButton.getSelection ()) style |= DWT.SMOOTH;
-
-        /* Create the example widgets */
-        form = new SashForm (sashFormGroup, style);
-        list1 = new List (form, DWT.V_SCROLL | DWT.H_SCROLL | DWT.BORDER);
-        list1.setItems (ListData0);
-        list2 = new List (form, DWT.V_SCROLL | DWT.H_SCROLL | DWT.BORDER);
-        list2.setItems (ListData1);
-        text = new Text (form, DWT.MULTI | DWT.BORDER);
-        text.setText (ControlExample.getResourceString("Multi_line")); //$NON-NLS-1$
-        form.setWeights([1, 1, 1]);
-    }
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        horizontalButton = new Button (styleGroup, DWT.RADIO);
-        horizontalButton.setText ("DWT.HORIZONTAL");
-        horizontalButton.setSelection(true);
-        verticalButton = new Button (styleGroup, DWT.RADIO);
-        verticalButton.setText ("DWT.VERTICAL");
-        verticalButton.setSelection(false);
-        smoothButton = new Button (styleGroup, DWT.CHECK);
-        smoothButton.setText ("DWT.SMOOTH");
-        smoothButton.setSelection(false);
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) form];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "SashForm"; //$NON-NLS-1$
-    }
-
-        /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        horizontalButton.setSelection ((form.getStyle () & DWT.H_SCROLL) !is 0);
-        verticalButton.setSelection ((form.getStyle () & DWT.V_SCROLL) !is 0);
-        smoothButton.setSelection ((form.getStyle () & DWT.SMOOTH) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/SashTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.SashTab;
-
-
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.graphics.Rectangle;
-import dwt.layout.FillLayout;
-import dwt.layout.GridData;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.List;
-import dwt.widgets.Sash;
-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;
-    Composite sashComp;
-    Group sashGroup;
-    List list1, list2, list3;
-    Text text;
-    Button smoothButton;
-
-    static char[] [] ListData0;
-    static char[] [] ListData1;
-
-    /* Constants */
-    static final int SASH_WIDTH = 3;
-    static final int SASH_LIMIT = 20;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    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")];
-        }
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-        exampleGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        exampleGroup.setLayout(new FillLayout());
-
-        /* Create a group for the sash widgets */
-        sashGroup = new Group (exampleGroup, DWT.NONE);
-        FillLayout layout = new FillLayout();
-        layout.marginHeight = layout.marginWidth = 5;
-        sashGroup.setLayout(layout);
-        sashGroup.setText ("Sash");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-        /*
-         * Create the page.  This example does not use layouts.
-         */
-        sashComp = new Composite(sashGroup, DWT.BORDER);
-
-        /* Create the list and text widgets */
-        list1 = new List (sashComp, DWT.V_SCROLL | DWT.H_SCROLL | DWT.BORDER);
-        list1.setItems (ListData0);
-        list2 = new List (sashComp, DWT.V_SCROLL | DWT.H_SCROLL | DWT.BORDER);
-        list2.setItems (ListData1);
-        text = new Text (sashComp, DWT.MULTI | DWT.BORDER);
-        text.setText (ControlExample.getResourceString("Multi_line"));
-
-        /* Create the sashes */
-        int style = getDefaultStyle();
-        if (smoothButton.getSelection()) style |= DWT.SMOOTH;
-        vSash = new Sash (sashComp, DWT.VERTICAL | style);
-        hSash = new Sash (sashComp, DWT.HORIZONTAL | style);
-
-        /* Add the listeners */
-        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);
-                if (event.detail !is DWT.DRAG) {
-                    hSash.setBounds (event.x, event.y, event.width, event.height);
-                    layout ();
-                }
-            }
-        });
-        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);
-                if (event.detail !is DWT.DRAG) {
-                    vSash.setBounds (event.x, event.y, event.width, event.height);
-                    layout ();
-                }
-            }
-        });
-        sashComp.addControlListener (new class() ControlAdapter {
-            public void controlResized (ControlEvent event) {
-                resized ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Size" group.  The "Size" group contains
-     * controls that allow the user to change the size of
-     * the example widgets.
-     */
-    void createSizeGroup () {
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        smoothButton = new Button (styleGroup, DWT.CHECK);
-        smoothButton.setText("DWT.SMOOTH");
-    }
-
-    void disposeExampleWidgets () {
-        sashComp.dispose();
-        sashComp = null;
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Sash";
-    }
-
-    /**
-     * Layout the list and text widgets according to the new
-     * positions of the sashes..events.SelectionEvent
-     */
-    void layout () {
-
-        Rectangle clientArea = sashComp.getClientArea ();
-        Rectangle hSashBounds = hSash.getBounds ();
-        Rectangle vSashBounds = vSash.getBounds ();
-
-        list1.setBounds (0, 0, vSashBounds.x, hSashBounds.y);
-        list2.setBounds (vSashBounds.x + vSashBounds.width, 0, clientArea.width - (vSashBounds.x + vSashBounds.width), hSashBounds.y);
-        text.setBounds (0, hSashBounds.y + hSashBounds.height, clientArea.width, clientArea.height - (hSashBounds.y + hSashBounds.height));
-
-        /**
-        * If the horizontal sash has been moved then the vertical
-        * sash is either too long or too short and its size must
-        * be adjusted.
-        */
-        vSashBounds.height = hSashBounds.y;
-        vSash.setBounds (vSashBounds);
-    }
-    /**
-     * Sets the size of the "Example" widgets.
-     */
-    void setExampleWidgetSize () {
-        sashGroup.layout (true);
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        smoothButton.setSelection ((hSash.getStyle () & DWT.SMOOTH) !is 0);
-    }
-
-    /**
-     * Handle the shell resized event.
-     */
-    void resized () {
-
-        /* Get the client area for the shell */
-        Rectangle clientArea = sashComp.getClientArea ();
-
-        /*
-        * Make list 1 half the width and half the height of the tab leaving room for the sash.
-        * Place list 1 in the top left quadrant of the tab.
-        */
-        Rectangle list1Bounds = new Rectangle (0, 0, (clientArea.width - SASH_WIDTH) / 2, (clientArea.height - SASH_WIDTH) / 2);
-        list1.setBounds (list1Bounds);
-
-        /*
-        * Make list 2 half the width and half the height of the tab leaving room for the sash.
-        * Place list 2 in the top right quadrant of the tab.
-        */
-        list2.setBounds (list1Bounds.width + SASH_WIDTH, 0, clientArea.width - (list1Bounds.width + SASH_WIDTH), list1Bounds.height);
-
-        /*
-        * Make the text area the full width and half the height of the tab leaving room for the sash.
-        * Place the text area in the bottom half of the tab.
-        */
-        text.setBounds (0, list1Bounds.height + SASH_WIDTH, clientArea.width, clientArea.height - (list1Bounds.height + SASH_WIDTH));
-
-        /* Position the sashes */
-        vSash.setBounds (list1Bounds.width, 0, SASH_WIDTH, list1Bounds.height);
-        hSash.setBounds (0, list1Bounds.height, clientArea.width, SASH_WIDTH);
-    }
-}
--- a/dwtexamples/controlexample/ScaleTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ScaleTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Group;
-import dwt.widgets.Scale;
-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;
-    Group scaleGroup;
-
-    /* Spinner widgets added to the "Control" group */
-    Spinner incrementSpinner, pageIncrementSpinner;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-        super.createControlWidgets ();
-        createIncrementGroup ();
-        createPageIncrementGroup ();
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the scale */
-        scaleGroup = new Group (exampleGroup, DWT.NONE);
-        scaleGroup.setLayout (new GridLayout ());
-        scaleGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        scaleGroup.setText ("Scale");
-
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (horizontalButton.getSelection ()) style |= DWT.HORIZONTAL;
-        if (verticalButton.getSelection ()) style |= DWT.VERTICAL;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        scale1 = new Scale (scaleGroup, style);
-    }
-
-    /**
-     * Create a group of widgets to control the increment
-     * attribute of the example widget.
-     */
-    void createIncrementGroup() {
-
-        /* Create the group */
-        Group incrementGroup = new Group (controlGroup, DWT.NONE);
-        incrementGroup.setLayout (new GridLayout ());
-        incrementGroup.setText (ControlExample.getResourceString("Increment"));
-        incrementGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        incrementSpinner = new Spinner (incrementGroup, DWT.BORDER);
-        incrementSpinner.setMaximum (100000);
-        incrementSpinner.setSelection (getDefaultIncrement());
-        incrementSpinner.setPageIncrement (100);
-        incrementSpinner.setIncrement (1);
-        incrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        incrementSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                setWidgetIncrement ();
-            }
-        });
-    }
-
-    /**
-     * Create a group of widgets to control the page increment
-     * attribute of the example widget.
-     */
-    void createPageIncrementGroup() {
-
-        /* Create the group */
-        Group pageIncrementGroup = new Group (controlGroup, DWT.NONE);
-        pageIncrementGroup.setLayout (new GridLayout ());
-        pageIncrementGroup.setText (ControlExample.getResourceString("Page_Increment"));
-        pageIncrementGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        pageIncrementSpinner = new Spinner (pageIncrementGroup, DWT.BORDER);
-        pageIncrementSpinner.setMaximum (100000);
-        pageIncrementSpinner.setSelection (getDefaultPageIncrement());
-        pageIncrementSpinner.setPageIncrement (100);
-        pageIncrementSpinner.setIncrement (1);
-        pageIncrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        pageIncrementSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetPageIncrement ();
-            }
-        });
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Selection", "ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Scale";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        if (!instance.startup) {
-            setWidgetIncrement ();
-            setWidgetPageIncrement ();
-        }
-    }
-
-    /**
-     * Gets the default maximum of the "Example" widgets.
-     */
-    int getDefaultMaximum () {
-        return scale1.getMaximum();
-    }
-
-    /**
-     * Gets the default minimim of the "Example" widgets.
-     */
-    int getDefaultMinimum () {
-        return scale1.getMinimum();
-    }
-
-    /**
-     * Gets the default selection of the "Example" widgets.
-     */
-    int getDefaultSelection () {
-        return scale1.getSelection();
-    }
-
-    /**
-     * Gets the default increment of the "Example" widgets.
-     */
-    int getDefaultIncrement () {
-        return scale1.getIncrement();
-    }
-
-    /**
-     * Gets the default page increment of the "Example" widgets.
-     */
-    int getDefaultPageIncrement () {
-        return scale1.getPageIncrement();
-    }
-
-    /**
-     * Sets the increment of the "Example" widgets.
-     */
-    void setWidgetIncrement () {
-        scale1.setIncrement (incrementSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMaximum () {
-        scale1.setMaximum (maximumSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMinimum () {
-        scale1.setMinimum (minimumSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the page increment of the "Example" widgets.
-     */
-    void setWidgetPageIncrement () {
-        scale1.setPageIncrement (pageIncrementSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the selection of the "Example" widgets.
-     */
-    void setWidgetSelection () {
-        scale1.setSelection (selectionSpinner.getSelection ());
-    }
-}
--- a/dwtexamples/controlexample/ScrollableTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ScrollableTab;
-
-
-
-import dwt.DWT;
-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;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        singleButton = new Button (styleGroup, DWT.RADIO);
-        singleButton.setText ("DWT.SINGLE");
-        multiButton = new Button (styleGroup, DWT.RADIO);
-        multiButton.setText ("DWT.MULTI");
-        horizontalButton = new Button (styleGroup, DWT.CHECK);
-        horizontalButton.setText ("DWT.H_SCROLL");
-        horizontalButton.setSelection(true);
-        verticalButton = new Button (styleGroup, DWT.CHECK);
-        verticalButton.setText ("DWT.V_SCROLL");
-        verticalButton.setSelection(true);
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        Widget [] widgets = getExampleWidgets ();
-        if (widgets.length !is 0){
-            singleButton.setSelection ((widgets [0].getStyle () & DWT.SINGLE) !is 0);
-            multiButton.setSelection ((widgets [0].getStyle () & DWT.MULTI) !is 0);
-            horizontalButton.setSelection ((widgets [0].getStyle () & DWT.H_SCROLL) !is 0);
-            verticalButton.setSelection ((widgets [0].getStyle () & DWT.V_SCROLL) !is 0);
-            borderButton.setSelection ((widgets [0].getStyle () & DWT.BORDER) !is 0);
-        }
-    }
-}
--- a/dwtexamples/controlexample/ShellTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
-  * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
-*******************************************************************************/
-module dwtexamples.controlexample.ShellTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Event;
-import dwt.widgets.Group;
-import dwt.widgets.Listener;
-import dwt.widgets.Shell;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-import tango.util.Convert;
-
-class ShellTab : Tab {
-    /* Style widgets added to the "Style" groups, and "Other" group */
-    Button noParentButton, parentButton;
-    Button noTrimButton, closeButton, titleButton, minButton, maxButton, borderButton, resizeButton, onTopButton, toolButton;
-    Button createButton, closeAllButton;
-    Button modelessButton, primaryModalButton, applicationModalButton, systemModalButton;
-    Button imageButton;
-    Group parentStyleGroup, modalStyleGroup;
-
-    /* Variables used to track the open shells */
-    int shellCount = 0;
-    Shell [] shells;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Close all the example shells.
-     */
-    void closeAllShells() {
-        for (int i = 0; i<shellCount; i++) {
-            if (shells[i] !is null & !shells [i].isDisposed ()) {
-                shells [i].dispose();
-            }
-        }
-        shellCount = 0;
-    }
-
-    /**
-     * Handle the Create button selection event.
-     *
-     * @param event org.eclipse.swt.events.SelectionEvent
-     */
-    public void createButtonSelected(SelectionEvent event) {
-
-        /*
-         * Remember the example shells so they
-         * can be disposed by the user.
-         */
-        if (shellCount >= shells.length) {
-            Shell [] newShells = new Shell [shells.length + 4];
-            System.arraycopy (shells, 0, newShells, 0, shells.length);
-            shells = newShells;
-        }
-
-        /* Compute the shell style */
-        int style = DWT.NONE;
-        if (noTrimButton.getSelection()) style |= DWT.NO_TRIM;
-        if (closeButton.getSelection()) style |= DWT.CLOSE;
-        if (titleButton.getSelection()) style |= DWT.TITLE;
-        if (minButton.getSelection()) style |= DWT.MIN;
-        if (maxButton.getSelection()) style |= DWT.MAX;
-        if (borderButton.getSelection()) style |= DWT.BORDER;
-        if (resizeButton.getSelection()) style |= DWT.RESIZE;
-        if (onTopButton.getSelection()) style |= DWT.ON_TOP;
-        if (toolButton.getSelection()) style |= DWT.TOOL;
-        if (modelessButton.getSelection()) style |= DWT.MODELESS;
-        if (primaryModalButton.getSelection()) style |= DWT.PRIMARY_MODAL;
-        if (applicationModalButton.getSelection()) style |= DWT.APPLICATION_MODAL;
-        if (systemModalButton.getSelection()) style |= DWT.SYSTEM_MODAL;
-
-        /* Create the shell with or without a parent */
-        if (noParentButton.getSelection ()) {
-            shells [shellCount] = new Shell (style);
-        } else {
-            shells [shellCount] = new Shell (shell, style);
-        }
-        Shell currentShell = shells [shellCount];
-        Button button = new Button(currentShell, DWT.PUSH);
-        button.setBounds(20, 20, 120, 30);
-        Button closeButton = new Button(currentShell, DWT.PUSH);
-        closeButton.setBounds(160, 20, 120, 30);
-        closeButton.setText(ControlExample.getResourceString("Close"));
-        closeButton.addListener(DWT.Selection, new class(currentShell) Listener {
-            Shell s;
-            this( Shell s ){ this.s = s; }
-            public void handleEvent(Event event) {
-                s.dispose();
-            }
-        });
-
-        /* Set the size, title, and image, and open the shell */
-        currentShell.setSize (300, 100);
-        currentShell.setText (ControlExample.getResourceString("Title") ~ to!(char[])(shellCount));
-        if (imageButton.getSelection()) currentShell.setImage(instance.images[ControlExample.ciTarget]);
-        if (backgroundImageButton.getSelection()) currentShell.setBackgroundImage(instance.images[ControlExample.ciBackground]);
-        hookListeners (currentShell);
-        currentShell.open ();
-        shellCount++;
-    }
-
-    /**
-     * Creates the "Control" group.
-     */
-    void createControlGroup () {
-        /*
-         * Create the "Control" group.  This is the group on the
-         * right half of each example tab.  It consists of the
-         * style group, the 'other' group and the size group.
-         */
-        controlGroup = new Group (tabFolderPage, DWT.NONE);
-        controlGroup.setLayout (new GridLayout (2, true));
-        controlGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        controlGroup.setText (ControlExample.getResourceString("Parameters"));
-
-        /* Create a group for the decoration style controls */
-        styleGroup = new Group (controlGroup, DWT.NONE);
-        styleGroup.setLayout (new GridLayout ());
-        styleGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false, 1, 3));
-        styleGroup.setText (ControlExample.getResourceString("Decoration_Styles"));
-
-        /* Create a group for the modal style controls */
-        modalStyleGroup = new Group (controlGroup, DWT.NONE);
-        modalStyleGroup.setLayout (new GridLayout ());
-        modalStyleGroup.setLayoutData (new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        modalStyleGroup.setText (ControlExample.getResourceString("Modal_Styles"));
-
-        /* Create a group for the 'other' controls */
-        otherGroup = new Group (controlGroup, DWT.NONE);
-        otherGroup.setLayout (new GridLayout ());
-        otherGroup.setLayoutData (new GridData(DWT.FILL, DWT.FILL, false, false));
-        otherGroup.setText (ControlExample.getResourceString("Other"));
-
-        /* Create a group for the parent style controls */
-        parentStyleGroup = new Group (controlGroup, DWT.NONE);
-        parentStyleGroup.setLayout (new GridLayout ());
-        GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        parentStyleGroup.setLayoutData (gridData);
-        parentStyleGroup.setText (ControlExample.getResourceString("Parent"));
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-
-        /* Create the parent style buttons */
-        noParentButton = new Button (parentStyleGroup, DWT.RADIO);
-        noParentButton.setText (ControlExample.getResourceString("No_Parent"));
-        parentButton = new Button (parentStyleGroup, DWT.RADIO);
-        parentButton.setText (ControlExample.getResourceString("Parent"));
-
-        /* Create the decoration style buttons */
-        noTrimButton = new Button (styleGroup, DWT.CHECK);
-        noTrimButton.setText ("DWT.NO_TRIM");
-        closeButton = new Button (styleGroup, DWT.CHECK);
-        closeButton.setText ("DWT.CLOSE");
-        titleButton = new Button (styleGroup, DWT.CHECK);
-        titleButton.setText ("DWT.TITLE");
-        minButton = new Button (styleGroup, DWT.CHECK);
-        minButton.setText ("DWT.MIN");
-        maxButton = new Button (styleGroup, DWT.CHECK);
-        maxButton.setText ("DWT.MAX");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-        resizeButton = new Button (styleGroup, DWT.CHECK);
-        resizeButton.setText ("DWT.RESIZE");
-        onTopButton = new Button (styleGroup, DWT.CHECK);
-        onTopButton.setText ("DWT.ON_TOP");
-        toolButton = new Button (styleGroup, DWT.CHECK);
-        toolButton.setText ("DWT.TOOL");
-
-        /* Create the modal style buttons */
-        modelessButton = new Button (modalStyleGroup, DWT.RADIO);
-        modelessButton.setText ("DWT.MODELESS");
-        primaryModalButton = new Button (modalStyleGroup, DWT.RADIO);
-        primaryModalButton.setText ("DWT.PRIMARY_MODAL");
-        applicationModalButton = new Button (modalStyleGroup, DWT.RADIO);
-        applicationModalButton.setText ("DWT.APPLICATION_MODAL");
-        systemModalButton = new Button (modalStyleGroup, DWT.RADIO);
-        systemModalButton.setText ("DWT.SYSTEM_MODAL");
-
-        /* Create the 'other' buttons */
-        imageButton = new Button (otherGroup, DWT.CHECK);
-        imageButton.setText (ControlExample.getResourceString("Image"));
-        backgroundImageButton = new Button(otherGroup, DWT.CHECK);
-        backgroundImageButton.setText(ControlExample.getResourceString("BackgroundImage"));
-
-        /* Create the "create" and "closeAll" buttons */
-        createButton = new Button (controlGroup, DWT.NONE);
-        GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_END);
-        createButton.setLayoutData (gridData);
-        createButton.setText (ControlExample.getResourceString("Create_Shell"));
-        closeAllButton = new Button (controlGroup, DWT.NONE);
-        gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
-        closeAllButton.setText (ControlExample.getResourceString("Close_All_Shells"));
-        closeAllButton.setLayoutData (gridData);
-
-        /* Add the listeners */
-        createButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                createButtonSelected(e);
-            }
-        });
-        closeAllButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                closeAllShells ();
-            }
-        });
-        SelectionListener decorationButtonListener = new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent event) {
-                decorationButtonSelected(event);
-            }
-        };
-        noTrimButton.addSelectionListener (decorationButtonListener);
-        closeButton.addSelectionListener (decorationButtonListener);
-        titleButton.addSelectionListener (decorationButtonListener);
-        minButton.addSelectionListener (decorationButtonListener);
-        maxButton.addSelectionListener (decorationButtonListener);
-        borderButton.addSelectionListener (decorationButtonListener);
-        resizeButton.addSelectionListener (decorationButtonListener);
-        applicationModalButton.addSelectionListener (decorationButtonListener);
-        systemModalButton.addSelectionListener (decorationButtonListener);
-
-        /* Set the default state */
-        noParentButton.setSelection (true);
-        modelessButton.setSelection (true);
-        backgroundImageButton.setSelection(false);
-    }
-
-    /**
-     * Handle a decoration button selection event.
-     *
-     * @param event org.eclipse.swt.events.SelectionEvent
-     */
-    public void decorationButtonSelected(SelectionEvent event) {
-
-        /* Make sure if the modal style is DWT.APPLICATION_MODAL or
-         * DWT.SYSTEM_MODAL the style DWT.CLOSE is also selected.
-         * This is to make sure the user can close the shell.
-         */
-        Button widget = cast(Button) event.widget;
-        if (widget is applicationModalButton || widget is systemModalButton) {
-            if (widget.getSelection()) {
-                closeButton.setSelection (true);
-                noTrimButton.setSelection (false);
-            }
-            return;
-        }
-        if (widget is closeButton) {
-            if (applicationModalButton.getSelection() || systemModalButton.getSelection()) {
-                closeButton.setSelection (true);
-            }
-        }
-        /*
-         * Make sure if the No Trim button is selected then
-         * all other decoration buttons are deselected.
-         */
-        if (widget.getSelection() && widget !is noTrimButton) {
-            noTrimButton.setSelection (false);
-            return;
-        }
-        if (widget.getSelection() && widget is noTrimButton) {
-            if (applicationModalButton.getSelection() || systemModalButton.getSelection()) {
-                noTrimButton.setSelection (false);
-                return;
-            }
-            closeButton.setSelection (false);
-            titleButton.setSelection (false);
-            minButton.setSelection (false);
-            maxButton.setSelection (false);
-            borderButton.setSelection (false);
-            resizeButton.setSelection (false);
-            return;
-        }
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Shell";
-    }
-}
--- a/dwtexamples/controlexample/SliderTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,285 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.SliderTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Group;
-import dwt.widgets.Slider;
-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;
-    Group sliderGroup;
-
-    /* Spinner widgets added to the "Control" group */
-    Spinner incrementSpinner, pageIncrementSpinner, thumbSpinner;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-        super.createControlWidgets ();
-        createThumbGroup ();
-        createIncrementGroup ();
-        createPageIncrementGroup ();
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the slider */
-        sliderGroup = new Group (exampleGroup, DWT.NONE);
-        sliderGroup.setLayout (new GridLayout ());
-        sliderGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        sliderGroup.setText ("Slider");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (horizontalButton.getSelection ()) style |= DWT.HORIZONTAL;
-        if (verticalButton.getSelection ()) style |= DWT.VERTICAL;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        slider1 = new Slider(sliderGroup, style);
-    }
-
-    /**
-     * Create a group of widgets to control the increment
-     * attribute of the example widget.
-     */
-    void createIncrementGroup() {
-
-        /* Create the group */
-        Group incrementGroup = new Group (controlGroup, DWT.NONE);
-        incrementGroup.setLayout (new GridLayout ());
-        incrementGroup.setText (ControlExample.getResourceString("Increment"));
-        incrementGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        incrementSpinner = new Spinner (incrementGroup, DWT.BORDER);
-        incrementSpinner.setMaximum (100000);
-        incrementSpinner.setSelection (getDefaultIncrement());
-        incrementSpinner.setPageIncrement (100);
-        incrementSpinner.setIncrement (1);
-        incrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        incrementSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                setWidgetIncrement ();
-            }
-        });
-    }
-
-    /**
-     * Create a group of widgets to control the page increment
-     * attribute of the example widget.
-     */
-    void createPageIncrementGroup() {
-
-        /* Create the group */
-        Group pageIncrementGroup = new Group (controlGroup, DWT.NONE);
-        pageIncrementGroup.setLayout (new GridLayout ());
-        pageIncrementGroup.setText (ControlExample.getResourceString("Page_Increment"));
-        pageIncrementGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        pageIncrementSpinner = new Spinner (pageIncrementGroup, DWT.BORDER);
-        pageIncrementSpinner.setMaximum (100000);
-        pageIncrementSpinner.setSelection (getDefaultPageIncrement());
-        pageIncrementSpinner.setPageIncrement (100);
-        pageIncrementSpinner.setIncrement (1);
-        pageIncrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        pageIncrementSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetPageIncrement ();
-            }
-        });
-    }
-
-    /**
-     * Create a group of widgets to control the thumb
-     * attribute of the example widget.
-     */
-    void createThumbGroup() {
-
-        /* Create the group */
-        Group thumbGroup = new Group (controlGroup, DWT.NONE);
-        thumbGroup.setLayout (new GridLayout ());
-        thumbGroup.setText (ControlExample.getResourceString("Thumb"));
-        thumbGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        thumbSpinner = new Spinner (thumbGroup, DWT.BORDER);
-        thumbSpinner.setMaximum (100000);
-        thumbSpinner.setSelection (getDefaultThumb());
-        thumbSpinner.setPageIncrement (100);
-        thumbSpinner.setIncrement (1);
-        thumbSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        thumbSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetThumb ();
-            }
-        });
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Selection", "ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Slider";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        if (!instance.startup) {
-            setWidgetIncrement ();
-            setWidgetPageIncrement ();
-            setWidgetThumb ();
-        }
-    }
-
-    /**
-     * Gets the default maximum of the "Example" widgets.
-     */
-    int getDefaultMaximum () {
-        return slider1.getMaximum();
-    }
-
-    /**
-     * Gets the default minimim of the "Example" widgets.
-     */
-    int getDefaultMinimum () {
-        return slider1.getMinimum();
-    }
-
-    /**
-     * Gets the default selection of the "Example" widgets.
-     */
-    int getDefaultSelection () {
-        return slider1.getSelection();
-    }
-
-    /**
-     * Gets the default increment of the "Example" widgets.
-     */
-    int getDefaultIncrement () {
-        return slider1.getIncrement();
-    }
-
-    /**
-     * Gets the default page increment of the "Example" widgets.
-     */
-    int getDefaultPageIncrement () {
-        return slider1.getPageIncrement();
-    }
-
-    /**
-     * Gets the default thumb of the "Example" widgets.
-     */
-    int getDefaultThumb () {
-        return slider1.getThumb();
-    }
-
-    /**
-     * Sets the increment of the "Example" widgets.
-     */
-    void setWidgetIncrement () {
-        slider1.setIncrement (incrementSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMaximum () {
-        slider1.setMaximum (maximumSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMinimum () {
-        slider1.setMinimum (minimumSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the page increment of the "Example" widgets.
-     */
-    void setWidgetPageIncrement () {
-        slider1.setPageIncrement (pageIncrementSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the selection of the "Example" widgets.
-     */
-    void setWidgetSelection () {
-        slider1.setSelection (selectionSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the thumb of the "Example" widgets.
-     */
-    void setWidgetThumb () {
-        slider1.setThumb (thumbSpinner.getSelection ());
-    }
-}
--- a/dwtexamples/controlexample/SpinnerTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.SpinnerTab;
-
-
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.Spinner;
-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 */
-    Spinner spinner1;
-    Group spinnerGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button readOnlyButton, wrapButton;
-
-    /* Spinner widgets added to the "Control" group */
-    Spinner incrementSpinner, pageIncrementSpinner, digitsSpinner;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-        super.createControlWidgets ();
-        createIncrementGroup ();
-        createPageIncrementGroup ();
-        createDigitsGroup ();
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the spinner */
-        spinnerGroup = new Group (exampleGroup, DWT.NONE);
-        spinnerGroup.setLayout (new GridLayout ());
-        spinnerGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        spinnerGroup.setText ("Spinner");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (readOnlyButton.getSelection ()) style |= DWT.READ_ONLY;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (wrapButton.getSelection ()) style |= DWT.WRAP;
-
-        /* Create the example widgets */
-        spinner1 = new Spinner (spinnerGroup, style);
-    }
-
-    /**
-     * Create a group of widgets to control the increment
-     * attribute of the example widget.
-     */
-    void createIncrementGroup() {
-
-        /* Create the group */
-        Group incrementGroup = new Group (controlGroup, DWT.NONE);
-        incrementGroup.setLayout (new GridLayout ());
-        incrementGroup.setText (ControlExample.getResourceString("Increment"));
-        incrementGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        incrementSpinner = new Spinner (incrementGroup, DWT.BORDER);
-        incrementSpinner.setMaximum (100000);
-        incrementSpinner.setSelection (getDefaultIncrement());
-        incrementSpinner.setPageIncrement (100);
-        incrementSpinner.setIncrement (1);
-        incrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        incrementSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                setWidgetIncrement ();
-            }
-        });
-    }
-
-    /**
-     * Create a group of widgets to control the page increment
-     * attribute of the example widget.
-     */
-    void createPageIncrementGroup() {
-
-        /* Create the group */
-        Group pageIncrementGroup = new Group (controlGroup, DWT.NONE);
-        pageIncrementGroup.setLayout (new GridLayout ());
-        pageIncrementGroup.setText (ControlExample.getResourceString("Page_Increment"));
-        pageIncrementGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        pageIncrementSpinner = new Spinner (pageIncrementGroup, DWT.BORDER);
-        pageIncrementSpinner.setMaximum (100000);
-        pageIncrementSpinner.setSelection (getDefaultPageIncrement());
-        pageIncrementSpinner.setPageIncrement (100);
-        pageIncrementSpinner.setIncrement (1);
-        pageIncrementSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        pageIncrementSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetPageIncrement ();
-            }
-        });
-    }
-
-    /**
-     * Create a group of widgets to control the digits
-     * attribute of the example widget.
-     */
-    void createDigitsGroup() {
-
-        /* Create the group */
-        Group digitsGroup = new Group (controlGroup, DWT.NONE);
-        digitsGroup.setLayout (new GridLayout ());
-        digitsGroup.setText (ControlExample.getResourceString("Digits"));
-        digitsGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL));
-
-        /* Create the Spinner widget */
-        digitsSpinner = new Spinner (digitsGroup, DWT.BORDER);
-        digitsSpinner.setMaximum (100000);
-        digitsSpinner.setSelection (getDefaultDigits());
-        digitsSpinner.setPageIncrement (100);
-        digitsSpinner.setIncrement (1);
-        digitsSpinner.setLayoutData (new GridData (DWT.FILL, DWT.CENTER, true, false));
-
-        /* Add the listeners */
-        digitsSpinner.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                setWidgetDigits ();
-            }
-        });
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        super.createTabFolderPage (tabFolder);
-
-        /*
-         * Add a resize listener to the tabFolderPage so that
-         * if the user types into the example widget to change
-         * its preferred size, and then resizes the shell, we
-         * recalculate the preferred size correctly.
-         */
-        tabFolderPage.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent e) {
-                setExampleWidgetSize ();
-            }
-        });
-
-        return tabFolderPage;
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        orientationButtons = false;
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        readOnlyButton = new Button (styleGroup, DWT.CHECK);
-        readOnlyButton.setText ("DWT.READ_ONLY");
-        wrapButton = new Button (styleGroup, DWT.CHECK);
-        wrapButton.setText ("DWT.WRAP");
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Selection", "ToolTipText"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Spinner";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        readOnlyButton.setSelection ((spinner1.getStyle () & DWT.READ_ONLY) !is 0);
-        wrapButton.setSelection ((spinner1.getStyle () & DWT.WRAP) !is 0);
-        if (!instance.startup) {
-            setWidgetIncrement ();
-            setWidgetPageIncrement ();
-            setWidgetDigits ();
-        }
-    }
-
-    /**
-     * Gets the default maximum of the "Example" widgets.
-     */
-    int getDefaultMaximum () {
-        return spinner1.getMaximum();
-    }
-
-    /**
-     * Gets the default minimim of the "Example" widgets.
-     */
-    int getDefaultMinimum () {
-        return spinner1.getMinimum();
-    }
-
-    /**
-     * Gets the default selection of the "Example" widgets.
-     */
-    int getDefaultSelection () {
-        return spinner1.getSelection();
-    }
-
-    /**
-     * Gets the default increment of the "Example" widgets.
-     */
-    int getDefaultIncrement () {
-        return spinner1.getIncrement();
-    }
-
-    /**
-     * Gets the default page increment of the "Example" widgets.
-     */
-    int getDefaultPageIncrement () {
-        return spinner1.getPageIncrement();
-    }
-
-    /**
-     * Gets the default digits of the "Example" widgets.
-     */
-    int getDefaultDigits () {
-        return spinner1.getDigits();
-    }
-
-    /**
-     * Sets the increment of the "Example" widgets.
-     */
-    void setWidgetIncrement () {
-        spinner1.setIncrement (incrementSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMaximum () {
-        spinner1.setMaximum (maximumSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the minimim of the "Example" widgets.
-     */
-    void setWidgetMinimum () {
-        spinner1.setMinimum (minimumSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the page increment of the "Example" widgets.
-     */
-    void setWidgetPageIncrement () {
-        spinner1.setPageIncrement (pageIncrementSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the digits of the "Example" widgets.
-     */
-    void setWidgetDigits () {
-        spinner1.setDigits (digitsSpinner.getSelection ());
-    }
-
-    /**
-     * Sets the selection of the "Example" widgets.
-     */
-    void setWidgetSelection () {
-        spinner1.setSelection (selectionSpinner.getSelection ());
-    }
-}
--- a/dwtexamples/controlexample/StyledTextTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,356 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.StyledTextTab;
-
-
-import dwt.dwthelper.ByteArrayInputStream;
-
-
-import dwt.DWT;
-import dwt.custom.StyleRange;
-import dwt.custom.StyledText;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.graphics.Color;
-import dwt.graphics.Image;
-import dwt.graphics.ImageData;
-import dwt.graphics.Point;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.Display;
-import dwt.widgets.Group;
-import dwt.widgets.Label;
-import dwt.widgets.TabFolder;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.ScrollableTab;
-import dwtexamples.controlexample.ControlExample;
-import tango.core.Exception;
-import tango.io.Stdout;
-
-class StyledTextTab : ScrollableTab {
-    /* Example widgets and groups that contain them */
-    StyledText styledText;
-    Group styledTextGroup, styledTextStyleGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button wrapButton, readOnlyButton, fullSelectionButton;
-
-    /* Buttons for adding StyleRanges to StyledText */
-    Button boldButton, italicButton, redButton, yellowButton, underlineButton, strikeoutButton;
-    Image boldImage, italicImage, redImage, yellowImage, underlineImage, strikeoutImage;
-
-    /* Variables for saving state. */
-    char[] text;
-    StyleRange[] styleRanges;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates a bitmap image.
-     */
-    Image createBitmapImage (Display display, void[] sourceData, void[] maskData ) {
-        InputStream sourceStream = new ByteArrayInputStream ( cast(byte[])sourceData );
-        InputStream maskStream = new ByteArrayInputStream ( cast(byte[])maskData );
-        ImageData source = new ImageData (sourceStream);
-        ImageData mask = new ImageData (maskStream);
-        Image result = new Image (display, source, mask);
-        try {
-            sourceStream.close ();
-            maskStream.close ();
-        } catch (IOException e) {
-            Stderr.formatln( "Stacktrace: {}", e );
-        }
-        return result;
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     */
-    void createControlWidgets () {
-        super.createControlWidgets ();
-
-        /* Add a group for modifying the StyledText widget */
-        createStyledTextStyleGroup ();
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the styled text widget */
-        styledTextGroup = new Group (exampleGroup, DWT.NONE);
-        styledTextGroup.setLayout (new GridLayout ());
-        styledTextGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        styledTextGroup.setText ("StyledText");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (singleButton.getSelection ()) style |= DWT.SINGLE;
-        if (multiButton.getSelection ()) style |= DWT.MULTI;
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (wrapButton.getSelection ()) style |= DWT.WRAP;
-        if (readOnlyButton.getSelection ()) style |= DWT.READ_ONLY;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (fullSelectionButton.getSelection ()) style |= DWT.FULL_SELECTION;
-
-        /* Create the example widgets */
-        styledText = new StyledText (styledTextGroup, style);
-        styledText.setText (ControlExample.getResourceString("Example_string"));
-        styledText.append ("\n");
-        styledText.append (ControlExample.getResourceString("One_Two_Three"));
-
-        if (text !is null) {
-            styledText.setText(text);
-            text = null;
-        }
-        if (styleRanges !is null) {
-            styledText.setStyleRanges(styleRanges);
-            styleRanges = null;
-        }
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        wrapButton = new Button (styleGroup, DWT.CHECK);
-        wrapButton.setText ("DWT.WRAP");
-        readOnlyButton = new Button (styleGroup, DWT.CHECK);
-        readOnlyButton.setText ("DWT.READ_ONLY");
-        fullSelectionButton = new Button (styleGroup, DWT.CHECK);
-        fullSelectionButton.setText ("DWT.FULL_SELECTION");
-    }
-
-    /**
-     * Creates the "StyledText Style" group.
-     */
-    void createStyledTextStyleGroup () {
-        styledTextStyleGroup = new Group (controlGroup, DWT.NONE);
-        styledTextStyleGroup.setText (ControlExample.getResourceString ("StyledText_Styles"));
-        styledTextStyleGroup.setLayout (new GridLayout(6, false));
-        GridData data = new GridData (GridData.HORIZONTAL_ALIGN_FILL);
-        data.horizontalSpan = 2;
-        styledTextStyleGroup.setLayoutData (data);
-
-        /* Get images */
-        boldImage = createBitmapImage (display, import("bold.bmp"), import("bold_mask.bmp"));
-        italicImage = createBitmapImage (display, import("italic.bmp"), import("italic_mask.bmp"));
-        redImage = createBitmapImage (display, import("red.bmp"), import("red_mask.bmp"));
-        yellowImage = createBitmapImage (display, import("yellow.bmp"), import("yellow_mask.bmp"));
-        underlineImage = createBitmapImage (display, import("underline.bmp"), import("underline_mask.bmp"));
-        strikeoutImage = createBitmapImage (display, import("strikeout.bmp"), import("strikeout_mask.bmp"));
-
-        /* Create controls to modify the StyledText */
-        Label label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("StyledText_Style_Instructions"));
-        label.setLayoutData(new GridData(DWT.FILL, DWT.CENTER, false, false, 6, 1));
-        label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("Bold"));
-        label.setLayoutData(new GridData(DWT.END, DWT.CENTER, true, false));
-        boldButton = new Button (styledTextStyleGroup, DWT.PUSH);
-        boldButton.setImage (boldImage);
-        label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("Underline"));
-        label.setLayoutData(new GridData(DWT.END, DWT.CENTER, true, false));
-        underlineButton = new Button (styledTextStyleGroup, DWT.PUSH);
-        underlineButton.setImage (underlineImage);
-        label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("Foreground_Style"));
-        label.setLayoutData(new GridData(DWT.END, DWT.CENTER, true, false));
-        redButton = new Button (styledTextStyleGroup, DWT.PUSH);
-        redButton.setImage (redImage);
-        label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("Italic"));
-        label.setLayoutData(new GridData(DWT.END, DWT.CENTER, true, false));
-        italicButton = new Button (styledTextStyleGroup, DWT.PUSH);
-        italicButton.setImage (italicImage);
-        label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("Strikeout"));
-        label.setLayoutData(new GridData(DWT.END, DWT.CENTER, true, false));
-        strikeoutButton = new Button (styledTextStyleGroup, DWT.PUSH);
-        strikeoutButton.setImage (strikeoutImage);
-        label = new Label (styledTextStyleGroup, DWT.NONE);
-        label.setText (ControlExample.getResourceString ("Background_Style"));
-        label.setLayoutData(new GridData(DWT.END, DWT.CENTER, true, false));
-        yellowButton = new Button (styledTextStyleGroup, DWT.PUSH);
-        yellowButton.setImage (yellowImage);
-        SelectionListener styleListener = new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                Point sel = styledText.getSelectionRange();
-                if ((sel is null) || (sel.y is 0)) return;
-                StyleRange style;
-                for (int i = sel.x; i<sel.x+sel.y; i++) {
-                    StyleRange range = styledText.getStyleRangeAtOffset(i);
-                    if (range !is null) {
-                        style = cast(StyleRange)range.clone();
-                        style.start = i;
-                        style.length = 1;
-                    } else {
-                        style = new StyleRange(i, 1, null, null, DWT.NORMAL);
-                    }
-                    if (e.widget is boldButton) {
-                        style.fontStyle ^= DWT.BOLD;
-                    } else if (e.widget is italicButton) {
-                        style.fontStyle ^= DWT.ITALIC;
-                    } else if (e.widget is underlineButton) {
-                        style.underline = !style.underline;
-                    } else if (e.widget is strikeoutButton) {
-                        style.strikeout = !style.strikeout;
-                    }
-                    styledText.setStyleRange(style);
-                }
-                styledText.setSelectionRange(sel.x + sel.y, 0);
-            }
-        };
-        SelectionListener colorListener = new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                Point sel = styledText.getSelectionRange();
-                if ((sel is null) || (sel.y is 0)) return;
-                Color fg = null, bg = null;
-                if (e.widget is redButton) {
-                    fg = display.getSystemColor (DWT.COLOR_RED);
-                } else if (e.widget is yellowButton) {
-                    bg = display.getSystemColor (DWT.COLOR_YELLOW);
-                }
-                StyleRange style;
-                for (int i = sel.x; i<sel.x+sel.y; i++) {
-                    StyleRange range = styledText.getStyleRangeAtOffset(i);
-                    if (range !is null) {
-                        style = cast(StyleRange)range.clone();
-                        style.start = i;
-                        style.length = 1;
-                        style.foreground = style.foreground !is null ? null : fg;
-                        style.background = style.background !is null ? null : bg;
-                    } else {
-                        style = new StyleRange (i, 1, fg, bg, DWT.NORMAL);
-                    }
-                    styledText.setStyleRange(style);
-                }
-                styledText.setSelectionRange(sel.x + sel.y, 0);
-            }
-        };
-        boldButton.addSelectionListener(styleListener);
-        italicButton.addSelectionListener(styleListener);
-        underlineButton.addSelectionListener(styleListener);
-        strikeoutButton.addSelectionListener(styleListener);
-        redButton.addSelectionListener(colorListener);
-        yellowButton.addSelectionListener(colorListener);
-        yellowButton.addDisposeListener(new class() DisposeListener {
-            public void widgetDisposed (DisposeEvent e) {
-                boldImage.dispose();
-                italicImage.dispose();
-                redImage.dispose();
-                yellowImage.dispose();
-                underlineImage.dispose();
-                strikeoutImage.dispose();
-            }
-        });
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        super.createTabFolderPage (tabFolder);
-
-        /*
-         * Add a resize listener to the tabFolderPage so that
-         * if the user types into the example widget to change
-         * its preferred size, and then resizes the shell, we
-         * recalculate the preferred size correctly.
-         */
-        tabFolderPage.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent e) {
-                setExampleWidgetSize ();
-            }
-        });
-
-        return tabFolderPage;
-    }
-
-    /**
-     * Disposes the "Example" widgets.
-     */
-    void disposeExampleWidgets () {
-        /* store the state of the styledText if applicable */
-        if (styledText !is null) {
-            styleRanges = styledText.getStyleRanges();
-            text = styledText.getText();
-        }
-        super.disposeExampleWidgets();
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) styledText];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["CaretOffset", "DoubleClickEnabled", "Editable", "HorizontalIndex", "HorizontalPixel", "Orientation", "Selection", "Tabs", "Text", "TextLimit", "ToolTipText", "TopIndex", "TopPixel", "WordWrap"];
-    }
-
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "StyledText";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        wrapButton.setSelection ((styledText.getStyle () & DWT.WRAP) !is 0);
-        readOnlyButton.setSelection ((styledText.getStyle () & DWT.READ_ONLY) !is 0);
-        fullSelectionButton.setSelection ((styledText.getStyle () & DWT.FULL_SELECTION) !is 0);
-        horizontalButton.setEnabled ((styledText.getStyle () & DWT.MULTI) !is 0);
-        verticalButton.setEnabled ((styledText.getStyle () & DWT.MULTI) !is 0);
-        wrapButton.setEnabled ((styledText.getStyle () & DWT.MULTI) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/Tab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1732 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.Tab;
-
-
-
-import dwt.DWT;
-import dwt.events.ArmEvent;
-import dwt.events.ControlEvent;
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.FocusEvent;
-import dwt.events.HelpEvent;
-import dwt.events.KeyAdapter;
-import dwt.events.KeyEvent;
-import dwt.events.MenuEvent;
-import dwt.events.ModifyEvent;
-import dwt.events.MouseEvent;
-import dwt.events.PaintEvent;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.events.ShellEvent;
-import dwt.events.TraverseEvent;
-import dwt.events.TreeEvent;
-import dwt.events.TypedEvent;
-import dwt.events.VerifyEvent;
-import dwt.graphics.Color;
-import dwt.graphics.Font;
-import dwt.graphics.FontData;
-import dwt.graphics.GC;
-import dwt.graphics.Image;
-import dwt.graphics.Point;
-import dwt.graphics.RGB;
-import dwt.graphics.Rectangle;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.ColorDialog;
-import dwt.widgets.Combo;
-import dwt.widgets.Composite;
-import dwt.widgets.Control;
-import dwt.widgets.Display;
-import dwt.widgets.Event;
-import dwt.widgets.FontDialog;
-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;
-import dwt.widgets.Text;
-import dwt.widgets.Tree;
-import dwt.widgets.TreeItem;
-import dwt.widgets.ToolTip;
-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;
-
-import tango.io.Stdout;
-
-/**
- * <code>Tab</code> is the abstract superclass of every page
- * in the example's tab folder.  Each page in the tab folder
- * describes a control.
- *
- * A Tab itself is not a control but instead provides a
- * hierarchy with which to share code that is common to
- * every page in the folder.
- *
- * A typical page in a Tab contains a two column composite.
- * The left column contains the "Example" group.  The right
- * column contains "Control" group.  The "Control" group
- * contains controls that allow the user to interact with
- * the example control.  The "Control" group typically
- * contains a "Style", "Other" and "Size" group.  Subclasses
- * can override these defaults to augment a group or stop
- * a group from being created.
- */
-    struct EventName {
-        char[] name;
-        int id;
-    }
-abstract class Tab {
-    Shell shell;
-    Display display;
-
-    /* Common control buttons */
-    Button borderButton, enabledButton, visibleButton, backgroundImageButton, popupMenuButton;
-    Button preferredButton, tooSmallButton, smallButton, largeButton, fillHButton, fillVButton;
-
-    /* Common groups and composites */
-    Composite tabFolderPage;
-    Group exampleGroup, controlGroup, listenersGroup, otherGroup, sizeGroup, styleGroup, colorGroup, backgroundModeGroup;
-
-    /* Controlling instance */
-    const ControlExample instance;
-
-    /* Sizing constants for the "Size" group */
-    static const int TOO_SMALL_SIZE = 10;
-    static const int SMALL_SIZE     = 50;
-    static const int LARGE_SIZE     = 100;
-
-    /* Right-to-left support */
-    static const bool RTL_SUPPORT_ENABLE = false;
-    Group orientationGroup;
-    Button rtlButton, ltrButton, defaultOrietationButton;
-
-    /* Controls and resources for the "Colors & Fonts" group */
-    static const int IMAGE_SIZE = 12;
-    static const int FOREGROUND_COLOR = 0;
-    static const int BACKGROUND_COLOR = 1;
-    static const int FONT = 2;
-    Table colorAndFontTable;
-    ColorDialog colorDialog;
-    FontDialog fontDialog;
-    Color foregroundColor, backgroundColor;
-    Font font;
-
-    /* Controls and resources for the "Background Mode" group */
-    Combo backgroundModeCombo;
-    Button backgroundModeImageButton, backgroundModeColorButton;
-
-    /* Event logging variables and controls */
-    Text eventConsole;
-    bool logging = false;
-    bool [] eventsFilter;
-
-    /* Set/Get API controls */
-    Combo nameCombo;
-    Label returnTypeLabel;
-    Button getButton, setButton;
-    Text setText, getText;
-
-    static EventName[] EVENT_NAMES = [
-        {"Activate"[], DWT.Activate},
-        {"Arm", DWT.Arm},
-        {"Close", DWT.Close},
-        {"Collapse", DWT.Collapse},
-        {"Deactivate", DWT.Deactivate},
-        {"DefaultSelection", DWT.DefaultSelection},
-        {"Deiconify", DWT.Deiconify},
-        {"Dispose", DWT.Dispose},
-        {"DragDetect", DWT.DragDetect},
-        {"EraseItem", DWT.EraseItem},
-        {"Expand", DWT.Expand},
-        {"FocusIn", DWT.FocusIn},
-        {"FocusOut", DWT.FocusOut},
-        {"HardKeyDown", DWT.HardKeyDown},
-        {"HardKeyUp", DWT.HardKeyUp},
-        {"Help", DWT.Help},
-        {"Hide", DWT.Hide},
-        {"Iconify", DWT.Iconify},
-        {"KeyDown", DWT.KeyDown},
-        {"KeyUp", DWT.KeyUp},
-        {"MeasureItem", DWT.MeasureItem},
-        {"MenuDetect", DWT.MenuDetect},
-        {"Modify", DWT.Modify},
-        {"MouseDoubleClick", DWT.MouseDoubleClick},
-        {"MouseDown", DWT.MouseDown},
-        {"MouseEnter", DWT.MouseEnter},
-        {"MouseExit", DWT.MouseExit},
-        {"MouseHover", DWT.MouseHover},
-        {"MouseMove", DWT.MouseMove},
-        {"MouseUp", DWT.MouseUp},
-        {"MouseWheel", DWT.MouseWheel},
-        {"Move", DWT.Move},
-        {"Paint", DWT.Paint},
-        {"PaintItem", DWT.PaintItem},
-        {"Resize", DWT.Resize},
-        {"Selection", DWT.Selection},
-        {"SetData", DWT.SetData},
-//      {"Settings", DWT.Settings},  // note: this event only goes to Display
-        {"Show", DWT.Show},
-        {"Traverse", DWT.Traverse},
-        {"Verify", DWT.Verify}
-    ];
-
-    bool samplePopup = false;
-
-
-    struct ReflectTypeInfo{
-        ReflectMethodInfo[ char[] ] methods;
-    }
-    struct ReflectMethodInfo{
-        TypeInfo returnType;
-        TypeInfo[] argumentTypes;
-    }
-    static ReflectTypeInfo[ ClassInfo ] reflectTypeInfos;
-
-    static ReflectMethodInfo createMethodInfo( TypeInfo ret, TypeInfo[] args ... ){
-        ReflectMethodInfo res;
-        res.returnType = ret;
-        foreach( arg; args ){
-            res.argumentTypes ~= arg;
-        }
-        return res;
-    }
-    static void createSetterGetter( ref ReflectTypeInfo ti, char[] name,  TypeInfo type ){
-        ti.methods[ "get" ~ name ] = createMethodInfo( type );
-        ti.methods[ "set" ~ name ] = createMethodInfo( typeid(void), type );
-    }
-
-    static void registerTypes(){
-        if( reflectTypeInfos.length > 0 ){
-            return;
-        }
-
-        {
-            ReflectTypeInfo ti;
-            createSetterGetter( ti, "Selection",   typeid(bool) );
-            createSetterGetter( ti, "Text",        typeid(char[]) );
-            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
-            reflectTypeInfos[ Button.classinfo ] = ti;
-        }
-        {
-            ReflectTypeInfo ti;
-            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
-            reflectTypeInfos[ Canvas.classinfo ] = ti;
-        }
-        {
-            ReflectTypeInfo ti;
-            createSetterGetter( ti, "Orientation", typeid(int) );
-            createSetterGetter( ti, "Items", typeid(char[]) );
-            createSetterGetter( ti, "Selection", typeid(Point) );
-            createSetterGetter( ti, "Text", typeid(char[]) );
-            createSetterGetter( ti, "TextLimit", typeid(int) );
-            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
-            createSetterGetter( ti, "VisibleItemCount", typeid(int) );
-            reflectTypeInfos[ Combo.classinfo ] = ti;
-        }
-        {
-            ReflectTypeInfo ti;
-            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, "Message", typeid(int) );
-            createSetterGetter( ti, "Text", typeid(char[]) );
-            reflectTypeInfos[ ToolTip.classinfo ] = ti;
-        }
-        {
-            ReflectTypeInfo ti;
-            createSetterGetter( ti, "ColumnOrder", typeid(int[]) );
-            createSetterGetter( ti, "Selection", typeid(TreeItem[]) );
-            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
-            createSetterGetter( ti, "TopItem", typeid(int) );
-            reflectTypeInfos[ Tree.classinfo ] = ti;
-        }
-
-        /+{
-            ReflectTypeInfo ti;
-            createSetterGetter( ti, "Editable", typeid(bool) );
-            createSetterGetter( ti, "Items", typeid(char[]) );
-            createSetterGetter( ti, "Selection", typeid(Point) );
-            createSetterGetter( ti, "Text", typeid(char[]) );
-            createSetterGetter( ti, "TextLimit", typeid(int) );
-            createSetterGetter( ti, "ToolTipText", typeid(char[]) );
-            createSetterGetter( ti, "VisibleItemCount", typeid(int) );
-            reflectTypeInfos[ CCombo.classinfo ] = ti;
-        }+/
-    }
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        this.instance = instance;
-        registerTypes();
-    }
-
-    /**
-     * Creates the "Control" group.  The "Control" group
-     * is typically the right hand column in the tab.
-     */
-    void createControlGroup () {
-
-        /*
-         * Create the "Control" group.  This is the group on the
-         * right half of each example tab.  It consists of the
-         * "Style" group, the "Other" group and the "Size" group.
-         */
-        controlGroup = new Group (tabFolderPage, DWT.NONE);
-        controlGroup.setLayout (new GridLayout (2, true));
-        controlGroup.setLayoutData (new GridData(DWT.FILL, DWT.FILL, false, false));
-        controlGroup.setText (ControlExample.getResourceString("Parameters"));
-
-        /* Create individual groups inside the "Control" group */
-        createStyleGroup ();
-        createOtherGroup ();
-        createSetGetGroup();
-        createSizeGroup ();
-        createColorAndFontGroup ();
-        if (RTL_SUPPORT_ENABLE) {
-            createOrientationGroup ();
-        }
-
-        /*
-         * For each Button child in the style group, add a selection
-         * listener that will recreate the example controls.  If the
-         * style group button is a RADIO button, ensure that the radio
-         * button is selected before recreating the example controls.
-         * When the user selects a RADIO button, the current RADIO
-         * button in the group is deselected and the new RADIO button
-         * is selected automatically.  The listeners are notified for
-         * both these operations but typically only do work when a RADIO
-         * button is selected.
-         */
-        SelectionListener selectionListener = new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                if ((event.widget.getStyle () & DWT.RADIO) !is 0) {
-                    if (!(cast(Button) event.widget).getSelection ()) return;
-                }
-                recreateExampleWidgets ();
-            }
-        };
-        Control [] children = styleGroup.getChildren ();
-        for (int i=0; i<children.length; i++) {
-            if ( auto button = cast(Button)children [i]) {
-                button.addSelectionListener (selectionListener);
-            } else {
-                if ( auto composite = cast(Composite)children [i]) {
-                    /* Look down one more level of children in the style group. */
-                    Control [] grandchildren = composite.getChildren ();
-                    for (int j=0; j<grandchildren.length; j++) {
-                        if ( auto button = cast(Button)grandchildren [j]) {
-                            button.addSelectionListener (selectionListener);
-                        }
-                    }
-                }
-            }
-        }
-        if (RTL_SUPPORT_ENABLE) {
-            rtlButton.addSelectionListener (selectionListener);
-            ltrButton.addSelectionListener (selectionListener);
-            defaultOrietationButton.addSelectionListener (selectionListener);
-        }
-    }
-
-    /**
-     * Append the Set/Get API controls to the "Other" group.
-     */
-    void createSetGetGroup() {
-        /*
-         * Create the button to access set/get API functionality.
-         */
-        char[] [] methodNames = getMethodNames ();
-        if (methodNames !is null) {
-            Button setGetButton = new Button (otherGroup, DWT.PUSH);
-            setGetButton.setText (ControlExample.getResourceString ("Set_Get"));
-            setGetButton.setLayoutData(new GridData(DWT.FILL, DWT.CENTER, false, false));
-            setGetButton.addSelectionListener (new class(methodNames) SelectionAdapter {
-                char[][] mths;
-                this( char[][] mths ){ this.mths = mths; }
-                public void widgetSelected (SelectionEvent e) {
-                    Button button = cast(Button)e.widget;
-                    Point pt = button.getLocation();
-                    pt = e.display.map(button, null, pt);
-                    createSetGetDialog(pt.x, pt.y, mths);
-                }
-            });
-        }
-    }
-
-    /**
-     * Creates the "Control" widget children.
-     * Subclasses override this method to augment
-     * the standard controls created in the "Style",
-     * "Other" and "Size" groups.
-     */
-    void createControlWidgets () {
-    }
-
-    /**
-     * Creates the "Colors and Fonts" group. This is typically
-     * a child of the "Control" group. Subclasses override
-     * this method to customize color and font settings.
-     */
-    void createColorAndFontGroup () {
-        /* Create the group. */
-        colorGroup = new Group(controlGroup, DWT.NONE);
-        colorGroup.setLayout (new GridLayout (2, true));
-        colorGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        colorGroup.setText (ControlExample.getResourceString ("Colors"));
-        colorAndFontTable = new Table(colorGroup, DWT.BORDER | DWT.V_SCROLL);
-        colorAndFontTable.setLayoutData(new GridData(DWT.FILL, DWT.BEGINNING, true, false, 2, 1));
-        TableItem item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Foreground_Color"));
-        colorAndFontTable.setSelection(0);
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Background_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Font"));
-        Button changeButton = new Button (colorGroup, DWT.PUSH);
-        changeButton.setText(ControlExample.getResourceString("Change"));
-        changeButton.setLayoutData(new GridData(DWT.FILL, DWT.CENTER, false, false));
-        Button defaultsButton = new Button (colorGroup, DWT.PUSH);
-        defaultsButton.setText(ControlExample.getResourceString("Defaults"));
-        defaultsButton.setLayoutData(new GridData(DWT.FILL, DWT.CENTER, false, false));
-
-        /* Add listeners to set/reset colors and fonts. */
-        colorDialog = new ColorDialog (shell);
-        fontDialog = new FontDialog (shell);
-        colorAndFontTable.addSelectionListener(new class() SelectionAdapter {
-            public void widgetDefaultSelected(SelectionEvent event) {
-                changeFontOrColor (colorAndFontTable.getSelectionIndex());
-            }
-        });
-        changeButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent event) {
-                changeFontOrColor (colorAndFontTable.getSelectionIndex());
-            }
-        });
-        defaultsButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                resetColorsAndFonts ();
-            }
-        });
-        shell.addDisposeListener(new class() DisposeListener {
-            public void widgetDisposed(DisposeEvent event) {
-                if (foregroundColor !is null) foregroundColor.dispose();
-                if (backgroundColor !is null) backgroundColor.dispose();
-                if (font !is null) font.dispose();
-                foregroundColor = null;
-                backgroundColor = null;
-                font = null;
-                if (colorAndFontTable !is null && !colorAndFontTable.isDisposed()) {
-                    TableItem [] items = colorAndFontTable.getItems();
-                    for (int i = 0; i < items.length; i++) {
-                        Image image = items[i].getImage();
-                        if (image !is null) image.dispose();
-                    }
-                }
-            }
-        });
-    }
-
-    void changeFontOrColor(int index) {
-        switch (index) {
-            case FOREGROUND_COLOR: {
-                Color oldColor = foregroundColor;
-                if (oldColor is null) {
-                    Control [] controls = getExampleControls ();
-                    if (controls.length > 0) oldColor = controls [0].getForeground ();
-                }
-                if (oldColor !is null) colorDialog.setRGB(oldColor.getRGB()); // seed dialog with current color
-                RGB rgb = colorDialog.open();
-                if (rgb is null) return;
-                oldColor = foregroundColor; // save old foreground color to dispose when done
-                foregroundColor = new Color (display, rgb);
-                setExampleWidgetForeground ();
-                if (oldColor !is null) oldColor.dispose ();
-            }
-            break;
-            case BACKGROUND_COLOR: {
-                Color oldColor = backgroundColor;
-                if (oldColor is null) {
-                    Control [] controls = getExampleControls ();
-                    if (controls.length > 0) oldColor = controls [0].getBackground (); // seed dialog with current color
-                }
-                if (oldColor !is null) colorDialog.setRGB(oldColor.getRGB());
-                RGB rgb = colorDialog.open();
-                if (rgb is null) return;
-                oldColor = backgroundColor; // save old background color to dispose when done
-                backgroundColor = new Color (display, rgb);
-                setExampleWidgetBackground ();
-                if (oldColor !is null) oldColor.dispose ();
-            }
-            break;
-            case FONT: {
-                Font oldFont = font;
-                if (oldFont is null) {
-                    Control [] controls = getExampleControls ();
-                    if (controls.length > 0) oldFont = controls [0].getFont ();
-                }
-                if (oldFont !is null) fontDialog.setFontList(oldFont.getFontData()); // seed dialog with current font
-                FontData fontData = fontDialog.open ();
-                if (fontData is null) return;
-                oldFont = font; // dispose old font when done
-                font = new Font (display, fontData);
-                setExampleWidgetFont ();
-                setExampleWidgetSize ();
-                if (oldFont !is null) oldFont.dispose ();
-            }
-            break;
-            default:
-        }
-    }
-
-    /**
-     * Creates the "Other" group.  This is typically
-     * a child of the "Control" group.
-     */
-    void createOtherGroup () {
-        /* Create the group */
-        otherGroup = new Group (controlGroup, DWT.NONE);
-        otherGroup.setLayout (new GridLayout ());
-        otherGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        otherGroup.setText (ControlExample.getResourceString("Other"));
-
-        /* Create the controls */
-        enabledButton = new Button(otherGroup, DWT.CHECK);
-        enabledButton.setText(ControlExample.getResourceString("Enabled"));
-        visibleButton = new Button(otherGroup, DWT.CHECK);
-        visibleButton.setText(ControlExample.getResourceString("Visible"));
-        backgroundImageButton = new Button(otherGroup, DWT.CHECK);
-        backgroundImageButton.setText(ControlExample.getResourceString("BackgroundImage"));
-        popupMenuButton = new Button(otherGroup, DWT.CHECK);
-        popupMenuButton.setText(ControlExample.getResourceString("PopupMenu"));
-
-        /* Add the listeners */
-        enabledButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetEnabled ();
-            }
-        });
-        visibleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetVisibility ();
-            }
-        });
-        backgroundImageButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetBackgroundImage ();
-            }
-        });
-        popupMenuButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetPopupMenu ();
-            }
-        });
-
-        /* Set the default state */
-        enabledButton.setSelection(true);
-        visibleButton.setSelection(true);
-        backgroundImageButton.setSelection(false);
-        popupMenuButton.setSelection(false);
-    }
-
-    /**
-     * Creates the "Background Mode" group.
-     */
-    void createBackgroundModeGroup () {
-        // note that this method must be called after createExampleWidgets
-        if (getExampleControls ().length is 0) return;
-
-        /* Create the group */
-        backgroundModeGroup = new Group (controlGroup, DWT.NONE);
-        backgroundModeGroup.setLayout (new GridLayout ());
-        backgroundModeGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        backgroundModeGroup.setText (ControlExample.getResourceString("Background_Mode"));
-
-        /* Create the controls */
-        backgroundModeCombo = new Combo(backgroundModeGroup, DWT.READ_ONLY);
-        backgroundModeCombo.setItems(["DWT.INHERIT_NONE", "DWT.INHERIT_DEFAULT", "DWT.INHERIT_FORCE"]);
-        backgroundModeImageButton = new Button(backgroundModeGroup, DWT.CHECK);
-        backgroundModeImageButton.setText(ControlExample.getResourceString("BackgroundImage"));
-        backgroundModeColorButton = new Button(backgroundModeGroup, DWT.CHECK);
-        backgroundModeColorButton.setText(ControlExample.getResourceString("BackgroundColor"));
-
-        /* Add the listeners */
-        backgroundModeCombo.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleGroupBackgroundMode ();
-            }
-        });
-        backgroundModeImageButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleGroupBackgroundImage ();
-            }
-        });
-        backgroundModeColorButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleGroupBackgroundColor ();
-            }
-        });
-
-        /* Set the default state */
-        backgroundModeCombo.setText(backgroundModeCombo.getItem(0));
-        backgroundModeImageButton.setSelection(false);
-        backgroundModeColorButton.setSelection(false);
-    }
-
-    /**
-     * Create the event console popup menu.
-     */
-    void createEventConsolePopup () {
-        Menu popup = new Menu (shell, DWT.POP_UP);
-        eventConsole.setMenu (popup);
-
-        MenuItem cut = new MenuItem (popup, DWT.PUSH);
-        cut.setText (ControlExample.getResourceString("MenuItem_Cut"));
-        cut.addListener (DWT.Selection, new class() Listener {
-            public void handleEvent (Event event) {
-                eventConsole.cut ();
-            }
-        });
-        MenuItem copy = new MenuItem (popup, DWT.PUSH);
-        copy.setText (ControlExample.getResourceString("MenuItem_Copy"));
-        copy.addListener (DWT.Selection, new class() Listener {
-            public void handleEvent (Event event) {
-                eventConsole.copy ();
-            }
-        });
-        MenuItem paste = new MenuItem (popup, DWT.PUSH);
-        paste.setText (ControlExample.getResourceString("MenuItem_Paste"));
-        paste.addListener (DWT.Selection, new class() Listener {
-            public void handleEvent (Event event) {
-                eventConsole.paste ();
-            }
-        });
-        new MenuItem (popup, DWT.SEPARATOR);
-        MenuItem selectAll = new MenuItem (popup, DWT.PUSH);
-        selectAll.setText(ControlExample.getResourceString("MenuItem_SelectAll"));
-        selectAll.addListener (DWT.Selection, new class() Listener {
-            public void handleEvent (Event event) {
-                eventConsole.selectAll ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.  The "Example" group
-     * is typically the left hand column in the tab.
-     */
-    void createExampleGroup () {
-        exampleGroup = new Group (tabFolderPage, DWT.NONE);
-        exampleGroup.setLayout (new GridLayout ());
-        exampleGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-    }
-
-    /**
-     * Creates the "Example" widget children of the "Example" group.
-     * Subclasses override this method to create the particular
-     * example control.
-     */
-    void createExampleWidgets () {
-        /* Do nothing */
-    }
-
-    /**
-     * Creates and opens the "Listener selection" dialog.
-     */
-    void createListenerSelectionDialog () {
-        Shell dialog = new Shell (shell, DWT.DIALOG_TRIM | DWT.APPLICATION_MODAL);
-        dialog.setText (ControlExample.getResourceString ("Select_Listeners"));
-        dialog.setLayout (new GridLayout (2, false));
-        Table table = new Table (dialog, DWT.BORDER | DWT.V_SCROLL | DWT.CHECK);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.verticalSpan = 2;
-        table.setLayoutData(data);
-        for (int i = 0; i < EVENT_NAMES.length; i++) {
-            TableItem item = new TableItem (table, DWT.NONE);
-            item.setText( EVENT_NAMES[i].name );
-            item.setChecked (eventsFilter[i]);
-        }
-        char[] [] customNames = getCustomEventNames ();
-        for (int i = 0; i < customNames.length; i++) {
-            TableItem item = new TableItem (table, DWT.NONE);
-            item.setText (customNames[i]);
-            item.setChecked (eventsFilter[EVENT_NAMES.length + i]);
-        }
-        Button selectAll = new Button (dialog, DWT.PUSH);
-        selectAll.setText(ControlExample.getResourceString ("Select_All"));
-        selectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-        selectAll.addSelectionListener (new class(table, customNames) SelectionAdapter {
-            Table tbl;
-            char[][] cn;
-            this( Table tbl, char[][] cn ){ this.tbl = tbl; this.cn = cn; }
-            public void widgetSelected(SelectionEvent e) {
-                TableItem [] items = tbl.getItems();
-                for (int i = 0; i < EVENT_NAMES.length; i++) {
-                    items[i].setChecked(true);
-                }
-                for (int i = 0; i < cn.length; i++) {
-                    items[EVENT_NAMES.length + i].setChecked(true);
-                }
-            }
-        });
-        Button deselectAll = new Button (dialog, DWT.PUSH);
-        deselectAll.setText(ControlExample.getResourceString ("Deselect_All"));
-        deselectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING));
-        deselectAll.addSelectionListener (new class(table, customNames) SelectionAdapter {
-            Table tbl;
-            char[][] cn;
-            this( Table tbl, char[][] cn ){ this.tbl = tbl; this.cn = cn; }
-            public void widgetSelected(SelectionEvent e) {
-                TableItem [] items = tbl.getItems();
-                for (int i = 0; i < EVENT_NAMES.length; i++) {
-                    items[i].setChecked(false);
-                }
-                for (int i = 0; i < cn.length; i++) {
-                    items[EVENT_NAMES.length + i].setChecked(false);
-                }
-            }
-        });
-        new Label(dialog, DWT.NONE); /* Filler */
-        Button ok = new Button (dialog, DWT.PUSH);
-        ok.setText(ControlExample.getResourceString ("OK"));
-        dialog.setDefaultButton(ok);
-        ok.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-        ok.addSelectionListener (new class(dialog, table, customNames ) SelectionAdapter {
-            Shell dlg;
-            Table tbl;
-            char[][] cn;
-            this( Shell dlg, Table tbl, char[][] cn ){ this.tbl = tbl; this.dlg = dlg; this.cn = cn; }
-            public void widgetSelected(SelectionEvent e) {
-                TableItem [] items = tbl.getItems();
-                for (int i = 0; i < EVENT_NAMES.length; i++) {
-                    eventsFilter[i] = items[i].getChecked();
-                }
-                for (int i = 0; i < cn.length; i++) {
-                    eventsFilter[EVENT_NAMES.length + i] = items[EVENT_NAMES.length + i].getChecked();
-                }
-                dlg.dispose();
-            }
-        });
-        dialog.pack ();
-        dialog.open ();
-        while (! dialog.isDisposed()) {
-            if (! display.readAndDispatch()) display.sleep();
-        }
-    }
-
-    /**
-     * Creates the "Listeners" group.  The "Listeners" group
-     * goes below the "Example" and "Control" groups.
-     */
-    void createListenersGroup () {
-        listenersGroup = new Group (tabFolderPage, DWT.NONE);
-        listenersGroup.setLayout (new GridLayout (3, false));
-        listenersGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true, 2, 1));
-        listenersGroup.setText (ControlExample.getResourceString ("Listeners"));
-
-        /*
-         * Create the button to access the 'Listeners' dialog.
-         */
-        Button listenersButton = new Button (listenersGroup, DWT.PUSH);
-        listenersButton.setText (ControlExample.getResourceString ("Select_Listeners"));
-        listenersButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                createListenerSelectionDialog ();
-                recreateExampleWidgets ();
-            }
-        });
-
-        /*
-         * Create the checkbox to add/remove listeners to/from the example widgets.
-         */
-        Button listenCheckbox = new Button (listenersGroup, DWT.CHECK);
-        listenCheckbox.setText (ControlExample.getResourceString ("Listen"));
-        listenCheckbox.addSelectionListener (new class(listenCheckbox) SelectionAdapter {
-            Button lcb;
-            this( Button lcb ){ this.lcb = lcb; }
-            public void widgetSelected(SelectionEvent e) {
-                logging = lcb.getSelection ();
-                recreateExampleWidgets ();
-            }
-        });
-
-        /*
-         * Create the button to clear the text.
-         */
-        Button clearButton = new Button (listenersGroup, DWT.PUSH);
-        clearButton.setText (ControlExample.getResourceString ("Clear"));
-        clearButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-        clearButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent e) {
-                eventConsole.setText ("");
-            }
-        });
-
-        /* Initialize the eventsFilter to log all events. */
-        int customEventCount = getCustomEventNames ().length;
-        eventsFilter = new bool [EVENT_NAMES.length + customEventCount];
-        for (int i = 0; i < EVENT_NAMES.length + customEventCount; i++) {
-            eventsFilter [i] = true;
-        }
-
-        /* Create the event console Text. */
-        eventConsole = new Text (listenersGroup, DWT.BORDER | DWT.MULTI | DWT.V_SCROLL | DWT.H_SCROLL);
-        GridData data = new GridData (GridData.FILL_BOTH);
-        data.horizontalSpan = 3;
-        data.heightHint = 80;
-        eventConsole.setLayoutData (data);
-        createEventConsolePopup ();
-        eventConsole.addKeyListener (new class() KeyAdapter {
-            public void keyPressed (KeyEvent e) {
-                if ((e.keyCode is 'A' || e.keyCode is 'a') && (e.stateMask & DWT.MOD1) !is 0) {
-                    eventConsole.selectAll ();
-                    e.doit = false;
-                }
-            }
-        });
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return null;
-    }
-
-    void createSetGetDialog(int x, int y, char[][] methodNames) {
-        Shell dialog = new Shell(shell, DWT.DIALOG_TRIM | DWT.RESIZE | DWT.MODELESS);
-        dialog.setLayout(new GridLayout(2, false));
-        dialog.setText(getTabText() ~ " " ~ ControlExample.getResourceString ("Set_Get"));
-        nameCombo = new Combo(dialog, DWT.READ_ONLY);
-        nameCombo.setItems(methodNames);
-        nameCombo.setText(methodNames[0]);
-        nameCombo.setVisibleItemCount(methodNames.length);
-        nameCombo.setLayoutData(new GridData(DWT.FILL, DWT.CENTER, false, false));
-        nameCombo.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                resetLabels();
-            }
-        });
-        returnTypeLabel = new Label(dialog, DWT.NONE);
-        returnTypeLabel.setLayoutData(new GridData(DWT.FILL, DWT.BEGINNING, false, false));
-        setButton = new Button(dialog, DWT.PUSH);
-        setButton.setLayoutData(new GridData(DWT.FILL, DWT.BEGINNING, false, false));
-        setButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                setValue();
-                setText.selectAll();
-                setText.setFocus();
-            }
-        });
-        setText = new Text(dialog, DWT.SINGLE | DWT.BORDER);
-        setText.setLayoutData(new GridData(DWT.FILL, DWT.CENTER, false, false));
-        getButton = new Button(dialog, DWT.PUSH);
-        getButton.setLayoutData(new GridData(DWT.FILL, DWT.BEGINNING, false, false));
-        getButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                getValue();
-            }
-        });
-        getText = new Text(dialog, DWT.MULTI | DWT.BORDER | DWT.READ_ONLY | DWT.H_SCROLL | DWT.V_SCROLL);
-        GridData data = new GridData(DWT.FILL, DWT.FILL, true, true);
-        data.widthHint = 240;
-        data.heightHint = 200;
-        getText.setLayoutData(data);
-        resetLabels();
-        dialog.setDefaultButton(setButton);
-        dialog.pack();
-        dialog.setLocation(x, y);
-        dialog.open();
-    }
-
-    void resetLabels() {
-        char[] methodRoot = nameCombo.getText();
-        returnTypeLabel.setText(parameterInfo(methodRoot));
-        setButton.setText(setMethodName(methodRoot));
-        getButton.setText("get" ~ methodRoot);
-        setText.setText("");
-        getText.setText("");
-        getValue();
-        setText.setFocus();
-    }
-
-    char[] setMethodName(char[] methodRoot) {
-        return "set" ~ methodRoot;
-    }
-
-    char[] parameterInfo(char[] methodRoot) {
-        char[] methodName = "get" ~ methodRoot;
-        auto mthi = getMethodInfo( methodName );
-        char[] typeNameString = mthi.returnType.toString;
-//PORTING_LEFT
-
-//        char[] typeName = null;
-//         ClassInfo returnType = getReturnType(methodRoot);
-         bool isArray = false;
-         TypeInfo ti = mthi.returnType;
-
-         if ( auto tia = cast(TypeInfo_Array) mthi.returnType ) {
-             ti = tia.value;
-             isArray = true;
-         }
-         if ( auto tia = cast(TypeInfo_Class ) ti ) {
-         } else if ( auto tia = cast(TypeInfo_Interface ) ti ) {
-         } else {
-         }
-         //char[] typeNameString = typeName;
-         char[] info;
-//         int index = typeName.lastIndexOf('.');
-//         if (index !is -1 && index+1 < typeName.length()) typeNameString = typeName.substring(index+1);
-//         char[] info = ControlExample.getResourceString("Info_" + typeNameString + (isArray ? "A" : ""));
-//         if (isArray) {
-//             typeNameString += "[]";
-//         }
-//         return ControlExample.getResourceString("Parameter_Info", [typeNameString, info]);
-
-        return Format( ControlExample.getResourceString("Parameter_Info"), typeNameString, info );
-    }
-
-    void getValue() {
-//PORTING_LEFT
-/+
-        char[] methodName = "get" + nameCombo.getText();
-        getText.setText("");
-        Widget[] widgets = getExampleWidgets();
-        for (int i = 0; i < widgets.length; i++) {
-            try {
-                java.lang.reflect.Method method = widgets[i].getClass().getMethod(methodName, null);
-                Object result = method.invoke(widgets[i], null);
-                if (result is null) {
-                    getText.append("null");
-                } else if (result.getClass().isArray()) {
-                    int length = java.lang.reflect.Array.getLength(result);
-                    if (length is 0) {
-                        getText.append(result.getClass().getComponentType() + "[0]");
-                    }
-                    for (int j = 0; j < length; j++) {
-                        getText.append(java.lang.reflect.Array.get(result,j).toString() + "\n");
-                    }
-                } else {
-                    getText.append(result.toString());
-                }
-            } catch (Exception e) {
-                getText.append(e.toString());
-            }
-            if (i + 1 < widgets.length) {
-                getText.append("\n\n");
-            }
-        }
-+/
-    }
-
-    private ReflectMethodInfo getMethodInfo( char[] methodName ){
-        Widget[] widgets = getExampleWidgets();
-        if( widgets.length is 0 ){
-            Stdout.formatln( "getWidgets returns null in {}", this.classinfo.name );
-        }
-        if( auto rti = widgets[0].classinfo in reflectTypeInfos ){
-            if( auto mthi = methodName in rti.methods ){
-                return *mthi;
-            }
-            else{
-                Stdout.formatln( "method unknown {} in type {} in {}", methodName, widgets[0].classinfo.name, this.classinfo.name );
-            }
-        }
-        else{
-            Stdout.formatln( "type unknown {} in {}", widgets[0].classinfo.name, this.classinfo.name );
-        }
-    }
-
-    TypeInfo getReturnType(char[] methodRoot) {
-        char[] methodName = "get" ~ methodRoot;
-        auto mthi = getMethodInfo( methodName );
-        return mthi.returnType;
-    }
-
-    void setValue() {
-//PORTING_LEFT
-/+
-        /* The parameter type must be the same as the get method's return type */
-        char[] methodRoot = nameCombo.getText();
-        Class returnType = getReturnType(methodRoot);
-        char[] methodName = setMethodName(methodRoot);
-        char[] value = setText.getText();
-        Widget[] widgets = getExampleWidgets();
-        for (int i = 0; i < widgets.length; i++) {
-            try {
-                java.lang.reflect.Method method = widgets[i].getClass().getMethod(methodName, [returnType]);
-                char[] typeName = returnType.getName();
-                Object[] parameter = null;
-                if (typeName.equals("int")) {
-                    parameter = [new Integer(value)];
-                } else if (typeName.equals("long")) {
-                    parameter = [new Long(value)];
-                } else if (typeName.equals("char")) {
-                    parameter = [value.length() is 1 ? new Character(value.charAt(0)) : new Character('\0')];
-                } else if (typeName.equals("bool")) {
-                    parameter = [new bool(value)];
-                } else if (typeName.equals("java.lang.char[]")) {
-                    parameter = [value];
-                } else if (typeName.equals("org.eclipse.swt.graphics.Point")) {
-                    char[] xy[] = split(value, ',');
-                    parameter = [new Point((new Integer(xy[0])).intValue(),(new Integer(xy[1])).intValue())];
-                } else if (typeName.equals("[I")) {
-                    char[] strings[] = split(value, ',');
-                    int[] ints = new int[strings.length];
-                    for (int j = 0; j < strings.length; j++) {
-                        ints[j] = (new Integer(strings[j])).intValue();
-                    }
-                    parameter = [ints];
-                } else if (typeName.equals("[Ljava.lang.char[];")) {
-                    parameter = [split(value, ',')];
-                } else {
-                    parameter = parameterForType(typeName, value, widgets[i]);
-                }
-                method.invoke(widgets[i], parameter);
-            } catch (Exception e) {
-                getText.setText(e.toString());
-            }
-        }
-+/
-return null;
-    }
-
-    Object[] parameterForType(char[] typeName, char[] value, Widget widget) {
-//PORTING_LEFT
-return null;
-        //return [value];
-    }
-
-    void createOrientationGroup () {
-        /* Create Orientation group*/
-        orientationGroup = new Group (controlGroup, DWT.NONE);
-        orientationGroup.setLayout (new GridLayout());
-        orientationGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        orientationGroup.setText (ControlExample.getResourceString("Orientation"));
-        defaultOrietationButton = new Button (orientationGroup, DWT.RADIO);
-        defaultOrietationButton.setText (ControlExample.getResourceString("Default"));
-        defaultOrietationButton.setSelection (true);
-        ltrButton = new Button (orientationGroup, DWT.RADIO);
-        ltrButton.setText ("DWT.LEFT_TO_RIGHT");
-        rtlButton = new Button (orientationGroup, DWT.RADIO);
-        rtlButton.setText ("DWT.RIGHT_TO_LEFT");
-    }
-
-    /**
-     * Creates the "Size" group.  The "Size" group contains
-     * controls that allow the user to change the size of
-     * the example widgets.
-     */
-    void createSizeGroup () {
-        /* Create the group */
-        sizeGroup = new Group (controlGroup, DWT.NONE);
-        sizeGroup.setLayout (new GridLayout());
-        sizeGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        sizeGroup.setText (ControlExample.getResourceString("Size"));
-
-        /* Create the controls */
-
-        /*
-         * The preferred size of a widget is the size returned
-         * by widget.computeSize (DWT.DEFAULT, DWT.DEFAULT).
-         * This size is defined on a widget by widget basis.
-         * Many widgets will attempt to display their contents.
-         */
-        preferredButton = new Button (sizeGroup, DWT.RADIO);
-        preferredButton.setText (ControlExample.getResourceString("Preferred"));
-        tooSmallButton = new Button (sizeGroup, DWT.RADIO);
-        tooSmallButton.setText ( Format( "{} X {}", TOO_SMALL_SIZE, TOO_SMALL_SIZE));
-        smallButton = new Button(sizeGroup, DWT.RADIO);
-        smallButton.setText (Format( "{} X {}", SMALL_SIZE, SMALL_SIZE));
-        largeButton = new Button (sizeGroup, DWT.RADIO);
-        largeButton.setText (Format( "{} X {}", LARGE_SIZE, LARGE_SIZE));
-        fillHButton = new Button (sizeGroup, DWT.CHECK);
-        fillHButton.setText (ControlExample.getResourceString("Fill_X"));
-        fillVButton = new Button (sizeGroup, DWT.CHECK);
-        fillVButton.setText (ControlExample.getResourceString("Fill_Y"));
-
-        /* Add the listeners */
-        SelectionAdapter selectionListener = new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetSize ();
-            }
-        };
-        preferredButton.addSelectionListener(selectionListener);
-        tooSmallButton.addSelectionListener(selectionListener);
-        smallButton.addSelectionListener(selectionListener);
-        largeButton.addSelectionListener(selectionListener);
-        fillHButton.addSelectionListener(selectionListener);
-        fillVButton.addSelectionListener(selectionListener);
-
-        /* Set the default state */
-        preferredButton.setSelection (true);
-    }
-
-    /**
-     * Creates the "Style" group.  The "Style" group contains
-     * controls that allow the user to change the style of
-     * the example widgets.  Changing a widget "Style" causes
-     * the widget to be destroyed and recreated.
-     */
-    void createStyleGroup () {
-        styleGroup = new Group (controlGroup, DWT.NONE);
-        styleGroup.setLayout (new GridLayout ());
-        styleGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        styleGroup.setText (ControlExample.getResourceString("Styles"));
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        /* Cache the shell and display. */
-        shell = tabFolder.getShell ();
-        display = shell.getDisplay ();
-
-        /* Create a two column page. */
-        tabFolderPage = new Composite (tabFolder, DWT.NONE);
-        tabFolderPage.setLayout (new GridLayout (2, false));
-
-        /* Create the "Example" and "Control" groups. */
-        createExampleGroup ();
-        createControlGroup ();
-
-        /* Create the "Listeners" group under the "Control" group. */
-        createListenersGroup ();
-
-        /* Create and initialize the example and control widgets. */
-        createExampleWidgets ();
-        hookExampleWidgetListeners ();
-        createControlWidgets ();
-        createBackgroundModeGroup ();
-        setExampleWidgetState ();
-
-        return tabFolderPage;
-    }
-
-    void setExampleWidgetPopupMenu() {
-        Control[] controls = getExampleControls();
-        for (int i = 0; i < controls.length; i++) {
-            Control control = controls [i];
-            control.addListener(DWT.MenuDetect, new class(control) Listener {
-                Control ctrl;
-                this( Control ctrl ){ this.ctrl = ctrl; }
-                public void handleEvent(Event event) {
-                    Menu menu = ctrl.getMenu();
-                    if (menu !is null && samplePopup) {
-                        menu.dispose();
-                        menu = null;
-                    }
-                    if (menu is null && popupMenuButton.getSelection()) {
-                        menu = new Menu(shell, DWT.POP_UP);
-                        MenuItem item = new MenuItem(menu, DWT.PUSH);
-                        item.setText("Sample popup menu item");
-                        specialPopupMenuItems(menu, event);
-                        ctrl.setMenu(menu);
-                        samplePopup = true;
-                    }
-                }
-            });
-        }
-    }
-
-    protected void specialPopupMenuItems(Menu menu, Event event) {
-    }
-
-    /**
-     * Disposes the "Example" widgets.
-     */
-    void disposeExampleWidgets () {
-        Widget [] widgets = getExampleWidgets ();
-        for (int i=0; i<widgets.length; i++) {
-            widgets [i].dispose ();
-        }
-    }
-
-    Image colorImage (Color color) {
-        Image image = new Image (display, IMAGE_SIZE, IMAGE_SIZE);
-        GC gc = new GC(image);
-        gc.setBackground(color);
-        Rectangle bounds = image.getBounds();
-        gc.fillRectangle(0, 0, bounds.width, bounds.height);
-        gc.setBackground(display.getSystemColor(DWT.COLOR_BLACK));
-        gc.drawRectangle(0, 0, bounds.width - 1, bounds.height - 1);
-        gc.dispose();
-        return image;
-    }
-
-    Image fontImage (Font font) {
-        Image image = new Image (display, IMAGE_SIZE, IMAGE_SIZE);
-        GC gc = new GC(image);
-        Rectangle bounds = image.getBounds();
-        gc.setBackground(display.getSystemColor(DWT.COLOR_WHITE));
-        gc.fillRectangle(0, 0, bounds.width, bounds.height);
-        gc.setBackground(display.getSystemColor(DWT.COLOR_BLACK));
-        gc.drawRectangle(0, 0, bounds.width - 1, bounds.height - 1);
-        FontData data[] = font.getFontData();
-        int style = data[0].getStyle();
-        switch (style) {
-        case DWT.NORMAL:
-            gc.drawLine(3, 3, 3, 8);
-            gc.drawLine(4, 3, 7, 8);
-            gc.drawLine(8, 3, 8, 8);
-            break;
-        case DWT.BOLD:
-            gc.drawLine(3, 2, 3, 9);
-            gc.drawLine(4, 2, 4, 9);
-            gc.drawLine(5, 2, 7, 2);
-            gc.drawLine(5, 3, 8, 3);
-            gc.drawLine(5, 5, 7, 5);
-            gc.drawLine(5, 6, 7, 6);
-            gc.drawLine(5, 8, 8, 8);
-            gc.drawLine(5, 9, 7, 9);
-            gc.drawLine(7, 4, 8, 4);
-            gc.drawLine(7, 7, 8, 7);
-            break;
-        case DWT.ITALIC:
-            gc.drawLine(6, 2, 8, 2);
-            gc.drawLine(7, 3, 4, 8);
-            gc.drawLine(3, 9, 5, 9);
-            break;
-        case DWT.BOLD | DWT.ITALIC:
-            gc.drawLine(5, 2, 8, 2);
-            gc.drawLine(5, 3, 8, 3);
-            gc.drawLine(6, 4, 4, 7);
-            gc.drawLine(7, 4, 5, 7);
-            gc.drawLine(3, 8, 6, 8);
-            gc.drawLine(3, 9, 6, 9);
-            break;
-        }
-        gc.dispose();
-        return image;
-    }
-
-    /**
-     * Gets the list of custom event names.
-     *
-     * @return an array containing custom event names
-     */
-    char[] [] getCustomEventNames () {
-        return null;
-    }
-
-    /**
-     * Gets the default style for a widget
-     *
-     * @return the default style bit
-     */
-    int getDefaultStyle () {
-        if (ltrButton !is null && ltrButton.getSelection()) {
-            return DWT.LEFT_TO_RIGHT;
-        }
-        if (rtlButton !is null && rtlButton.getSelection()) {
-            return DWT.RIGHT_TO_LEFT;
-        }
-        return DWT.NONE;
-    }
-
-    /**
-     * Gets the "Example" widgets.
-     *
-     * @return an array containing the example widgets
-     */
-    Widget [] getExampleWidgets () {
-        return null;
-    }
-
-    /**
-     * Gets the "Example" controls.
-     * This is the subset of "Example" widgets that are controls.
-     *
-     * @return an array containing the example controls
-     */
-    Control [] getExampleControls () {
-        Widget [] widgets = getExampleWidgets ();
-        Control [] controls = new Control [0];
-        for (int i = 0; i < widgets.length; i++) {
-            if ( auto ctrl = cast(Control)widgets[i]) {
-                Control[] newControls = new Control[controls.length + 1];
-                System.arraycopy(controls, 0, newControls, 0, controls.length);
-                controls = newControls;
-                controls[controls.length - 1] = ctrl;
-            }
-        }
-        return controls;
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        return new Item [0];
-    }
-
-    /**
-     * Gets the short text for the tab folder item.
-     *
-     * @return the short text for the tab item
-     */
-    char[] getShortTabText() {
-        return getTabText();
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     *
-     * @return the text for the tab item
-     */
-    char[] getTabText () {
-        return "";
-    }
-
-    /**
-     * Hooks all listeners to all example controls
-     * and example control items.
-     */
-    void hookExampleWidgetListeners () {
-        if (logging) {
-            Widget[] widgets = getExampleWidgets ();
-            for (int i = 0; i < widgets.length; i++) {
-                hookListeners (widgets [i]);
-            }
-            Item[] exampleItems = getExampleWidgetItems ();
-            for (int i = 0; i < exampleItems.length; i++) {
-                hookListeners (exampleItems [i]);
-            }
-            char[] [] customNames = getCustomEventNames ();
-            for (int i = 0; i < customNames.length; i++) {
-                if (eventsFilter [EVENT_NAMES.length + i]) hookCustomListener (customNames[i]);
-            }
-        }
-    }
-
-    /**
-     * Hooks the custom listener specified by eventName.
-     */
-    void hookCustomListener (char[] eventName) {
-    }
-
-    /**
-     * Hooks all listeners to the specified widget.
-     */
-    void hookListeners (Widget widget) {
-        if (logging) {
-            Listener listener = new class() Listener {
-                public void handleEvent (Event event) {
-                    log (event);
-                }
-            };
-            for (int i = 0; i < EVENT_NAMES.length; i++) {
-                if (eventsFilter [i]) widget.addListener ( EVENT_NAMES[i].id, listener);
-            }
-        }
-    }
-
-    /**
-     * Logs an untyped event to the event console.
-     */
-    void log(Event event) {
-        int i = 0;
-        while (i < EVENT_NAMES.length) {
-            if (EVENT_NAMES[i].id is event.type) break;
-            i++;
-        }
-        char[] str = Format( "{} [{}]: ", EVENT_NAMES[i].name, event.type );
-        switch (event.type) {
-            case DWT.KeyDown:
-            case DWT.KeyUp: str ~= (new KeyEvent (event)).toString (); break;
-            case DWT.MouseDown:
-            case DWT.MouseUp:
-            case DWT.MouseMove:
-            case DWT.MouseEnter:
-            case DWT.MouseExit:
-            case DWT.MouseDoubleClick:
-            case DWT.MouseWheel:
-            case DWT.MouseHover: str ~= (new MouseEvent (event)).toString (); break;
-            case DWT.Paint: str ~= (new PaintEvent (event)).toString (); break;
-            case DWT.Move:
-            case DWT.Resize: str ~= (new ControlEvent (event)).toString (); break;
-            case DWT.Dispose: str ~= (new DisposeEvent (event)).toString (); break;
-            case DWT.Selection:
-            case DWT.DefaultSelection: str ~= (new SelectionEvent (event)).toString (); break;
-            case DWT.FocusIn:
-            case DWT.FocusOut: str ~= (new FocusEvent (event)).toString (); break;
-            case DWT.Expand:
-            case DWT.Collapse: str ~= (new TreeEvent (event)).toString (); break;
-            case DWT.Iconify:
-            case DWT.Deiconify:
-            case DWT.Close:
-            case DWT.Activate:
-            case DWT.Deactivate: str ~=( new ShellEvent (event)).toString (); break;
-            case DWT.Show:
-            case DWT.Hide: str ~= ( null !is cast(Menu)event.widget) ? (new MenuEvent (event)).toString () : event.toString(); break;
-            case DWT.Modify: str ~= (new ModifyEvent (event)).toString (); break;
-            case DWT.Verify: str ~= (new VerifyEvent (event)).toString (); break;
-            case DWT.Help: str ~= (new HelpEvent (event)).toString (); break;
-            case DWT.Arm: str ~= (new ArmEvent (event)).toString (); break;
-            case DWT.Traverse: str ~= (new TraverseEvent (event)).toString (); break;
-            case DWT.HardKeyDown:
-            case DWT.HardKeyUp:
-            case DWT.DragDetect:
-            case DWT.MenuDetect:
-            case DWT.SetData:
-            default: str ~= event.toString ();
-        }
-        eventConsole.append (str);
-        eventConsole.append ("\n");
-    }
-
-    /**
-     * Logs a string to the event console.
-     */
-    void log (char[] string) {
-        eventConsole.append (string);
-        eventConsole.append ("\n");
-    }
-
-    /**
-     * Logs a typed event to the event console.
-     */
-    void log (char[] eventName, TypedEvent event) {
-        eventConsole.append (eventName ~ ": ");
-        eventConsole.append (event.toString ());
-        eventConsole.append ("\n");
-    }
-
-    /**
-     * Recreates the "Example" widgets.
-     */
-    void recreateExampleWidgets () {
-        disposeExampleWidgets ();
-        createExampleWidgets ();
-        hookExampleWidgetListeners ();
-        setExampleWidgetState ();
-    }
-
-    /**
-     * Sets the foreground color, background color, and font
-     * of the "Example" widgets to their default settings.
-     * Subclasses may extend in order to reset other colors
-     * and fonts to default settings as well.
-     */
-    void resetColorsAndFonts () {
-        Color oldColor = foregroundColor;
-        foregroundColor = null;
-        setExampleWidgetForeground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldColor = backgroundColor;
-        backgroundColor = null;
-        setExampleWidgetBackground ();
-        if (oldColor !is null) oldColor.dispose();
-        Font oldFont = font;
-        font = null;
-        setExampleWidgetFont ();
-        setExampleWidgetSize ();
-        if (oldFont !is null) oldFont.dispose();
-    }
-
-    /**
-     * Sets the background color of the "Example" widgets' parent.
-     */
-    void setExampleGroupBackgroundColor () {
-        if (backgroundModeGroup is null) return;
-        exampleGroup.setBackground (backgroundModeColorButton.getSelection () ? display.getSystemColor(DWT.COLOR_BLUE) : null);
-    }
-    /**
-     * Sets the background image of the "Example" widgets' parent.
-     */
-    void setExampleGroupBackgroundImage () {
-        if (backgroundModeGroup is null) return;
-        exampleGroup.setBackgroundImage (backgroundModeImageButton.getSelection () ? instance.images[ControlExample.ciParentBackground] : null);
-    }
-
-    /**
-     * Sets the background mode of the "Example" widgets' parent.
-     */
-    void setExampleGroupBackgroundMode () {
-        if (backgroundModeGroup is null) return;
-        char[] modeString = backgroundModeCombo.getText ();
-        int mode = DWT.INHERIT_NONE;
-        if (modeString=="DWT.INHERIT_DEFAULT") mode = DWT.INHERIT_DEFAULT;
-        if (modeString=="DWT.INHERIT_FORCE") mode = DWT.INHERIT_FORCE;
-        exampleGroup.setBackgroundMode (mode);
-    }
-
-    /**
-     * Sets the background color of the "Example" widgets.
-     */
-    void setExampleWidgetBackground () {
-        if (colorAndFontTable is null) return; // user cannot change color/font on this tab
-        Control [] controls = getExampleControls ();
-        if (!instance.startup) {
-            for (int i = 0; i < controls.length; i++) {
-                controls[i].setBackground (backgroundColor);
-            }
-        }
-        // Set the background color item's image to match the background color of the example widget(s).
-        Color color = backgroundColor;
-        if (controls.length is 0) return;
-        if (color is null) color = controls [0].getBackground ();
-        TableItem item = colorAndFontTable.getItem(BACKGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage (color));
-    }
-
-    /**
-     * Sets the enabled state of the "Example" widgets.
-     */
-    void setExampleWidgetEnabled () {
-        Control [] controls = getExampleControls ();
-        for (int i=0; i<controls.length; i++) {
-            controls [i].setEnabled (enabledButton.getSelection ());
-        }
-    }
-
-    /**
-     * Sets the font of the "Example" widgets.
-     */
-    void setExampleWidgetFont () {
-        if (colorAndFontTable is null) return; // user cannot change color/font on this tab
-        Control [] controls = getExampleControls ();
-        if (!instance.startup) {
-            for (int i = 0; i < controls.length; i++) {
-                controls[i].setFont(font);
-            }
-        }
-        /* Set the font item's image and font to match the font of the example widget(s). */
-        Font ft = font;
-        if (controls.length is 0) return;
-        if (ft is null) ft = controls [0].getFont ();
-        TableItem item = colorAndFontTable.getItem(FONT);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (fontImage (ft));
-        item.setFont(ft);
-        colorAndFontTable.layout ();
-    }
-
-    /**
-     * Sets the foreground color of the "Example" widgets.
-     */
-    void setExampleWidgetForeground () {
-        if (colorAndFontTable is null) return; // user cannot change color/font on this tab
-        Control [] controls = getExampleControls ();
-        if (!instance.startup) {
-            for (int i = 0; i < controls.length; i++) {
-                controls[i].setForeground (foregroundColor);
-            }
-        }
-        /* Set the foreground color item's image to match the foreground color of the example widget(s). */
-        Color color = foregroundColor;
-        if (controls.length is 0) return;
-        if (color is null) color = controls [0].getForeground ();
-        TableItem item = colorAndFontTable.getItem(FOREGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the size of the "Example" widgets.
-     */
-    void setExampleWidgetSize () {
-        int size = DWT.DEFAULT;
-        if (preferredButton is null) return;
-        if (preferredButton.getSelection()) size = DWT.DEFAULT;
-        if (tooSmallButton.getSelection()) size = TOO_SMALL_SIZE;
-        if (smallButton.getSelection()) size = SMALL_SIZE;
-        if (largeButton.getSelection()) size = LARGE_SIZE;
-        Control [] controls = getExampleControls ();
-        for (int i=0; i<controls.length; i++) {
-            GridData gridData = new GridData(size, size);
-            gridData.grabExcessHorizontalSpace = fillHButton.getSelection();
-            gridData.grabExcessVerticalSpace = fillVButton.getSelection();
-            gridData.horizontalAlignment = fillHButton.getSelection() ? DWT.FILL : DWT.LEFT;
-            gridData.verticalAlignment = fillVButton.getSelection() ? DWT.FILL : DWT.TOP;
-            controls [i].setLayoutData (gridData);
-        }
-        tabFolderPage.layout (controls);
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.  Subclasses
-     * reimplement this method to set "Example" widget state
-     * that is specific to the widget.
-     */
-    void setExampleWidgetState () {
-        setExampleWidgetBackground ();
-        setExampleWidgetForeground ();
-        setExampleWidgetFont ();
-        if (!instance.startup) {
-            setExampleWidgetEnabled ();
-            setExampleWidgetVisibility ();
-            setExampleGroupBackgroundMode ();
-            setExampleGroupBackgroundColor ();
-            setExampleGroupBackgroundImage ();
-            setExampleWidgetBackgroundImage ();
-            setExampleWidgetPopupMenu ();
-            setExampleWidgetSize ();
-        }
-        //TEMPORARY CODE
-//      Control [] controls = getExampleControls ();
-//      for (int i=0; i<controls.length; i++) {
-//          log ("Control=" + controls [i] + ", border width=" + controls [i].getBorderWidth ());
-//      }
-    }
-
-    /**
-     * Sets the visibility of the "Example" widgets.
-     */
-    void setExampleWidgetVisibility () {
-        Control [] controls = getExampleControls ();
-        for (int i=0; i<controls.length; i++) {
-            controls [i].setVisible (visibleButton.getSelection ());
-        }
-    }
-
-    /**
-     * Sets the background image of the "Example" widgets.
-     */
-    void setExampleWidgetBackgroundImage () {
-        Control [] controls = getExampleControls ();
-        for (int i=0; i<controls.length; i++) {
-            controls [i].setBackgroundImage (backgroundImageButton.getSelection () ? instance.images[ControlExample.ciBackground] : null);
-        }
-    }
-
-    /**
-     * Splits the given string around matches of the given character.
-     *
-     * This subset of java.lang.String.split(String regex)
-     * uses only code that can be run on CLDC platforms.
-     */
-    char[] [] split (char[] string, char ch) {
-        char[] [] result = new char[][0];
-        int start = 0;
-        int length = string.length;
-        while (start < length) {
-            int end = tango.text.Util.locate( string, ch, start);
-            if (end is string.length ) end = length;
-            char[] substr = string[start .. end];
-            char[] [] newResult = new char[][result.length + 1];
-            System.arraycopy(result, 0, newResult, 0, result.length);
-            newResult [result.length] = substr;
-            result = newResult;
-            start = end + 1;
-        }
-        return result;
-    }
-}
--- a/dwtexamples/controlexample/TabFolderTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.TabFolderTab;
-
-
-
-import dwt.DWT;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Group;
-import dwt.widgets.Item;
-import dwt.widgets.TabFolder;
-import dwt.widgets.TabItem;
-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;
-    Group tabFolderGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button topButton, bottomButton;
-
-    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")];
-        }
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the TabFolder */
-        tabFolderGroup = new Group (exampleGroup, DWT.NONE);
-        tabFolderGroup.setLayout (new GridLayout ());
-        tabFolderGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        tabFolderGroup.setText ("TabFolder");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (topButton.getSelection ()) style |= DWT.TOP;
-        if (bottomButton.getSelection ()) style |= DWT.BOTTOM;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the example widgets */
-        tabFolder1 = new TabFolder (tabFolderGroup, style);
-        for (int i = 0; i < TabItems1.length; i++) {
-            TabItem item = new TabItem(tabFolder1, DWT.NONE);
-            item.setText(TabItems1[i]);
-            item.setToolTipText(Format( ControlExample.getResourceString("Tooltip"), TabItems1[i] ));
-            Text content = new Text(tabFolder1, DWT.WRAP | DWT.MULTI);
-            content.setText(Format( "{}: {}", ControlExample.getResourceString("TabItem_content"), i));
-            item.setControl(content);
-        }
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        topButton = new Button (styleGroup, DWT.RADIO);
-        topButton.setText ("DWT.TOP");
-        topButton.setSelection(true);
-        bottomButton = new Button (styleGroup, DWT.RADIO);
-        bottomButton.setText ("DWT.BOTTOM");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        return tabFolder1.getItems();
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["Selection", "SelectionIndex"];
-    }
-
-    char[] setMethodName(char[] methodRoot) {
-        /* Override to handle special case of int getSelectionIndex()/setSelection(int) */
-        return (methodRoot == "SelectionIndex") ? "setSelection" : "set" ~ methodRoot;
-    }
-
-//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;")) {
-            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());
-            }
-            return new Object[] {items};
-        }
-        return super.parameterForType(typeName, value, widget);
-    }
-+/
-    TabItem findItem(char[] value, TabItem[] items) {
-        for (int i = 0; i < items.length; i++) {
-            TabItem item = items[i];
-            if (item.getText() ==/*eq*/ value) return item;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the short text for the tab folder item.
-     */
-    public char[] getShortTabText() {
-        return "TF";
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "TabFolder";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        topButton.setSelection ((tabFolder1.getStyle () & DWT.TOP) !is 0);
-        bottomButton.setSelection ((tabFolder1.getStyle () & DWT.BOTTOM) !is 0);
-        borderButton.setSelection ((tabFolder1.getStyle () & DWT.BORDER) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/TableTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,718 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.TableTab;
-
-
-
-import dwt.DWT;
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.graphics.Color;
-import dwt.graphics.Font;
-import dwt.graphics.FontData;
-import dwt.graphics.Image;
-import dwt.graphics.Point;
-import dwt.graphics.RGB;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Event;
-import dwt.widgets.Group;
-import dwt.widgets.Item;
-import dwt.widgets.Menu;
-import dwt.widgets.MenuItem;
-import dwt.widgets.Table;
-import dwt.widgets.TableColumn;
-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;
-    Group tableGroup;
-
-    /* Size widgets added to the "Size" group */
-    Button packColumnsButton;
-
-    /* Style widgets added to the "Style" group */
-    Button checkButton, fullSelectionButton, hideSelectionButton;
-
-    /* Other widgets added to the "Other" group */
-    Button multipleColumns, moveableColumns, resizableColumns, headerVisibleButton, sortIndicatorButton, headerImagesButton, linesVisibleButton, subImagesButton;
-
-    /* Controls and resources added to the "Colors and Fonts" group */
-    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 char[] [] columnTitles;
-    static char[][][] tableData;
-
-    Point menuMouseCoords;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    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") ]];
-        }
-    }
-
-    /**
-     * Creates the "Colors and Fonts" group.
-     */
-    void createColorAndFontGroup () {
-        super.createColorAndFontGroup();
-
-        TableItem item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Foreground_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Background_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Font"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Cell_Foreground_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Cell_Background_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Cell_Font"));
-
-        shell.addDisposeListener(new class() DisposeListener {
-            public void widgetDisposed(DisposeEvent event) {
-                if (itemBackgroundColor !is null) itemBackgroundColor.dispose();
-                if (itemForegroundColor !is null) itemForegroundColor.dispose();
-                if (itemFont !is null) itemFont.dispose();
-                if (cellBackgroundColor !is null) cellBackgroundColor.dispose();
-                if (cellForegroundColor !is null) cellForegroundColor.dispose();
-                if (cellFont !is null) cellFont.dispose();
-                itemBackgroundColor = null;
-                itemForegroundColor = null;
-                itemFont = null;
-                cellBackgroundColor = null;
-                cellForegroundColor = null;
-                cellFont = null;
-            }
-        });
-    }
-
-    void changeFontOrColor(int index) {
-        switch (index) {
-        case ITEM_FOREGROUND_COLOR: {
-            Color oldColor = itemForegroundColor;
-            if (oldColor is null) oldColor = table1.getItem (0).getForeground ();
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = itemForegroundColor;
-            itemForegroundColor = new Color (display, rgb);
-            setItemForeground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case ITEM_BACKGROUND_COLOR: {
-            Color oldColor = itemBackgroundColor;
-            if (oldColor is null) oldColor = table1.getItem (0).getBackground ();
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = itemBackgroundColor;
-            itemBackgroundColor = new Color (display, rgb);
-            setItemBackground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case ITEM_FONT: {
-            Font oldFont = itemFont;
-            if (oldFont is null) oldFont = table1.getItem (0).getFont ();
-            fontDialog.setFontList(oldFont.getFontData());
-            FontData fontData = fontDialog.open ();
-            if (fontData is null) return;
-            oldFont = itemFont;
-            itemFont = new Font (display, fontData);
-            setItemFont ();
-            setExampleWidgetSize ();
-            if (oldFont !is null) oldFont.dispose ();
-        }
-        break;
-        case CELL_FOREGROUND_COLOR: {
-            Color oldColor = cellForegroundColor;
-            if (oldColor is null) oldColor = table1.getItem (0).getForeground (1);
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = cellForegroundColor;
-            cellForegroundColor = new Color (display, rgb);
-            setCellForeground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case CELL_BACKGROUND_COLOR: {
-            Color oldColor = cellBackgroundColor;
-            if (oldColor is null) oldColor = table1.getItem (0).getBackground (1);
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = cellBackgroundColor;
-            cellBackgroundColor = new Color (display, rgb);
-            setCellBackground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case CELL_FONT: {
-            Font oldFont = cellFont;
-            if (oldFont is null) oldFont = table1.getItem (0).getFont (1);
-            fontDialog.setFontList(oldFont.getFontData());
-            FontData fontData = fontDialog.open ();
-            if (fontData is null) return;
-            oldFont = cellFont;
-            cellFont = new Font (display, fontData);
-            setCellFont ();
-            setExampleWidgetSize ();
-            if (oldFont !is null) oldFont.dispose ();
-        }
-        break;
-        default:
-            super.changeFontOrColor(index);
-    }
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        linesVisibleButton = new Button (otherGroup, DWT.CHECK);
-        linesVisibleButton.setText (ControlExample.getResourceString("Lines_Visible"));
-        multipleColumns = new Button (otherGroup, DWT.CHECK);
-        multipleColumns.setText (ControlExample.getResourceString("Multiple_Columns"));
-        multipleColumns.setSelection(true);
-        headerVisibleButton = new Button (otherGroup, DWT.CHECK);
-        headerVisibleButton.setText (ControlExample.getResourceString("Header_Visible"));
-        sortIndicatorButton = new Button (otherGroup, DWT.CHECK);
-        sortIndicatorButton.setText (ControlExample.getResourceString("Sort_Indicator"));
-        moveableColumns = new Button (otherGroup, DWT.CHECK);
-        moveableColumns.setText (ControlExample.getResourceString("Moveable_Columns"));
-        resizableColumns = new Button (otherGroup, DWT.CHECK);
-        resizableColumns.setText (ControlExample.getResourceString("Resizable_Columns"));
-        headerImagesButton = new Button (otherGroup, DWT.CHECK);
-        headerImagesButton.setText (ControlExample.getResourceString("Header_Images"));
-        subImagesButton = new Button (otherGroup, DWT.CHECK);
-        subImagesButton.setText (ControlExample.getResourceString("Sub_Images"));
-
-        /* Add the listeners */
-        linesVisibleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetLinesVisible ();
-            }
-        });
-        multipleColumns.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-        headerVisibleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetHeaderVisible ();
-            }
-        });
-        sortIndicatorButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetSortIndicator ();
-            }
-        });
-        moveableColumns.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setColumnsMoveable ();
-            }
-        });
-        resizableColumns.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setColumnsResizable ();
-            }
-        });
-        headerImagesButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-        subImagesButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the table */
-        tableGroup = new Group (exampleGroup, DWT.NONE);
-        tableGroup.setLayout (new GridLayout ());
-        tableGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        tableGroup.setText ("Table");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (singleButton.getSelection ()) style |= DWT.SINGLE;
-        if (multiButton.getSelection ()) style |= DWT.MULTI;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (checkButton.getSelection ()) style |= DWT.CHECK;
-        if (fullSelectionButton.getSelection ()) style |= DWT.FULL_SELECTION;
-        if (hideSelectionButton.getSelection ()) style |= DWT.HIDE_SELECTION;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-
-        /* Create the table widget */
-        table1 = new Table (tableGroup, style);
-
-        /* Fill the table with data */
-        bool multiColumn = multipleColumns.getSelection();
-        if (multiColumn) {
-            for (int i = 0; i < columnTitles.length; i++) {
-                TableColumn tableColumn = new TableColumn(table1, DWT.NONE);
-                tableColumn.setText(columnTitles[i]);
-                tableColumn.setToolTipText( Format( ControlExample.getResourceString("Tooltip"), columnTitles[i] ));
-                if (headerImagesButton.getSelection()) tableColumn.setImage(instance.images [i % 3]);
-            }
-            table1.setSortColumn(table1.getColumn(0));
-        }
-        for (int i=0; i<16; i++) {
-            TableItem item = new TableItem (table1, DWT.NONE);
-            if (multiColumn && subImagesButton.getSelection()) {
-                for (int j = 0; j < columnTitles.length; j++) {
-                    item.setImage(j, instance.images [i % 3]);
-                }
-            } else {
-                item.setImage(instance.images [i % 3]);
-            }
-            setItemText (item, i, ControlExample.getResourceString("Index") ~ to!(char[])(i));
-        }
-        packColumns();
-    }
-
-    void setItemText(TableItem item, int i, char[] node) {
-        int index = i % 3;
-        if (multipleColumns.getSelection()) {
-            tableData [index][0] = node;
-            item.setText (tableData [index]);
-        } else {
-            item.setText (node);
-        }
-    }
-
-    /**
-     * Creates the "Size" group.  The "Size" group contains
-     * controls that allow the user to change the size of
-     * the example widgets.
-     */
-    void createSizeGroup () {
-        super.createSizeGroup();
-
-        packColumnsButton = new Button (sizeGroup, DWT.PUSH);
-        packColumnsButton.setText (ControlExample.getResourceString("Pack_Columns"));
-        packColumnsButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                packColumns ();
-                setExampleWidgetSize ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        checkButton = new Button (styleGroup, DWT.CHECK);
-        checkButton.setText ("DWT.CHECK");
-        fullSelectionButton = new Button (styleGroup, DWT.CHECK);
-        fullSelectionButton.setText ("DWT.FULL_SELECTION");
-        hideSelectionButton = new Button (styleGroup, DWT.CHECK);
-        hideSelectionButton.setText ("DWT.HIDE_SELECTION");
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        Item [] columns = table1.getColumns();
-        Item [] items = table1.getItems();
-        Item [] allItems = new Item [columns.length + items.length];
-        System.arraycopy(columns, 0, allItems, 0, columns.length);
-        System.arraycopy(items, 0, allItems, columns.length, items.length);
-        return allItems;
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["ColumnOrder", "ItemCount", "Selection", "SelectionIndex", "ToolTipText", "TopIndex"];
-    }
-
-    char[] setMethodName(char[] methodRoot) {
-        /* Override to handle special case of int getSelectionIndex()/setSelection(int) */
-        return (methodRoot == "SelectionIndex" ) ? "setSelection" : "set" ~ methodRoot;
-    }
-
-    void packColumns () {
-        int columnCount = table1.getColumnCount();
-        for (int i = 0; i < columnCount; i++) {
-            TableColumn tableColumn = table1.getColumn(i);
-            tableColumn.pack();
-        }
-    }
-
-//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;")) {
-            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());
-            }
-            return new Object[] {items};
-        }
-        return super.parameterForType(typeName, value, widget);
-    }
-+/
-    TableItem findItem(char[] value, TableItem[] items) {
-        for (int i = 0; i < items.length; i++) {
-            TableItem item = items[i];
-            if (item.getText() == value ) return item;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Table";
-    }
-
-    /**
-     * Sets the foreground color, background color, and font
-     * of the "Example" widgets to their default settings.
-     * Also sets foreground and background color of TableItem [0]
-     * to default settings.
-     */
-    void resetColorsAndFonts () {
-        super.resetColorsAndFonts ();
-        Color oldColor = itemForegroundColor;
-        itemForegroundColor = null;
-        setItemForeground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldColor = itemBackgroundColor;
-        itemBackgroundColor = null;
-        setItemBackground ();
-        if (oldColor !is null) oldColor.dispose();
-        Font oldFont = font;
-        itemFont = null;
-        setItemFont ();
-        if (oldFont !is null) oldFont.dispose();
-        oldColor = cellForegroundColor;
-        cellForegroundColor = null;
-        setCellForeground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldColor = cellBackgroundColor;
-        cellBackgroundColor = null;
-        setCellBackground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldFont = font;
-        cellFont = null;
-        setCellFont ();
-        if (oldFont !is null) oldFont.dispose();
-    }
-
-    /**
-     * Sets the background color of the Row 0 TableItem in column 1.
-     */
-    void setCellBackground () {
-        if (!instance.startup) {
-            table1.getItem (0).setBackground (1, cellBackgroundColor);
-        }
-        /* Set the background color item's image to match the background color of the cell. */
-        Color color = cellBackgroundColor;
-        if (color is null) color = table1.getItem (0).getBackground (1);
-        TableItem item = colorAndFontTable.getItem(CELL_BACKGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the foreground color of the Row 0 TableItem in column 1.
-     */
-    void setCellForeground () {
-        if (!instance.startup) {
-            table1.getItem (0).setForeground (1, cellForegroundColor);
-        }
-        /* Set the foreground color item's image to match the foreground color of the cell. */
-        Color color = cellForegroundColor;
-        if (color is null) color = table1.getItem (0).getForeground (1);
-        TableItem item = colorAndFontTable.getItem(CELL_FOREGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the font of the Row 0 TableItem in column 1.
-     */
-    void setCellFont () {
-        if (!instance.startup) {
-            table1.getItem (0).setFont (1, cellFont);
-        }
-        /* Set the font item's image to match the font of the item. */
-        Font ft = cellFont;
-        if (ft is null) ft = table1.getItem (0).getFont (1);
-        TableItem item = colorAndFontTable.getItem(CELL_FONT);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (fontImage(ft));
-        item.setFont(ft);
-        colorAndFontTable.layout ();
-    }
-
-    /**
-     * Sets the background color of TableItem [0].
-     */
-    void setItemBackground () {
-        if (!instance.startup) {
-            table1.getItem (0).setBackground (itemBackgroundColor);
-        }
-        /* Set the background color item's image to match the background color of the item. */
-        Color color = itemBackgroundColor;
-        if (color is null) color = table1.getItem (0).getBackground ();
-        TableItem item = colorAndFontTable.getItem(ITEM_BACKGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the foreground color of TableItem [0].
-     */
-    void setItemForeground () {
-        if (!instance.startup) {
-            table1.getItem (0).setForeground (itemForegroundColor);
-        }
-        /* Set the foreground color item's image to match the foreground color of the item. */
-        Color color = itemForegroundColor;
-        if (color is null) color = table1.getItem (0).getForeground ();
-        TableItem item = colorAndFontTable.getItem(ITEM_FOREGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the font of TableItem 0.
-     */
-    void setItemFont () {
-        if (!instance.startup) {
-            table1.getItem (0).setFont (itemFont);
-        }
-        /* Set the font item's image to match the font of the item. */
-        Font ft = itemFont;
-        if (ft is null) ft = table1.getItem (0).getFont ();
-        TableItem item = colorAndFontTable.getItem(ITEM_FONT);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (fontImage(ft));
-        item.setFont(ft);
-        colorAndFontTable.layout ();
-    }
-
-    /**
-     * Sets the moveable columns state of the "Example" widgets.
-     */
-    void setColumnsMoveable () {
-        bool selection = moveableColumns.getSelection();
-        TableColumn[] columns = table1.getColumns();
-        for (int i = 0; i < columns.length; i++) {
-            columns[i].setMoveable(selection);
-        }
-    }
-
-    /**
-     * Sets the resizable columns state of the "Example" widgets.
-     */
-    void setColumnsResizable () {
-        bool selection = resizableColumns.getSelection();
-        TableColumn[] columns = table1.getColumns();
-        for (int i = 0; i < columns.length; i++) {
-            columns[i].setResizable(selection);
-        }
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        setItemBackground ();
-        setItemForeground ();
-        setItemFont ();
-        setCellBackground ();
-        setCellForeground ();
-        setCellFont ();
-        if (!instance.startup) {
-            setColumnsMoveable ();
-            setColumnsResizable ();
-            setWidgetHeaderVisible ();
-            setWidgetSortIndicator ();
-            setWidgetLinesVisible ();
-        }
-        super.setExampleWidgetState ();
-        checkButton.setSelection ((table1.getStyle () & DWT.CHECK) !is 0);
-        fullSelectionButton.setSelection ((table1.getStyle () & DWT.FULL_SELECTION) !is 0);
-        hideSelectionButton.setSelection ((table1.getStyle () & DWT.HIDE_SELECTION) !is 0);
-        try {
-            TableColumn column = table1.getColumn(0);
-            moveableColumns.setSelection (column.getMoveable());
-            resizableColumns.setSelection (column.getResizable());
-        } catch (IllegalArgumentException ex) {}
-        headerVisibleButton.setSelection (table1.getHeaderVisible());
-        linesVisibleButton.setSelection (table1.getLinesVisible());
-    }
-
-    /**
-     * Sets the header visible state of the "Example" widgets.
-     */
-    void setWidgetHeaderVisible () {
-        table1.setHeaderVisible (headerVisibleButton.getSelection ());
-    }
-
-    /**
-     * Sets the sort indicator state of the "Example" widgets.
-     */
-    void setWidgetSortIndicator () {
-        if (sortIndicatorButton.getSelection ()) {
-            /* Reset to known state: 'down' on column 0. */
-            table1.setSortDirection (DWT.DOWN);
-            TableColumn [] columns = table1.getColumns();
-            for (int i = 0; i < columns.length; i++) {
-                TableColumn column = columns[i];
-                if (i is 0) table1.setSortColumn(column);
-                SelectionListener listener = new class() SelectionAdapter {
-                    public void widgetSelected(SelectionEvent e) {
-                        int sortDirection = DWT.DOWN;
-                        if (e.widget is table1.getSortColumn()) {
-                            /* If the sort column hasn't changed, cycle down -> up -> none. */
-                            switch (table1.getSortDirection ()) {
-                            case DWT.DOWN: sortDirection = DWT.UP; break;
-                            case DWT.UP: sortDirection = DWT.NONE; break;
-                            }
-                        } else {
-                            table1.setSortColumn(cast(TableColumn)e.widget);
-                        }
-                        table1.setSortDirection (sortDirection);
-                    }
-                };
-                column.addSelectionListener(listener);
-                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 = cast(SelectionListener)columns[i].getData("SortListener"); //$NON-NLS-1$
-                if (listener !is null) columns[i].removeSelectionListener(listener);
-            }
-        }
-    }
-
-    /**
-     * Sets the lines visible state of the "Example" widgets.
-     */
-    void setWidgetLinesVisible () {
-        table1.setLinesVisible (linesVisibleButton.getSelection ());
-    }
-
-    protected void specialPopupMenuItems(Menu menu, Event event) {
-        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 class() SelectionAdapter {
-            public void widgetSelected(SelectionEvent e) {
-                eventConsole.append ("getItem(Point(" ~ menuMouseCoords.toString() ~ ")) returned: " ~ ((table1.getItem(menuMouseCoords))).toString);
-                eventConsole.append ("\n");
-            };
-        });
-    }
-}
--- a/dwtexamples/controlexample/TextTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.TextTab;
-
-
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.TabFolder;
-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;
-    Group textGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button wrapButton, readOnlyButton, passwordButton, searchButton, cancelButton;
-    Button leftButton, centerButton, rightButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the text widget */
-        textGroup = new Group (exampleGroup, DWT.NONE);
-        textGroup.setLayout (new GridLayout ());
-        textGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        textGroup.setText ("Text");
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (singleButton.getSelection ()) style |= DWT.SINGLE;
-        if (multiButton.getSelection ()) style |= DWT.MULTI;
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (wrapButton.getSelection ()) style |= DWT.WRAP;
-        if (readOnlyButton.getSelection ()) style |= DWT.READ_ONLY;
-        if (passwordButton.getSelection ()) style |= DWT.PASSWORD;
-        if (searchButton.getSelection ()) style |= DWT.SEARCH;
-        if (cancelButton.getSelection ()) style |= DWT.CANCEL;
-        if (borderButton.getSelection ()) style |= DWT.BORDER;
-        if (leftButton.getSelection ()) style |= DWT.LEFT;
-        if (centerButton.getSelection ()) style |= DWT.CENTER;
-        if (rightButton.getSelection ()) style |= DWT.RIGHT;
-
-        /* Create the example widgets */
-        text = new Text (textGroup, style);
-        text.setText (ControlExample.getResourceString("Example_string") ~ Text.DELIMITER ~ ControlExample.getResourceString("One_Two_Three"));
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        wrapButton = new Button (styleGroup, DWT.CHECK);
-        wrapButton.setText ("DWT.WRAP");
-        readOnlyButton = new Button (styleGroup, DWT.CHECK);
-        readOnlyButton.setText ("DWT.READ_ONLY");
-        passwordButton = new Button (styleGroup, DWT.CHECK);
-        passwordButton.setText ("DWT.PASSWORD");
-        searchButton = new Button (styleGroup, DWT.CHECK);
-        searchButton.setText ("DWT.SEARCH");
-        cancelButton = new Button (styleGroup, DWT.CHECK);
-        cancelButton.setText ("DWT.CANCEL");
-
-        Composite alignmentGroup = new Composite (styleGroup, DWT.NONE);
-        GridLayout layout = new GridLayout ();
-        layout.marginWidth = layout.marginHeight = 0;
-        alignmentGroup.setLayout (layout);
-        alignmentGroup.setLayoutData (new GridData (GridData.FILL_BOTH));
-        leftButton = new Button (alignmentGroup, DWT.RADIO);
-        leftButton.setText ("DWT.LEFT");
-        centerButton = new Button (alignmentGroup, DWT.RADIO);
-        centerButton.setText ("DWT.CENTER");
-        rightButton = new Button (alignmentGroup, DWT.RADIO);
-        rightButton.setText ("DWT.RIGHT");
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        super.createTabFolderPage (tabFolder);
-
-        /*
-         * Add a resize listener to the tabFolderPage so that
-         * if the user types into the example widget to change
-         * its preferred size, and then resizes the shell, we
-         * recalculate the preferred size correctly.
-         */
-        tabFolderPage.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent e) {
-                setExampleWidgetSize ();
-            }
-        });
-
-        return tabFolderPage;
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        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).
-     */
-    char[][] getMethodNames() {
-        return ["DoubleClickEnabled", "EchoChar", "Editable", "Orientation", "Selection", "Tabs", "Text", "TextLimit", "ToolTipText", "TopIndex"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Text";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        wrapButton.setSelection ((text.getStyle () & DWT.WRAP) !is 0);
-        readOnlyButton.setSelection ((text.getStyle () & DWT.READ_ONLY) !is 0);
-        passwordButton.setSelection ((text.getStyle () & DWT.PASSWORD) !is 0);
-        searchButton.setSelection ((text.getStyle () & DWT.SEARCH) !is 0);
-        leftButton.setSelection ((text.getStyle () & DWT.LEFT) !is 0);
-        centerButton.setSelection ((text.getStyle () & DWT.CENTER) !is 0);
-        rightButton.setSelection ((text.getStyle () & DWT.RIGHT) !is 0);
-
-        /* Special case: CANCEL and H_SCROLL have the same value,
-         * so to avoid confusion, only set CANCEL if SEARCH is set. */
-        if ((text.getStyle () & DWT.SEARCH) !is 0) {
-            cancelButton.setSelection ((text.getStyle () & DWT.CANCEL) !is 0);
-            horizontalButton.setSelection (false);
-        } else {
-            cancelButton.setSelection (false);
-            horizontalButton.setSelection ((text.getStyle () & DWT.H_SCROLL) !is 0);
-        }
-
-        passwordButton.setEnabled ((text.getStyle () & DWT.SINGLE) !is 0);
-        searchButton.setEnabled ((text.getStyle () & DWT.SINGLE) !is 0);
-        cancelButton.setEnabled ((text.getStyle () & DWT.SEARCH) !is 0);
-        wrapButton.setEnabled ((text.getStyle () & DWT.MULTI) !is 0);
-        horizontalButton.setEnabled ((text.getStyle () & DWT.MULTI) !is 0);
-        verticalButton.setEnabled ((text.getStyle () & DWT.MULTI) !is 0);
-    }
-}
--- a/dwtexamples/controlexample/ToolBarTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,397 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ToolBarTab;
-
-
-
-import dwt.DWT;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.graphics.Point;
-import dwt.graphics.Rectangle;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Combo;
-import dwt.widgets.Group;
-import dwt.widgets.Item;
-import dwt.widgets.Menu;
-import dwt.widgets.MenuItem;
-import dwt.widgets.ToolBar;
-import dwt.widgets.ToolItem;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-import tango.util.Convert;
-
-class ToolBarTab : Tab {
-    /* Example widgets and groups that contain them */
-    ToolBar imageToolBar, textToolBar, imageTextToolBar;
-    Group imageToolBarGroup, textToolBarGroup, imageTextToolBarGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button horizontalButton, verticalButton, flatButton, shadowOutButton, wrapButton, rightButton;
-
-    /* Other widgets added to the "Other" group */
-    Button comboChildButton;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the image tool bar */
-        imageToolBarGroup = new Group (exampleGroup, DWT.NONE);
-        imageToolBarGroup.setLayout (new GridLayout ());
-        imageToolBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        imageToolBarGroup.setText (ControlExample.getResourceString("Image_ToolBar"));
-
-        /* Create a group for the text tool bar */
-        textToolBarGroup = new Group (exampleGroup, DWT.NONE);
-        textToolBarGroup.setLayout (new GridLayout ());
-        textToolBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        textToolBarGroup.setText (ControlExample.getResourceString("Text_ToolBar"));
-
-        /* Create a group for the image and text tool bar */
-        imageTextToolBarGroup = new Group (exampleGroup, DWT.NONE);
-        imageTextToolBarGroup.setLayout (new GridLayout ());
-        imageTextToolBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        imageTextToolBarGroup.setText (ControlExample.getResourceString("ImageText_ToolBar"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (horizontalButton.getSelection()) style |= DWT.HORIZONTAL;
-        if (verticalButton.getSelection()) style |= DWT.VERTICAL;
-        if (flatButton.getSelection()) style |= DWT.FLAT;
-        if (wrapButton.getSelection()) style |= DWT.WRAP;
-        if (borderButton.getSelection()) style |= DWT.BORDER;
-        if (shadowOutButton.getSelection()) style |= DWT.SHADOW_OUT;
-        if (rightButton.getSelection()) style |= DWT.RIGHT;
-
-        /*
-        * Create the example widgets.
-        *
-        * A tool bar must consist of all image tool
-        * items or all text tool items but not both.
-        */
-
-        /* Create the image tool bar */
-        imageToolBar = new ToolBar (imageToolBarGroup, style);
-        ToolItem item = new ToolItem (imageToolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText("DWT.PUSH");
-        item = new ToolItem (imageToolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.PUSH");
-        item = new ToolItem (imageToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        item = new ToolItem (imageToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        item = new ToolItem (imageToolBar, DWT.CHECK);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setToolTipText ("DWT.CHECK");
-        item = new ToolItem (imageToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        item = new ToolItem (imageToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setToolTipText ("DWT.RADIO");
-        item = new ToolItem (imageToolBar, DWT.SEPARATOR);
-        item.setToolTipText("DWT.SEPARATOR");
-        if (comboChildButton.getSelection ()) {
-            Combo combo = new Combo (imageToolBar, DWT.NONE);
-            combo.setItems (["250", "500", "750"]);
-            combo.setText (combo.getItem (0));
-            combo.pack ();
-            item.setWidth (combo.getSize ().x);
-            item.setControl (combo);
-        }
-        item = new ToolItem (imageToolBar, DWT.DROP_DOWN);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setToolTipText ("DWT.DROP_DOWN");
-        item.addSelectionListener(new DropDownSelectionListener());
-
-        /* Create the text tool bar */
-        textToolBar = new ToolBar (textToolBarGroup, style);
-        item = new ToolItem (textToolBar, DWT.PUSH);
-        item.setText (ControlExample.getResourceString("Push"));
-        item.setToolTipText("DWT.PUSH");
-        item = new ToolItem (textToolBar, DWT.PUSH);
-        item.setText (ControlExample.getResourceString("Push"));
-        item.setToolTipText("DWT.PUSH");
-        item = new ToolItem (textToolBar, DWT.RADIO);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (textToolBar, DWT.RADIO);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (textToolBar, DWT.CHECK);
-        item.setText (ControlExample.getResourceString("Check"));
-        item.setToolTipText("DWT.CHECK");
-        item = new ToolItem (textToolBar, DWT.RADIO);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (textToolBar, DWT.RADIO);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (textToolBar, DWT.SEPARATOR);
-        item.setToolTipText("DWT.SEPARATOR");
-        if (comboChildButton.getSelection ()) {
-            Combo combo = new Combo (textToolBar, DWT.NONE);
-            combo.setItems (["250", "500", "750"]);
-            combo.setText (combo.getItem (0));
-            combo.pack ();
-            item.setWidth (combo.getSize ().x);
-            item.setControl (combo);
-        }
-        item = new ToolItem (textToolBar, DWT.DROP_DOWN);
-        item.setText (ControlExample.getResourceString("Drop_Down"));
-        item.setToolTipText("DWT.DROP_DOWN");
-        item.addSelectionListener(new DropDownSelectionListener());
-
-        /* Create the image and text tool bar */
-        imageTextToolBar = new ToolBar (imageTextToolBarGroup, style);
-        item = new ToolItem (imageTextToolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setText (ControlExample.getResourceString("Push"));
-        item.setToolTipText("DWT.PUSH");
-        item = new ToolItem (imageTextToolBar, DWT.PUSH);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setText (ControlExample.getResourceString("Push"));
-        item.setToolTipText("DWT.PUSH");
-        item = new ToolItem (imageTextToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (imageTextToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciOpenFolder]);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (imageTextToolBar, DWT.CHECK);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setText (ControlExample.getResourceString("Check"));
-        item.setToolTipText("DWT.CHECK");
-        item = new ToolItem (imageTextToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (imageTextToolBar, DWT.RADIO);
-        item.setImage (instance.images[ControlExample.ciClosedFolder]);
-        item.setText (ControlExample.getResourceString("Radio"));
-        item.setToolTipText("DWT.RADIO");
-        item = new ToolItem (imageTextToolBar, DWT.SEPARATOR);
-        item.setToolTipText("DWT.SEPARATOR");
-        if (comboChildButton.getSelection ()) {
-            Combo combo = new Combo (imageTextToolBar, DWT.NONE);
-            combo.setItems (["250", "500", "750"]);
-            combo.setText (combo.getItem (0));
-            combo.pack ();
-            item.setWidth (combo.getSize ().x);
-            item.setControl (combo);
-        }
-        item = new ToolItem (imageTextToolBar, DWT.DROP_DOWN);
-        item.setImage (instance.images[ControlExample.ciTarget]);
-        item.setText (ControlExample.getResourceString("Drop_Down"));
-        item.setToolTipText("DWT.DROP_DOWN");
-        item.addSelectionListener(new DropDownSelectionListener());
-
-        /*
-        * Do not add the selection event for this drop down
-        * tool item.  Without hooking the event, the drop down
-        * widget does nothing special when the drop down area
-        * is selected.
-        */
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        comboChildButton = new Button (otherGroup, DWT.CHECK);
-        comboChildButton.setText (ControlExample.getResourceString("Combo_child"));
-
-        /* Add the listeners */
-        comboChildButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        horizontalButton = new Button (styleGroup, DWT.RADIO);
-        horizontalButton.setText ("DWT.HORIZONTAL");
-        verticalButton = new Button (styleGroup, DWT.RADIO);
-        verticalButton.setText ("DWT.VERTICAL");
-        flatButton = new Button (styleGroup, DWT.CHECK);
-        flatButton.setText ("DWT.FLAT");
-        shadowOutButton = new Button (styleGroup, DWT.CHECK);
-        shadowOutButton.setText ("DWT.SHADOW_OUT");
-        wrapButton = new Button (styleGroup, DWT.CHECK);
-        wrapButton.setText ("DWT.WRAP");
-        rightButton = new Button (styleGroup, DWT.CHECK);
-        rightButton.setText ("DWT.RIGHT");
-        borderButton = new Button (styleGroup, DWT.CHECK);
-        borderButton.setText ("DWT.BORDER");
-    }
-
-    void disposeExampleWidgets () {
-        super.disposeExampleWidgets ();
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        Item [] imageToolBarItems = imageToolBar.getItems();
-        Item [] textToolBarItems = textToolBar.getItems();
-        Item [] imageTextToolBarItems = imageTextToolBar.getItems();
-        Item [] allItems = new Item [imageToolBarItems.length + textToolBarItems.length + imageTextToolBarItems.length];
-        System.arraycopy(imageToolBarItems, 0, allItems, 0, imageToolBarItems.length);
-        System.arraycopy(textToolBarItems, 0, allItems, imageToolBarItems.length, textToolBarItems.length);
-        System.arraycopy(imageTextToolBarItems, 0, allItems, imageToolBarItems.length + textToolBarItems.length, imageTextToolBarItems.length);
-        return allItems;
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) imageToolBar, textToolBar, imageTextToolBar ];
-    }
-
-    /**
-     * Gets the short text for the tab folder item.
-     */
-    public char[] getShortTabText() {
-        return "TB";
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "ToolBar";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        super.setExampleWidgetState ();
-        horizontalButton.setSelection ((imageToolBar.getStyle () & DWT.HORIZONTAL) !is 0);
-        verticalButton.setSelection ((imageToolBar.getStyle () & DWT.VERTICAL) !is 0);
-        flatButton.setSelection ((imageToolBar.getStyle () & DWT.FLAT) !is 0);
-        wrapButton.setSelection ((imageToolBar.getStyle () & DWT.WRAP) !is 0);
-        shadowOutButton.setSelection ((imageToolBar.getStyle () & DWT.SHADOW_OUT) !is 0);
-        borderButton.setSelection ((imageToolBar.getStyle () & DWT.BORDER) !is 0);
-        rightButton.setSelection ((imageToolBar.getStyle () & DWT.RIGHT) !is 0);
-    }
-
-    /**
-     * Listens to widgetSelected() events on DWT.DROP_DOWN type ToolItems
-     * and opens/closes a menu when appropriate.
-     */
-    class DropDownSelectionListener : SelectionAdapter {
-        private Menu    menu = null;
-        private bool visible = false;
-
-        public void widgetSelected(SelectionEvent event) {
-            // Create the menu if it has not already been created
-            if (menu is null) {
-                // Lazy create the menu.
-                menu = new Menu(shell);
-                for (int i = 0; i < 9; ++i) {
-                    final char[] text = ControlExample.getResourceString("DropDownData_" ~ to!(char[])(i));
-                    if (text.length !is 0) {
-                        MenuItem menuItem = new MenuItem(menu, DWT.NONE);
-                        menuItem.setText(text);
-                        /*
-                         * Add a menu selection listener so that the menu is hidden
-                         * when the user selects an item from the drop down menu.
-                         */
-                        menuItem.addSelectionListener(new class() SelectionAdapter {
-                            public void widgetSelected(SelectionEvent e) {
-                                setMenuVisible(false);
-                            }
-                        });
-                    } else {
-                        new MenuItem(menu, DWT.SEPARATOR);
-                    }
-                }
-            }
-
-            /**
-             * A selection event will be fired when a drop down tool
-             * item is selected in the main area and in the drop
-             * down arrow.  Examine the event detail to determine
-             * where the widget was selected.
-             */
-            if (event.detail is DWT.ARROW) {
-                /*
-                 * The drop down arrow was selected.
-                 */
-                if (visible) {
-                    // Hide the menu to give the Arrow the appearance of being a toggle button.
-                    setMenuVisible(false);
-                } else {
-                    // Position the menu below and vertically aligned with the the drop down tool button.
-                    final ToolItem toolItem = cast(ToolItem) event.widget;
-                    final ToolBar  toolBar = toolItem.getParent();
-
-                    Rectangle toolItemBounds = toolItem.getBounds();
-                    Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y));
-                    menu.setLocation(point.x, point.y + toolItemBounds.height);
-                    setMenuVisible(true);
-                }
-            } else {
-                /*
-                 * Main area of drop down tool item selected.
-                 * An application would invoke the code to perform the action for the tool item.
-                 */
-            }
-        }
-        private void setMenuVisible(bool visible) {
-            menu.setVisible(visible);
-            this.visible = visible;
-        }
-    }
-}
--- a/dwtexamples/controlexample/ToolTipTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.ToolTipTab;
-
-
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Composite;
-import dwt.widgets.Group;
-import dwt.widgets.TabFolder;
-import dwt.widgets.ToolTip;
-import dwt.widgets.Tray;
-import dwt.widgets.TrayItem;
-import dwt.widgets.Widget;
-
-import dwtexamples.controlexample.Tab;
-import dwtexamples.controlexample.ControlExample;
-
-class ToolTipTab : Tab {
-
-    /* Example widgets and groups that contain them */
-    ToolTip toolTip1;
-    Group toolTipGroup;
-
-    /* Style widgets added to the "Style" group */
-    Button balloonButton, iconErrorButton, iconInformationButton, iconWarningButton, noIconButton;
-
-    /* Other widgets added to the "Other" group */
-    Button autoHideButton, showInTrayButton;
-
-    Tray tray;
-    TrayItem trayItem;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    this(ControlExample instance) {
-        super(instance);
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the tooltip visibility check box */
-        toolTipGroup = new Group (exampleGroup, DWT.NONE);
-        toolTipGroup.setLayout (new GridLayout ());
-        toolTipGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        toolTipGroup.setText ("ToolTip");
-        visibleButton = new Button(toolTipGroup, DWT.CHECK);
-        visibleButton.setText(ControlExample.getResourceString("Visible"));
-        visibleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetVisibility ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (balloonButton.getSelection ()) style |= DWT.BALLOON;
-        if (iconErrorButton.getSelection ()) style |= DWT.ICON_ERROR;
-        if (iconInformationButton.getSelection ()) style |= DWT.ICON_INFORMATION;
-        if (iconWarningButton.getSelection ()) style |= DWT.ICON_WARNING;
-
-        /* Create the example widgets */
-        toolTip1 = new ToolTip (shell, style);
-        toolTip1.setText(ControlExample.getResourceString("ToolTip_Title"));
-        toolTip1.setMessage(ControlExample.getResourceString("Example_string"));
-    }
-
-    /**
-     * Creates the tab folder page.
-     *
-     * @param tabFolder org.eclipse.swt.widgets.TabFolder
-     * @return the new page for the tab folder
-     */
-    Composite createTabFolderPage (TabFolder tabFolder) {
-        super.createTabFolderPage (tabFolder);
-
-        /*
-         * Add a resize listener to the tabFolderPage so that
-         * if the user types into the example widget to change
-         * its preferred size, and then resizes the shell, we
-         * recalculate the preferred size correctly.
-         */
-        tabFolderPage.addControlListener(new class() ControlAdapter {
-            public void controlResized(ControlEvent e) {
-                setExampleWidgetSize ();
-            }
-        });
-
-        return tabFolderPage;
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup () {
-        super.createStyleGroup ();
-
-        /* Create the extra widgets */
-        balloonButton = new Button (styleGroup, DWT.CHECK);
-        balloonButton.setText ("DWT.BALLOON");
-        iconErrorButton = new Button (styleGroup, DWT.RADIO);
-        iconErrorButton.setText("DWT.ICON_ERROR");
-        iconInformationButton = new Button (styleGroup, DWT.RADIO);
-        iconInformationButton.setText("DWT.ICON_INFORMATION");
-        iconWarningButton = new Button (styleGroup, DWT.RADIO);
-        iconWarningButton.setText("DWT.ICON_WARNING");
-        noIconButton = new Button (styleGroup, DWT.RADIO);
-        noIconButton.setText(ControlExample.getResourceString("No_Icon"));
-    }
-
-    void createColorAndFontGroup () {
-        // ToolTip does not need a color and font group.
-    }
-
-    void createOtherGroup () {
-        /* Create the group */
-        otherGroup = new Group (controlGroup, DWT.NONE);
-        otherGroup.setLayout (new GridLayout ());
-        otherGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, false, false));
-        otherGroup.setText (ControlExample.getResourceString("Other"));
-
-        /* Create the controls */
-        autoHideButton = new Button(otherGroup, DWT.CHECK);
-        autoHideButton.setText(ControlExample.getResourceString("AutoHide"));
-        showInTrayButton = new Button(otherGroup, DWT.CHECK);
-        showInTrayButton.setText(ControlExample.getResourceString("Show_In_Tray"));
-        tray = display.getSystemTray();
-        showInTrayButton.setEnabled(tray !is null);
-
-        /* Add the listeners */
-        autoHideButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setExampleWidgetAutoHide ();
-            }
-        });
-        showInTrayButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                showExampleWidgetInTray ();
-            }
-        });
-        shell.addDisposeListener(new class() DisposeListener {
-            public void widgetDisposed(DisposeEvent event) {
-                disposeTrayItem();
-            }
-        });
-
-        /* Set the default state */
-        autoHideButton.setSelection(true);
-    }
-
-    void createSizeGroup () {
-        // ToolTip does not need a size group.
-    }
-
-    /**
-     * Disposes the "Example" widgets.
-     */
-    void disposeExampleWidgets () {
-        disposeTrayItem();
-        super.disposeExampleWidgets();
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    // Tab uses this for many things - widgets would only get set/get, listeners, and dispose.
-    Widget[] getExampleWidgets () {
-        return [ cast(Widget) toolTip1 ];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["Message", "Text"];
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "ToolTip";
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        showExampleWidgetInTray ();
-        setExampleWidgetAutoHide ();
-        super.setExampleWidgetState ();
-        balloonButton.setSelection ((toolTip1.getStyle () & DWT.BALLOON) !is 0);
-        iconErrorButton.setSelection ((toolTip1.getStyle () & DWT.ICON_ERROR) !is 0);
-        iconInformationButton.setSelection ((toolTip1.getStyle () & DWT.ICON_INFORMATION) !is 0);
-        iconWarningButton.setSelection ((toolTip1.getStyle () & DWT.ICON_WARNING) !is 0);
-        noIconButton.setSelection ((toolTip1.getStyle () & (DWT.ICON_ERROR | DWT.ICON_INFORMATION | DWT.ICON_WARNING)) is 0);
-        autoHideButton.setSelection(toolTip1.getAutoHide());
-    }
-
-    /**
-     * Sets the visibility of the "Example" widgets.
-     */
-    void setExampleWidgetVisibility () {
-        toolTip1.setVisible (visibleButton.getSelection ());
-    }
-
-    /**
-     * Sets the autoHide state of the "Example" widgets.
-     */
-    void setExampleWidgetAutoHide () {
-        toolTip1.setAutoHide(autoHideButton.getSelection ());
-    }
-
-    void showExampleWidgetInTray () {
-        if (showInTrayButton.getSelection ()) {
-            createTrayItem();
-            trayItem.setToolTip(toolTip1);
-        } else {
-            disposeTrayItem();
-        }
-    }
-
-    void createTrayItem() {
-        if (trayItem is null) {
-            trayItem = new TrayItem(tray, DWT.NONE);
-            trayItem.setImage(instance.images[ControlExample.ciTarget]);
-        }
-    }
-
-    void disposeTrayItem() {
-        if (trayItem !is null) {
-            trayItem.setToolTip(null);
-            trayItem.dispose();
-            trayItem = null;
-        }
-    }
-}
--- a/dwtexamples/controlexample/TreeTab.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,823 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwtexamples.controlexample.TreeTab;
-
-
-
-import dwt.DWT;
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.SelectionAdapter;
-import dwt.events.SelectionEvent;
-import dwt.events.SelectionListener;
-import dwt.graphics.Color;
-import dwt.graphics.Font;
-import dwt.graphics.FontData;
-import dwt.graphics.Image;
-import dwt.graphics.Point;
-import dwt.graphics.RGB;
-import dwt.layout.GridData;
-import dwt.layout.GridLayout;
-import dwt.widgets.Button;
-import dwt.widgets.Event;
-import dwt.widgets.Group;
-import dwt.widgets.Item;
-import dwt.widgets.Menu;
-import dwt.widgets.MenuItem;
-import dwt.widgets.TableItem;
-import dwt.widgets.Tree;
-import dwt.widgets.TreeColumn;
-import dwt.widgets.TreeItem;
-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 TreeTab : ScrollableTab {
-    /* Example widgets and groups that contain them */
-    Tree tree1, tree2;
-    TreeItem textNode1, imageNode1;
-    Group treeGroup, imageTreeGroup, itemGroup;
-
-    /* Size widgets added to the "Size" group */
-    Button packColumnsButton;
-
-    /* Style widgets added to the "Style" group */
-    Button checkButton, fullSelectionButton;
-
-    /* Other widgets added to the "Other" group */
-    Button multipleColumns, moveableColumns, resizableColumns, headerVisibleButton, sortIndicatorButton, headerImagesButton, subImagesButton, linesVisibleButton;
-
-    /* Controls and resources added to the "Colors and Fonts" group */
-    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 char[] [] columnTitles;
-
-    static char[][][] tableData;
-
-    Point menuMouseCoords;
-
-    /**
-     * Creates the Tab within a given instance of ControlExample.
-     */
-    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") ] ];
-        }
-    }
-
-    /**
-     * Creates the "Colors and Fonts" group.
-     */
-    void createColorAndFontGroup () {
-        super.createColorAndFontGroup();
-
-        TableItem item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Foreground_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Background_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Item_Font"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Cell_Foreground_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Cell_Background_Color"));
-        item = new TableItem(colorAndFontTable, DWT.None);
-        item.setText(ControlExample.getResourceString ("Cell_Font"));
-
-        shell.addDisposeListener(new class() DisposeListener {
-            public void widgetDisposed(DisposeEvent event) {
-                if (itemBackgroundColor !is null) itemBackgroundColor.dispose();
-                if (itemForegroundColor !is null) itemForegroundColor.dispose();
-                if (itemFont !is null) itemFont.dispose();
-                if (cellBackgroundColor !is null) cellBackgroundColor.dispose();
-                if (cellForegroundColor !is null) cellForegroundColor.dispose();
-                if (cellFont !is null) cellFont.dispose();
-                itemBackgroundColor = null;
-                itemForegroundColor = null;
-                itemFont = null;
-                cellBackgroundColor = null;
-                cellForegroundColor = null;
-                cellFont = null;
-            }
-        });
-    }
-
-    void changeFontOrColor(int index) {
-        switch (index) {
-        case ITEM_FOREGROUND_COLOR: {
-            Color oldColor = itemForegroundColor;
-            if (oldColor is null) oldColor = textNode1.getForeground ();
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = itemForegroundColor;
-            itemForegroundColor = new Color (display, rgb);
-            setItemForeground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case ITEM_BACKGROUND_COLOR: {
-            Color oldColor = itemBackgroundColor;
-            if (oldColor is null) oldColor = textNode1.getBackground ();
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = itemBackgroundColor;
-            itemBackgroundColor = new Color (display, rgb);
-            setItemBackground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case ITEM_FONT: {
-            Font oldFont = itemFont;
-            if (oldFont is null) oldFont = textNode1.getFont ();
-            fontDialog.setFontList(oldFont.getFontData());
-            FontData fontData = fontDialog.open ();
-            if (fontData is null) return;
-            oldFont = itemFont;
-            itemFont = new Font (display, fontData);
-            setItemFont ();
-            setExampleWidgetSize ();
-            if (oldFont !is null) oldFont.dispose ();
-        }
-        break;
-        case CELL_FOREGROUND_COLOR: {
-            Color oldColor = cellForegroundColor;
-            if (oldColor is null) oldColor = textNode1.getForeground (1);
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = cellForegroundColor;
-            cellForegroundColor = new Color (display, rgb);
-            setCellForeground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case CELL_BACKGROUND_COLOR: {
-            Color oldColor = cellBackgroundColor;
-            if (oldColor is null) oldColor = textNode1.getBackground (1);
-            colorDialog.setRGB(oldColor.getRGB());
-            RGB rgb = colorDialog.open();
-            if (rgb is null) return;
-            oldColor = cellBackgroundColor;
-            cellBackgroundColor = new Color (display, rgb);
-            setCellBackground ();
-            if (oldColor !is null) oldColor.dispose ();
-        }
-        break;
-        case CELL_FONT: {
-            Font oldFont = cellFont;
-            if (oldFont is null) oldFont = textNode1.getFont (1);
-            fontDialog.setFontList(oldFont.getFontData());
-            FontData fontData = fontDialog.open ();
-            if (fontData is null) return;
-            oldFont = cellFont;
-            cellFont = new Font (display, fontData);
-            setCellFont ();
-            setExampleWidgetSize ();
-            if (oldFont !is null) oldFont.dispose ();
-        }
-        break;
-        default:
-            super.changeFontOrColor(index);
-        }
-    }
-
-    /**
-     * Creates the "Other" group.
-     */
-    void createOtherGroup () {
-        super.createOtherGroup ();
-
-        /* Create display controls specific to this example */
-        linesVisibleButton = new Button (otherGroup, DWT.CHECK);
-        linesVisibleButton.setText (ControlExample.getResourceString("Lines_Visible"));
-        multipleColumns = new Button (otherGroup, DWT.CHECK);
-        multipleColumns.setText (ControlExample.getResourceString("Multiple_Columns"));
-        headerVisibleButton = new Button (otherGroup, DWT.CHECK);
-        headerVisibleButton.setText (ControlExample.getResourceString("Header_Visible"));
-        sortIndicatorButton = new Button (otherGroup, DWT.CHECK);
-        sortIndicatorButton.setText (ControlExample.getResourceString("Sort_Indicator"));
-        moveableColumns = new Button (otherGroup, DWT.CHECK);
-        moveableColumns.setText (ControlExample.getResourceString("Moveable_Columns"));
-        resizableColumns = new Button (otherGroup, DWT.CHECK);
-        resizableColumns.setText (ControlExample.getResourceString("Resizable_Columns"));
-        headerImagesButton = new Button (otherGroup, DWT.CHECK);
-        headerImagesButton.setText (ControlExample.getResourceString("Header_Images"));
-        subImagesButton = new Button (otherGroup, DWT.CHECK);
-        subImagesButton.setText (ControlExample.getResourceString("Sub_Images"));
-
-        /* Add the listeners */
-        linesVisibleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetLinesVisible ();
-            }
-        });
-        multipleColumns.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-        headerVisibleButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetHeaderVisible ();
-            }
-        });
-        sortIndicatorButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setWidgetSortIndicator ();
-            }
-        });
-        moveableColumns.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setColumnsMoveable ();
-            }
-        });
-        resizableColumns.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                setColumnsResizable ();
-            }
-        });
-        headerImagesButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-        subImagesButton.addSelectionListener (new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                recreateExampleWidgets ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Example" group.
-     */
-    void createExampleGroup () {
-        super.createExampleGroup ();
-
-        /* Create a group for the text tree */
-        treeGroup = new Group (exampleGroup, DWT.NONE);
-        treeGroup.setLayout (new GridLayout ());
-        treeGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        treeGroup.setText ("Tree");
-
-        /* Create a group for the image tree */
-        imageTreeGroup = new Group (exampleGroup, DWT.NONE);
-        imageTreeGroup.setLayout (new GridLayout ());
-        imageTreeGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
-        imageTreeGroup.setText (ControlExample.getResourceString("Tree_With_Images"));
-    }
-
-    /**
-     * Creates the "Example" widgets.
-     */
-    void createExampleWidgets () {
-        /* Compute the widget style */
-        int style = getDefaultStyle();
-        if (singleButton.getSelection()) style |= DWT.SINGLE;
-        if (multiButton.getSelection()) style |= DWT.MULTI;
-        if (horizontalButton.getSelection ()) style |= DWT.H_SCROLL;
-        if (verticalButton.getSelection ()) style |= DWT.V_SCROLL;
-        if (checkButton.getSelection()) style |= DWT.CHECK;
-        if (fullSelectionButton.getSelection ()) style |= DWT.FULL_SELECTION;
-        if (borderButton.getSelection()) style |= DWT.BORDER;
-
-        /* Create the text tree */
-        tree1 = new Tree (treeGroup, style);
-        bool multiColumn = multipleColumns.getSelection();
-        if (multiColumn) {
-            for (int i = 0; i < columnTitles.length; i++) {
-                TreeColumn treeColumn = new TreeColumn(tree1, DWT.NONE);
-                treeColumn.setText(columnTitles[i]);
-                treeColumn.setToolTipText(Format( ControlExample.getResourceString("Tooltip") , columnTitles[i]));
-            }
-            tree1.setSortColumn(tree1.getColumn(0));
-        }
-        for (int i = 0; i < 4; i++) {
-            TreeItem item = new TreeItem (tree1, DWT.NONE);
-            setItemText(item, i, ControlExample.getResourceString("Node_" ~ to!(char[])(i + 1)));
-            if (i < 3) {
-                TreeItem subitem = new TreeItem (item, DWT.NONE);
-                setItemText(subitem, i, ControlExample.getResourceString("Node_" ~ to!(char[])(i + 1) ~ "_1"));
-            }
-        }
-        TreeItem treeRoots[] = tree1.getItems ();
-        TreeItem item = new TreeItem (treeRoots[1], DWT.NONE);
-        setItemText(item, 1, ControlExample.getResourceString("Node_2_2"));
-        item = new TreeItem (item, DWT.NONE);
-        setItemText(item, 1, ControlExample.getResourceString("Node_2_2_1"));
-        textNode1 = treeRoots[0];
-        packColumns(tree1);
-        try {
-            TreeColumn column = tree1.getColumn(0);
-            resizableColumns.setSelection (column.getResizable());
-        } catch (IllegalArgumentException ex) {}
-
-        /* Create the image tree */
-        tree2 = new Tree (imageTreeGroup, style);
-        Image image = instance.images[ControlExample.ciClosedFolder];
-        if (multiColumn) {
-            for (int i = 0; i < columnTitles.length; i++) {
-                TreeColumn treeColumn = new TreeColumn(tree2, DWT.NONE);
-                treeColumn.setText(columnTitles[i]);
-                treeColumn.setToolTipText(Format( ControlExample.getResourceString("Tooltip"), columnTitles[i]));
-                if (headerImagesButton.getSelection()) treeColumn.setImage(image);
-            }
-        }
-        for (int i = 0; i < 4; i++) {
-            item = new TreeItem (tree2, DWT.NONE);
-            setItemText(item, i, ControlExample.getResourceString("Node_" ~ to!(char[])(i + 1)));
-            if (multiColumn && subImagesButton.getSelection()) {
-                for (int j = 0; j < columnTitles.length; j++) {
-                    item.setImage(j, image);
-                }
-            } else {
-                item.setImage(image);
-            }
-            if (i < 3) {
-                TreeItem subitem = new TreeItem (item, DWT.NONE);
-                setItemText(subitem, i, ControlExample.getResourceString("Node_" ~ to!(char[])(i + 1) ~ "_1"));
-                if (multiColumn && subImagesButton.getSelection()) {
-                    for (int j = 0; j < columnTitles.length; j++) {
-                        subitem.setImage(j, image);
-                    }
-                } else {
-                    subitem.setImage(image);
-                }
-            }
-        }
-        treeRoots = tree2.getItems ();
-        item = new TreeItem (treeRoots[1], DWT.NONE);
-        setItemText(item, 1, ControlExample.getResourceString("Node_2_2"));
-        if (multiColumn && subImagesButton.getSelection()) {
-            for (int j = 0; j < columnTitles.length; j++) {
-                item.setImage(j, image);
-            }
-        } else {
-            item.setImage(image);
-        }
-        item = new TreeItem (item, DWT.NONE);
-        setItemText(item, 1, ControlExample.getResourceString("Node_2_2_1"));
-        if (multiColumn && subImagesButton.getSelection()) {
-            for (int j = 0; j < columnTitles.length; j++) {
-                item.setImage(j, image);
-            }
-        } else {
-            item.setImage(image);
-        }
-        imageNode1 = treeRoots[0];
-        packColumns(tree2);
-    }
-
-    void setItemText(TreeItem item, int i, char[] node) {
-        int index = i % 3;
-        if (multipleColumns.getSelection()) {
-            tableData [index][0] = node;
-            item.setText (tableData [index]);
-        } else {
-            item.setText (node);
-        }
-    }
-
-    /**
-     * Creates the "Size" group.  The "Size" group contains
-     * controls that allow the user to change the size of
-     * the example widgets.
-     */
-    void createSizeGroup () {
-        super.createSizeGroup();
-
-        packColumnsButton = new Button (sizeGroup, DWT.PUSH);
-        packColumnsButton.setText (ControlExample.getResourceString("Pack_Columns"));
-        packColumnsButton.addSelectionListener(new class() SelectionAdapter {
-            public void widgetSelected (SelectionEvent event) {
-                packColumns (tree1);
-                packColumns (tree2);
-                setExampleWidgetSize ();
-            }
-        });
-    }
-
-    /**
-     * Creates the "Style" group.
-     */
-    void createStyleGroup() {
-        super.createStyleGroup();
-
-        /* Create the extra widgets */
-        checkButton = new Button (styleGroup, DWT.CHECK);
-        checkButton.setText ("DWT.CHECK");
-        fullSelectionButton = new Button (styleGroup, DWT.CHECK);
-        fullSelectionButton.setText ("DWT.FULL_SELECTION");
-    }
-
-    /**
-     * Gets the "Example" widget children's items, if any.
-     *
-     * @return an array containing the example widget children's items
-     */
-    Item [] getExampleWidgetItems () {
-        /* Note: We do not bother collecting the tree items
-         * because tree items don't have any events. If events
-         * are ever added to TreeItem, then this needs to change.
-         */
-        Item [] columns1 = tree1.getColumns();
-        Item [] columns2 = tree2.getColumns();
-        Item [] allItems = new Item [columns1.length + columns2.length];
-        System.arraycopy(columns1, 0, allItems, 0, columns1.length);
-        System.arraycopy(columns2, 0, allItems, columns1.length, columns2.length);
-        return allItems;
-    }
-
-    /**
-     * Gets the "Example" widget children.
-     */
-    Widget [] getExampleWidgets () {
-        return [ cast(Widget) tree1, tree2 ];
-    }
-
-    /**
-     * 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).
-     */
-    char[][] getMethodNames() {
-        return ["ColumnOrder", "Selection", "ToolTipText", "TopItem"];
-    }
-
-//PORTING_LEFT
-/+
-    Object[] parameterForType(char[] typeName, char[] value, Widget widget) {
-        if (typeName.equals("org.eclipse.swt.widgets.TreeItem")) {
-            TreeItem item = findItem(value, ((Tree) widget).getItems());
-            if (item !is null) return new Object[] {item};
-        }
-        if (typeName.equals("[Lorg.eclipse.swt.widgets.TreeItem;")) {
-            char[][] values = split(value, ',');
-            TreeItem[] items = new TreeItem[values.length];
-            for (int i = 0; i < values.length; i++) {
-                TreeItem item = findItem(values[i], ((Tree) widget).getItems());
-                if (item is null) break;
-                items[i] = item;
-            }
-            return new Object[] {items};
-        }
-        return super.parameterForType(typeName, value, widget);
-    }
-+/
-    TreeItem findItem(char[] value, TreeItem[] items) {
-        for (int i = 0; i < items.length; i++) {
-            TreeItem item = items[i];
-            if (item.getText() == value ) return item;
-            item = findItem(value, item.getItems());
-            if (item !is null) return item;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the text for the tab folder item.
-     */
-    char[] getTabText () {
-        return "Tree";
-    }
-
-    void packColumns (Tree tree) {
-        if (multipleColumns.getSelection()) {
-            int columnCount = tree.getColumnCount();
-            for (int i = 0; i < columnCount; i++) {
-                TreeColumn treeColumn = tree.getColumn(i);
-                treeColumn.pack();
-            }
-        }
-    }
-
-    /**
-     * Sets the moveable columns state of the "Example" widgets.
-     */
-    void setColumnsMoveable () {
-        bool selection = moveableColumns.getSelection();
-        TreeColumn[] columns1 = tree1.getColumns();
-        for (int i = 0; i < columns1.length; i++) {
-            columns1[i].setMoveable(selection);
-        }
-        TreeColumn[] columns2 = tree2.getColumns();
-        for (int i = 0; i < columns2.length; i++) {
-            columns2[i].setMoveable(selection);
-        }
-    }
-
-    /**
-     * Sets the resizable columns state of the "Example" widgets.
-     */
-    void setColumnsResizable () {
-        bool selection = resizableColumns.getSelection();
-        TreeColumn[] columns1 = tree1.getColumns();
-        for (int i = 0; i < columns1.length; i++) {
-            columns1[i].setResizable(selection);
-        }
-        TreeColumn[] columns2 = tree2.getColumns();
-        for (int i = 0; i < columns2.length; i++) {
-            columns2[i].setResizable(selection);
-        }
-    }
-
-    /**
-     * Sets the foreground color, background color, and font
-     * of the "Example" widgets to their default settings.
-     * Also sets foreground and background color of the Node 1
-     * TreeItems to default settings.
-     */
-    void resetColorsAndFonts () {
-        super.resetColorsAndFonts ();
-        Color oldColor = itemForegroundColor;
-        itemForegroundColor = null;
-        setItemForeground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldColor = itemBackgroundColor;
-        itemBackgroundColor = null;
-        setItemBackground ();
-        if (oldColor !is null) oldColor.dispose();
-        Font oldFont = font;
-        itemFont = null;
-        setItemFont ();
-        if (oldFont !is null) oldFont.dispose();
-        oldColor = cellForegroundColor;
-        cellForegroundColor = null;
-        setCellForeground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldColor = cellBackgroundColor;
-        cellBackgroundColor = null;
-        setCellBackground ();
-        if (oldColor !is null) oldColor.dispose();
-        oldFont = font;
-        cellFont = null;
-        setCellFont ();
-        if (oldFont !is null) oldFont.dispose();
-    }
-
-    /**
-     * Sets the state of the "Example" widgets.
-     */
-    void setExampleWidgetState () {
-        setItemBackground ();
-        setItemForeground ();
-        setItemFont ();
-        setCellBackground ();
-        setCellForeground ();
-        setCellFont ();
-        if (!instance.startup) {
-            setColumnsMoveable ();
-            setColumnsResizable ();
-            setWidgetHeaderVisible ();
-            setWidgetSortIndicator ();
-            setWidgetLinesVisible ();
-        }
-        super.setExampleWidgetState ();
-        checkButton.setSelection ((tree1.getStyle () & DWT.CHECK) !is 0);
-        checkButton.setSelection ((tree2.getStyle () & DWT.CHECK) !is 0);
-        fullSelectionButton.setSelection ((tree1.getStyle () & DWT.FULL_SELECTION) !is 0);
-        fullSelectionButton.setSelection ((tree2.getStyle () & DWT.FULL_SELECTION) !is 0);
-        try {
-            TreeColumn column = tree1.getColumn(0);
-            moveableColumns.setSelection (column.getMoveable());
-            resizableColumns.setSelection (column.getResizable());
-        } catch (IllegalArgumentException ex) {}
-        headerVisibleButton.setSelection (tree1.getHeaderVisible());
-        linesVisibleButton.setSelection (tree1.getLinesVisible());
-    }
-
-    /**
-     * Sets the background color of the Node 1 TreeItems in column 1.
-     */
-    void setCellBackground () {
-        if (!instance.startup) {
-            textNode1.setBackground (1, cellBackgroundColor);
-            imageNode1.setBackground (1, cellBackgroundColor);
-        }
-        /* Set the background color item's image to match the background color of the cell. */
-        Color color = cellBackgroundColor;
-        if (color is null) color = textNode1.getBackground (1);
-        TableItem item = colorAndFontTable.getItem(CELL_BACKGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the foreground color of the Node 1 TreeItems in column 1.
-     */
-    void setCellForeground () {
-        if (!instance.startup) {
-            textNode1.setForeground (1, cellForegroundColor);
-            imageNode1.setForeground (1, cellForegroundColor);
-        }
-        /* Set the foreground color item's image to match the foreground color of the cell. */
-        Color color = cellForegroundColor;
-        if (color is null) color = textNode1.getForeground (1);
-        TableItem item = colorAndFontTable.getItem(CELL_FOREGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the font of the Node 1 TreeItems in column 1.
-     */
-    void setCellFont () {
-        if (!instance.startup) {
-            textNode1.setFont (1, cellFont);
-            imageNode1.setFont (1, cellFont);
-        }
-        /* Set the font item's image to match the font of the item. */
-        Font ft = cellFont;
-        if (ft is null) ft = textNode1.getFont (1);
-        TableItem item = colorAndFontTable.getItem(CELL_FONT);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (fontImage(ft));
-        item.setFont(ft);
-        colorAndFontTable.layout ();
-    }
-
-    /**
-     * Sets the background color of the Node 1 TreeItems.
-     */
-    void setItemBackground () {
-        if (!instance.startup) {
-            textNode1.setBackground (itemBackgroundColor);
-            imageNode1.setBackground (itemBackgroundColor);
-        }
-        /* Set the background button's color to match the background color of the item. */
-        Color color = itemBackgroundColor;
-        if (color is null) color = textNode1.getBackground ();
-        TableItem item = colorAndFontTable.getItem(ITEM_BACKGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the foreground color of the Node 1 TreeItems.
-     */
-    void setItemForeground () {
-        if (!instance.startup) {
-            textNode1.setForeground (itemForegroundColor);
-            imageNode1.setForeground (itemForegroundColor);
-        }
-        /* Set the foreground button's color to match the foreground color of the item. */
-        Color color = itemForegroundColor;
-        if (color is null) color = textNode1.getForeground ();
-        TableItem item = colorAndFontTable.getItem(ITEM_FOREGROUND_COLOR);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (colorImage(color));
-    }
-
-    /**
-     * Sets the font of the Node 1 TreeItems.
-     */
-    void setItemFont () {
-        if (!instance.startup) {
-            textNode1.setFont (itemFont);
-            imageNode1.setFont (itemFont);
-        }
-        /* Set the font item's image to match the font of the item. */
-        Font ft = itemFont;
-        if (ft is null) ft = textNode1.getFont ();
-        TableItem item = colorAndFontTable.getItem(ITEM_FONT);
-        Image oldImage = item.getImage();
-        if (oldImage !is null) oldImage.dispose();
-        item.setImage (fontImage(ft));
-        item.setFont(ft);
-        colorAndFontTable.layout ();
-    }
-
-    /**
-     * Sets the header visible state of the "Example" widgets.
-     */
-    void setWidgetHeaderVisible () {
-        tree1.setHeaderVisible (headerVisibleButton.getSelection ());
-        tree2.setHeaderVisible (headerVisibleButton.getSelection ());
-    }
-
-    /**
-     * Sets the sort indicator state of the "Example" widgets.
-     */
-    void setWidgetSortIndicator () {
-        if (sortIndicatorButton.getSelection ()) {
-            initializeSortState (tree1);
-            initializeSortState (tree2);
-        } else {
-            resetSortState (tree1);
-            resetSortState (tree2);
-        }
-    }
-
-    /**
-     * Sets the initial sort indicator state and adds a listener
-     * to cycle through sort states and columns.
-     */
-    void initializeSortState (Tree tree) {
-        /* Reset to known state: 'down' on column 0. */
-        tree.setSortDirection (DWT.DOWN);
-        TreeColumn [] columns = tree.getColumns();
-        for (int i = 0; i < columns.length; i++) {
-            TreeColumn column = columns[i];
-            if (i is 0) tree.setSortColumn(column);
-            SelectionListener listener = new class(tree) SelectionAdapter {
-                Tree t;
-                this( Tree t ){ this.t = t; }
-                public void widgetSelected(SelectionEvent e) {
-                    int sortDirection = DWT.DOWN;
-                    if (e.widget is t.getSortColumn()) {
-                        /* If the sort column hasn't changed, cycle down -> up -> none. */
-                        switch (t.getSortDirection ()) {
-                        case DWT.DOWN: sortDirection = DWT.UP; break;
-                        case DWT.UP: sortDirection = DWT.NONE; break;
-                        }
-                    } else {
-                        t.setSortColumn(cast(TreeColumn)e.widget);
-                    }
-                    t.setSortDirection (sortDirection);
-                }
-            };
-            column.addSelectionListener(listener);
-            column.setData("SortListener", cast(Object)listener);   //$NON-NLS-1$
-        }
-    }
-
-    void resetSortState (Tree tree) {
-        tree.setSortDirection (DWT.NONE);
-        TreeColumn [] columns = tree.getColumns();
-        for (int i = 0; i < columns.length; i++) {
-            SelectionListener listener = cast(SelectionListener)columns[i].getData("SortListener"); //$NON-NLS-1$
-            if (listener !is null) columns[i].removeSelectionListener(listener);
-        }
-    }
-
-    /**
-     * Sets the lines visible state of the "Example" widgets.
-     */
-    void setWidgetLinesVisible () {
-        tree1.setLinesVisible (linesVisibleButton.getSelection ());
-        tree2.setLinesVisible (linesVisibleButton.getSelection ());
-    }
-
-    protected void specialPopupMenuItems(Menu menu, Event event) {
-        MenuItem item = new MenuItem(menu, DWT.PUSH);
-        item.setText("getItem(Point) on mouse coordinates");
-        Tree t = cast(Tree) event.widget;
-        menuMouseCoords = t.toControl(new Point(event.x, event.y));
-        item.addSelectionListener(new class(t) SelectionAdapter {
-            Tree t;
-            this( Tree t ){ this.t = t; }
-            public void widgetSelected(SelectionEvent e) {
-                eventConsole.append ("getItem(Point(" ~ menuMouseCoords.toString ~ ")) returned: " ~ (this.t.getItem(menuMouseCoords)).toString);
-                eventConsole.append ("\n");
-            };
-        });
-    }
-}
Binary file dwtexamples/controlexample/backgroundImage.png has changed
Binary file dwtexamples/controlexample/bold.bmp has changed
Binary file dwtexamples/controlexample/bold_mask.bmp has changed
Binary file dwtexamples/controlexample/closedFolder.gif has changed
--- a/dwtexamples/controlexample/controlexample.properties	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-error.CouldNotLoadResources = Unable to load resources
-window.title = SWT Controls
-custom.window.title = SWT Custom Controls
-
-Text_Buttons		= Text Buttons
-Size 				= Size
-Alignment			= Alignment
-Left				= Left
-Right				= Right
-Up					= Up
-Down				= Down
-Center				= Center
-One					= One
-Two					= Two
-Three				= Three
-Image_Buttons		= Image Buttons
-Image_Text_Buttons	= Image and Text Buttons
-Control_Example		= Control Example
-Parameters			= Parameters
-Other				= Other
-Enabled				= Enabled
-Visible				= Visible
-BackgroundImage		= Background Image
-Preferred 			= Preferred
-Styles	 			= Styles
-Menu_Styles	 		= Menu Styles
-MenuItem_Styles	 	= MenuItem Styles
-Background_Mode		= Background Mode on Parent
-Listeners			= Listeners
-Select_Listeners	= Select Listeners
-Listen				= Listen
-Clear				= Clear
-Set_Get				= Set/Get API
-Parameter_Info		= {0}   e.g. {1} 
-Info_int			= 4
-Info_intA			= 0,1,2
-Info_long			= 4
-Info_longA			= 0,1,2
-Info_char			= c
-Info_charA			= a,b,c
-Info_boolean		= true
-Info_booleanA		= true,true,false
-Info_String			= hello
-Info_StringA		= hello,there
-Info_Point			= 0,0
-Info_TabItem		= Tab 0
-Info_TabItemA		= Tab 0,Tab 2
-Info_TableItem		= Index:2
-Info_TableItemA		= Index:2,Index:4
-Info_TreeItem		= Node 1
-Info_TreeItemA		= Node 1,Node 3
-Select_All			= Select All
-Deselect_All		= Deselect All
-OK					= OK
-FillDamage			= Fill Damaged Area With Color
-Title_Text			= Title Text
-Text_Labels			= Text Labels
-Image_Labels		= Image Labels
-Custom_Labels		= Custom Labels
-Custom_Combo		= Custom Combo
-One_Two_Three		= One Two Three
-Text_ToolBar 		= Text ToolBar
-Image_ToolBar 		= Image ToolBar
-ImageText_ToolBar	= Image and Text ToolBar
-Maximum				= Maximum
-Minimum				= Minimum
-Selection			= Selection
-Increment			= Increment
-Page_Increment		= Page Increment
-Thumb				= Thumb
-Digits				= Digits
-Tree_With_Images	= Tree With Images
-Dialog_Type			= Dialog Type
-Create_Dialog		= Create Dialog
-Button_Styles		= Button Styles
-Icon_Styles			= Icon Styles
-Modal_Styles		= Modal Styles
-File_Dialog_Styles	= File Dialog Styles
-Item_Styles			= Item Styles
-Dialog_Result		= Dialog Result
-ColorDialog			= ColorDialog
-DirectoryDialog		= DirectoryDialog
-FileDialog			= FileDialog
-FontDialog			= FontDialog
-PrintDialog			= PrintDialog
-MessageBox			= MessageBox
-Multi_line			= A multi line text widget.
-Example_string		= The quick brown fox jumps over the lazy dog.
-Header_Visible		= Header Visible
-Sort_Indicator		= Sort Indicator
-Header_Images		= Header Images
-Sub_Images			= Sub Images
-Lines_Visible		= Lines Visible
-Moveable_Columns	= Moveable Columns
-Multiple_Columns	= Multiple Columns
-Locked				= Locked
-Combo_child			= Combo Child
-Node_1				= Node 1
-Node_2				= Node 2
-Node_3				= Node 3
-Node_4				= Node 4
-Node_1_1			= Node 1.1
-Node_2_1			= Node 2.1
-Node_3_1			= Node 3.1
-Node_2_2			= Node 2.2
-Node_2_2_1			= Node 2.2.1
-Parent				= Parent
-No_Parent			= No Parent
-Decoration_Styles	= Decoration Styles
-Create_Shell		= Create Shell
-Close_All_Shells	= Close All Shells
-Push				= Push
-Radio				= Radio
-Check				= Check
-Cascade				= Cascade
-Drop_Down			= Drop Down
-Images_failed		= Warning: Failed to load images
-readme_txt			= readme.txt
-Index				= Index:
-Title				= Title:
-Close				= Close
-Result				= Result: {0}
-FilterName_0		= Text Files
-FilterName_1		= Batch Files
-FilterName_2		= Doc Files
-FilterName_3		= All Files
-TableTitle_0		= Name
-TableTitle_1		= Type
-TableTitle_2		= Size
-TableTitle_3		= Modified
-TableLine0_0		= <empty>
-TableLine0_1		= classes
-TableLine0_2		= 0
-TableLine0_3		= today
-TableLine1_0		= <empty>
-TableLine1_1		= databases
-TableLine1_2		= 2556
-TableLine1_3		= tomorrow
-TableLine2_0		= <empty>
-TableLine2_1		= images
-TableLine2_2		= 91571
-TableLine2_3		= yesterday
-ListData0_0			= Line 1
-ListData0_1			= Line 2
-ListData0_2			= Line 3
-ListData0_3			= Line 4
-ListData0_4			= Line 5
-ListData0_5			= Line 6
-ListData0_6			= Line 7
-ListData0_7			= Line 8
-ListData0_8			= Longest Line In List
-ListData1_0			= Apples
-ListData1_1			= Oranges
-ListData1_2			= Bananas
-ListData1_3			= Grapefruit
-ListData1_4			= Peaches
-ListData1_5			= Kiwi
-ListData1_6			= Apricots
-ListData1_7			= Strawberries
-ListData1_8			= The Longest String
-DropDownData_0		= Apples
-DropDownData_1		= Oranges
-DropDownData_2		=
-DropDownData_3		= Grapefruit
-DropDownData_4		= Peaches
-DropDownData_5		= Kiwi
-DropDownData_6		=
-DropDownData_7		= Strawberries
-DropDownData_8		= The Longest String
-Colors 				= Colors and Font
-Change				= &Change...
-Defaults			= &Defaults
-Foreground_Color	= Foreground Color
-Background_Color	= Background Color
-Font				= Font
-Item_Foreground_Color	= Item 0 Foreground Color
-Item_Background_Color	= Item 0 Background Color
-Item_Font				= Item 0 Font
-Cell_Foreground_Color	= Item 0 Col 1 Foreground Color
-Cell_Background_Color	= Item 0 Col 1 Background Color
-Cell_Font				= Item 0 Col 1 Font
-Wrap_Text			= Jack and Jill went up the hill to fetch a pail of water, \
-					  Jack fell down and broke his crown and Jill came tumbling after!
-Foreground_Style	= Foreground
-Background_Style 	= Background
-StyledText_Styles	= Text Styles
-StyledText_Style_Instructions	= Select text, then style.
-Bold				= Bold
-Italic				= Italic
-Underline			= Underline
-Strikeout			= Strikeout
-Fill_X				= Horizontal Fill
-Fill_Y				= Vertical Fill
-Pack_Columns		= Pack Columns
-TabItem1_0			= Tab 0
-TabItem1_1			= Tab 1
-TabItem1_2			= Tab 2
-TabItem_content		= TabItem Content
-CTabItem1_0			= CTabItem 0
-CTabItem1_1			= CTabItem 1
-CTabItem1_2			= CTabItem 2 has a long name
-CItem_Colors		= CTabItem Colors
-CTabItem_content	= CTabItem Content
-Set_Simple_Tabs		= Simple Tabs
-Set_Single_Tabs		= Single Tab
-Set_Min_Visible     = Minimize
-Set_Max_Visible     = Maximize
-Set_Unselected_Close_Visible = Close on Unselected Tabs
-Set_Unselected_Image_Visible = Image on Unselected Tabs
-Selection_Foreground_Color = Selection Foreground Color
-Selection_Background_Color = Selection Background Color
-Set_Image			= Set Image
-TableTree_column	= Column
-MenuItem_Cut		= Cu&t	Ctrl+X
-MenuItem_Copy		= &Copy	Ctrl+C
-MenuItem_Paste		= &Paste	Ctrl+V
-MenuItem_SelectAll	= Select &All	Ctrl+A
-Orientation 		= Orientation
-Default 			= Default (Inherit)
-Images				= Images
-Accelerators		= Accelerators
-Mnemonics			= Mnemonics
-SubMenu				= Sub-Menu
-SubSubMenu			= Sub-Sub-Menu
-1Radio				= Radio1
-2Radio				= Radio2
-1RadioWithMnemonic	= Radio&1
-2RadioWithMnemonic	= Radio&2
-PushWithMnemonic	= &Push
-RadioWithMnemonic	= &Radio
-CheckWithMnemonic	= &Check
-CascadeWithMnemonic	= C&ascade
-PopupMenuHere		= Popup Menu Here
-LinkText=Visit the <A HREF=\"www.eclipse.org\">Eclipse.org</A> project and the <A HREF=\"www.eclipse.org\\swt">SWT</A> homepage.
-Tooltip				= Tooltip:  {0}
-Item1_Text			= "What is your favorite button?"
-Item2_Text			= "What is your favorite icon?"
\ No newline at end of file
Binary file dwtexamples/controlexample/italic.bmp has changed
Binary file dwtexamples/controlexample/italic_mask.bmp has changed
Binary file dwtexamples/controlexample/openFolder.gif has changed
Binary file dwtexamples/controlexample/parentBackgroundImage.png has changed
Binary file dwtexamples/controlexample/red.bmp has changed
Binary file dwtexamples/controlexample/red_mask.bmp has changed
Binary file dwtexamples/controlexample/strikeout.bmp has changed
Binary file dwtexamples/controlexample/strikeout_mask.bmp has changed
Binary file dwtexamples/controlexample/target.gif has changed
Binary file dwtexamples/controlexample/underline.bmp has changed
Binary file dwtexamples/controlexample/underline_mask.bmp has changed
Binary file dwtexamples/controlexample/yellow.bmp has changed
Binary file dwtexamples/controlexample/yellow_mask.bmp has changed
--- a/dwtexamples/helloworld/HelloWorld1.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.helloworld.HelloWorld1;
-
-
-import dwt.widgets.Display;
-import dwt.widgets.Shell;
-
-/*
- * This example demonstrates the minimum amount of code required
- * to open an DWT Shell and process the events.
- */
-void main(){
-    Display display = new Display ();
-    Shell shell = new Shell (display);
-    shell.open ();
-    while (!shell.isDisposed ()) {
-        if (!display.readAndDispatch ()) display.sleep ();
-    }
-    display.dispose ();
-}
-
-// for unknown reason, there are linker errors. These imports are the workaround
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
-
--- a/dwtexamples/helloworld/HelloWorld2.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.helloworld.HelloWorld2;
-
-import dwt.DWT;
-import dwt.widgets.Display;
-import dwt.widgets.Label;
-import dwt.widgets.Shell;
-
-/*
- * This example builds on HelloWorld1 and demonstrates the minimum amount
- * of code required to open an DWT Shell with a Label and process the events.
- */
-
-void main(){
-    Display display = new Display ();
-    Shell shell = new Shell (display);
-    Label label = new Label (shell, DWT.CENTER);
-    label.setText ("Hello_world");
-    label.setBounds (shell.getClientArea ());
-    shell.open ();
-    while (!shell.isDisposed ()) {
-        if (!display.readAndDispatch ()) display.sleep ();
-    }
-    display.dispose ();
-}
-
-// for unknown reason, there are linker errors. These imports are the workaround
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
--- a/dwtexamples/helloworld/HelloWorld3.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.helloworld.HelloWorld3;
-
-import dwt.DWT;
-import dwt.events.ControlAdapter;
-import dwt.events.ControlEvent;
-import dwt.widgets.Display;
-import dwt.widgets.Label;
-import dwt.widgets.Shell;
-
-/*
- * This example builds on HelloWorld2 and demonstrates how to resize the
- * Label when the Shell resizes using a Listener mechanism.
- */
-
-void main () {
-    Display display = new Display ();
-    final Shell shell = new Shell (display);
-    final Label label = new Label (shell, DWT.CENTER);
-    label.setText ("Hello_world");
-    label.pack();
-    shell.addControlListener(new class() ControlAdapter {
-        public void controlResized(ControlEvent e) {
-            label.setBounds (shell.getClientArea ());
-        }
-    });
-    shell.pack();
-    shell.open ();
-    while (!shell.isDisposed ()) {
-        if (!display.readAndDispatch ()) display.sleep ();
-    }
-    display.dispose ();
-}
-
-// for unknown reason, there are linker errors. These imports are the workaround
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
--- a/dwtexamples/helloworld/HelloWorld4.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.helloworld.HelloWorld4;
-
-import dwt.DWT;
-import dwt.layout.FillLayout;
-import dwt.widgets.Display;
-import dwt.widgets.Label;
-import dwt.widgets.Shell;
-
-/*
- * This example builds on HelloWorld2 and demonstrates how to resize the
- * Label when the Shell resizes using a Layout.
- */
-void main () {
-    Display display = new Display ();
-    Shell shell = new Shell (display);
-    shell.setLayout(new FillLayout());
-    Label label = new Label (shell, DWT.CENTER);
-    label.setText ("Hello_world");
-    shell.pack ();
-    shell.open ();
-    while (!shell.isDisposed ()) {
-        if (!display.readAndDispatch ()) display.sleep ();
-    }
-    display.dispose ();
-}
-
-
-// for unknown reason, there are linker errors. These imports are the workaround
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
--- a/dwtexamples/helloworld/HelloWorld5.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-module dwtexamples.helloworld.HelloWorld5;
-
-
-import dwt.events.DisposeEvent;
-import dwt.events.DisposeListener;
-import dwt.events.PaintEvent;
-import dwt.events.PaintListener;
-import dwt.graphics.Color;
-import dwt.graphics.GC;
-import dwt.graphics.Rectangle;
-import dwt.widgets.Display;
-import dwt.widgets.Shell;
-
-/*
- * This example builds on HelloWorld1 and demonstrates how to draw directly
- * on an DWT Control.
- */
-
-void main () {
-    Display display = new Display ();
-    final Color red = new Color(display, 0xFF, 0, 0);
-    final Shell shell = new Shell (display);
-    shell.addPaintListener(new class() PaintListener {
-        public void paintControl(PaintEvent event){
-            GC gc = event.gc;
-            gc.setForeground(red);
-            Rectangle rect = shell.getClientArea();
-            gc.drawRectangle(rect.x + 10, rect.y + 10, rect.width - 20, rect.height - 20);
-            gc.drawString("Hello_world", rect.x + 20, rect.y + 20);
-        }
-    });
-    shell.addDisposeListener (new class() DisposeListener {
-        public void widgetDisposed (DisposeEvent e) {
-            red.dispose();
-        }
-    });
-    shell.open ();
-    while (!shell.isDisposed ()) {
-        if (!display.readAndDispatch ()) display.sleep ();
-    }
-    display.dispose ();
-}
-
-// for unknown reason, there are linker errors. These imports are the workaround
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
--- a/dwtexamples/helloworld/helloworld.properties	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-Hello_world = Hello World
\ No newline at end of file
--- a/dwtexamples/simple.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-module dwtexample.simple;
-
-import dwt.DWT;
-import dwt.widgets.Display;
-import dwt.widgets.Shell;
-import dwt.widgets.Button;
-import dwt.widgets.Text;
-
-import tango.io.Stdout;
-import tango.math.Math;
-import tango.text.convert.Format;
-import tango.util.Convert;
-import tango.util.PathUtil;
-import dwt.events.SelectionListener;
-import dwt.events.SelectionEvent;
-
-
-import dwt.DWT;
-import dwt.widgets.Display;
-
-void main(){
-
-    try{
-
-        Display display = new Display();
-        Shell shell = new Shell(display);
-        shell.setSize(300, 200);
-        shell.setText("Simple DWT Sample");
-        auto btn = new Button( shell, DWT.PUSH );
-        btn.setBounds(40, 50, 100, 50);
-        btn.setText( "hey" );
-
-        auto txt = new Text(shell, DWT.BORDER);
-        txt.setBounds(170, 50, 100, 40);
-
-        btn.addSelectionListener(new class () SelectionListener {
-            public void widgetSelected(SelectionEvent event) {
-                txt.setText("No problem");
-            }
-            public void widgetDefaultSelected(SelectionEvent event) {
-                txt.setText("No worries!");
-            }
-        });
-
-        shell.open();
-        while (!shell.isDisposed()) {
-            if (!display.readAndDispatch()) {
-                display.sleep();
-            }
-        }
-    }
-    catch (Exception e) {
-        Stdout.formatln (e.toString);
-    }
-}
-
--- a/dwtexamples/test.d	Thu Jan 31 19:04:56 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-module test;
-
-private import dwt.internal.gtk.c.cairo;
-private import tango.core.Traits;
-private import tango.io.Stdout;
-private import tango.stdc.stdio;
-
-struct lock {
-static void lock() { printf("lock\n");}
-static void unlock() { printf("unlock\n");}
-}
-
-const static char[] mm = "Inside outer cairo_version";
-
-template NameOfFunc(alias f) {
-    // Note: highly dependent on the .stringof formatting
-    // the value begins with "& " which is why the first two chars are cut off
-    const char[] NameOfFunc = (&f).stringof[2 .. $];
-}
-
-template ForwardGtkOsCFunc( alias cFunc ) {
-    alias ParameterTupleOf!(cFunc) P;
-    alias ReturnTypeOf!(cFunc) R;
-    mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
-        lock.lock();
-        scope(exit) lock.unlock();
-        Stdout (mm).newline; 
-        return cFunc(p);
-    }");
-}
-
-public class OS  {
-    mixin ForwardGtkOsCFunc!(cairo_version);
-    mixin ForwardGtkOsCFunc!(cairo_version_string);
-}
-
-void main()
-{
-    Stdout ("calling cairo_version...").newline;
-    int p = OS.cairo_version();
-    int i = cairo_version();
-    Stdout.formatln("OS.cairo_version() returns: {}    cairo_version() returns: {}", p, i ).newline;
-    printf("OS.cairo_version_string returns: %s\n",  cairo_version_string() );
-}
\ No newline at end of file