Mercurial > projects > dwt-linux
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"); - }; - }); - } -}
--- 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
--- 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