diff options
Diffstat (limited to 'examples/org.eclipse.swt.examples/src/org')
241 files changed, 0 insertions, 33975 deletions
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/AddressBook.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/AddressBook.java deleted file mode 100755 index d16cdfec09..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/AddressBook.java +++ /dev/null @@ -1,881 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.addressbook; - - -/* Imports */ -import java.io.*; -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * 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 = ResourceBundle.getBundle("examples_addressbook"); - private Shell shell; - - private Table table; - private SearchDialog searchDialog; - - private File file; - private boolean isModified; - - private String[] copyBuffer; - - private int lastSortColumn= -1; - - private static final String DELIMITER = "\t"; - private static final String[] columnNames = {resAddressBook.getString("Last_name"), - resAddressBook.getString("First_name"), - resAddressBook.getString("Business_phone"), - resAddressBook.getString("Home_phone"), - resAddressBook.getString("Email"), - resAddressBook.getString("Fax")}; - -public static void main(String[] args) { - Display display = new Display(); - AddressBook application = new AddressBook(); - Shell shell = application.open(display); - while(!shell.isDisposed()){ - if(!display.readAndDispatch()) - display.sleep(); - } - display.dispose(); -} -public Shell open(Display display) { - shell = new Shell(display); - shell.setLayout(new FillLayout()); - shell.addShellListener(new 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 FindListener () { - public boolean find() { - return findEntry(); - } - }); - - table = new Table(shell, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION); - table.setHeaderVisible(true); - table.setMenu(createPopUpMenu()); - table.addSelectionListener(new 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, SWT.NONE); - column.setText(columnNames[i]); - column.setWidth(150); - final int columnIndex = i; - column.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - sort(columnIndex); - } - }); - } - - newAddressBook(); - - shell.setSize(table.computeSize(SWT.DEFAULT, SWT.DEFAULT).x, 300); - shell.open(); - return shell; -} - -private boolean closeAddressBook() { - if(isModified) { - //ask user if they want to save current address book - MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES | SWT.NO | SWT.CANCEL); - box.setText(shell.getText()); - box.setMessage(resAddressBook.getString("Close_save")); - - int choice = box.open(); - if(choice == SWT.CANCEL) { - return false; - } else if(choice == SWT.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, SWT.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>String</code> to a String array representing a table entry. - */ -private String[] decodeLine(String line) { - if(line == null) return null; - - String[] parsedLine = new String[table.getColumnCount()]; - for(int i = 0; i < parsedLine.length - 1; i++) { - int index = line.indexOf(DELIMITER); - if (index > -1) { - parsedLine[i] = line.substring(0, index); - line = line.substring(index + DELIMITER.length(), line.length()); - } else { - return null; - } - } - - if (line.indexOf(DELIMITER) != -1) return null; - - parsedLine[parsedLine.length - 1] = line; - - return parsedLine; -} -private void displayError(String msg) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage(msg); - box.open(); -} -private void editEntry(TableItem item) { - DataEntryDialog dialog = new DataEntryDialog(shell); - dialog.setLabels(columnNames); - String[] values = new String[table.getColumnCount()]; - for (int i = 0; i < values.length; i++) { - values[i] = item.getText(i); - } - dialog.setValues(values); - values = dialog.open(); - if (values != null) { - item.setText(values); - isModified = true; - } -} -private String encodeLine(String[] tableItems) { - String line = ""; - for (int i = 0; i < tableItems.length - 1; i++) { - line += tableItems[i] + DELIMITER; - } - line += tableItems[tableItems.length - 1] + "\n"; - - return line; -} -private boolean findEntry() { - Cursor waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - - boolean matchCase = searchDialog.getMatchCase(); - boolean matchWord = searchDialog.getMatchWord(); - String searchString = searchDialog.getSearchString(); - int column = searchDialog.getSelectedSearchArea(); - - searchString = matchCase ? searchString : searchString.toLowerCase(); - - boolean found = false; - if (searchDialog.getSearchDown()) { - for(int i = table.getSelectionIndex() + 1; i < table.getItemCount(); i++) { - if (found = findMatch(searchString, table.getItem(i), column, matchWord, matchCase)){ - table.setSelection(i); - break; - } - } - } else { - for(int i = table.getSelectionIndex() - 1; i > -1; i--) { - if (found = findMatch(searchString, table.getItem(i), column, matchWord, matchCase)){ - table.setSelection(i); - break; - } - } - } - - shell.setCursor(null); - waitCursor.dispose(); - - return found; -} -private boolean findMatch(String searchString, TableItem item, int column, boolean matchWord, boolean matchCase) { - - String tableText = matchCase ? item.getText(column) : item.getText(column).toLowerCase(); - if (matchWord) { - if (tableText != null && tableText.equals(searchString)) { - return true; - } - - } else { - if(tableText!= null && tableText.indexOf(searchString) != -1) { - return true; - } - } - return false; -} -private void newAddressBook() { - shell.setText(resAddressBook.getString("Title_bar") + resAddressBook.getString("New_title")); - file = null; - isModified = false; -} -private void newEntry() { - DataEntryDialog dialog = new DataEntryDialog(shell); - dialog.setLabels(columnNames); - String[] data = dialog.open(); - if (data != null) { - TableItem item = new TableItem(table, SWT.NONE); - item.setText(data); - isModified = true; - } -} - -private void openAddressBook() { - FileDialog fileDialog = new FileDialog(shell, SWT.OPEN); - - fileDialog.setFilterExtensions(new String[] {"*.adr;", "*.*"}); - fileDialog.setFilterNames(new String[] {resAddressBook.getString("Book_filter_name") + " (*.adr)", - resAddressBook.getString("All_filter_name") + " (*.*)"}); - String name = fileDialog.open(); - - if(name == null) return; - File file = new File(name); - if (!file.exists()) { - displayError(resAddressBook.getString("File")+file.getName()+" "+resAddressBook.getString("Does_not_exist")); - return; - } - - Cursor waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - - FileReader fileReader = null; - BufferedReader bufferedReader = null; - String[] data = new String[0]; - try { - fileReader = new FileReader(file.getAbsolutePath()); - bufferedReader = new BufferedReader(fileReader); - String nextLine = bufferedReader.readLine(); - while (nextLine != null){ - String[] newData = new String[data.length + 1]; - System.arraycopy(data, 0, newData, 0, data.length); - newData[data.length] = nextLine; - data = newData; - nextLine = bufferedReader.readLine(); - } - } catch(FileNotFoundException e) { - displayError(resAddressBook.getString("File_not_found") + "\n" + file.getName()); - return; - } catch (IOException e ) { - displayError(resAddressBook.getString("IO_error_read") + "\n" + file.getName()); - return; - } finally { - - shell.setCursor(null); - waitCursor.dispose(); - - if(fileReader != null) { - try { - fileReader.close(); - } catch(IOException e) { - displayError(resAddressBook.getString("IO_error_close") + "\n" + file.getName()); - return; - } - } - } - - String[][] tableInfo = new String[data.length][table.getColumnCount()]; - int writeIndex = 0; - for (int i = 0; i < data.length; i++) { - String[] line = decodeLine(data[i]); - if (line != null) tableInfo[writeIndex++] = line; - } - if (writeIndex != data.length) { - String[][] result = new String[writeIndex][table.getColumnCount()]; - System.arraycopy(tableInfo, 0, result, 0, writeIndex); - tableInfo = result; - } - Arrays.sort(tableInfo, new RowComparator(0)); - - for (int i = 0; i < tableInfo.length; i++) { - TableItem item = new TableItem(table, SWT.NONE); - item.setText(tableInfo[i]); - } - shell.setText(resAddressBook.getString("Title_bar")+fileDialog.getFileName()); - isModified = false; - this.file = file; -} -private boolean save() { - if(file == null) return saveAs(); - - Cursor waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - - TableItem[] items = table.getItems(); - String[] lines = new String[items.length]; - for(int i = 0; i < items.length; i++) { - String[] itemText = new String[table.getColumnCount()]; - for (int j = 0; j < itemText.length; j++) { - itemText[j] = items[i].getText(j); - } - lines[i] = encodeLine(itemText); - } - - FileWriter fileWriter = null; - try { - fileWriter = new FileWriter(file.getAbsolutePath(), false); - for (int i = 0; i < lines.length; i++) { - fileWriter.write(lines[i]); - } - } catch(FileNotFoundException e) { - displayError(resAddressBook.getString("File_not_found") + "\n" + file.getName()); - return false; - } catch(IOException e ) { - displayError(resAddressBook.getString("IO_error_write") + "\n" + file.getName()); - return false; - } finally { - shell.setCursor(null); - waitCursor.dispose(); - - if(fileWriter != null) { - try { - fileWriter.close(); - } catch(IOException e) { - displayError(resAddressBook.getString("IO_error_close") + "\n" + file.getName()); - return false; - } - } - } - - shell.setText(resAddressBook.getString("Title_bar")+file.getName()); - isModified = false; - return true; -} -private boolean saveAs() { - - FileDialog saveDialog = new FileDialog(shell, SWT.SAVE); - saveDialog.setFilterExtensions(new String[] {"*.adr;", "*.*"}); - saveDialog.setFilterNames(new String[] {"Address Books (*.adr)", "All Files "}); - - saveDialog.open(); - String name = saveDialog.getFileName(); - - if(name.equals("")) return false; - - if(name.indexOf(".adr") != name.length() - 4) { - name += ".adr"; - } - - File file = new File(saveDialog.getFilterPath(), name); - if(file.exists()) { - MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES | SWT.NO); - box.setText(resAddressBook.getString("Save_as_title")); - box.setMessage(resAddressBook.getString("File") + file.getName()+" "+resAddressBook.getString("Query_overwrite")); - if(box.open() != SWT.YES) { - return false; - } - } - this.file = file; - return save(); -} -private void sort(int column) { - if(table.getItemCount() <= 1) return; - - TableItem[] items = table.getItems(); - String[][] data = new String[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); - } - } - - Arrays.sort(data, new RowComparator(column)); - - if (lastSortColumn != column) { - table.setSortColumn(table.getColumn(column)); - table.setSortDirection(SWT.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(SWT.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, SWT.CASCADE); - item.setText(resAddressBook.getString("File_menu_title")); - Menu menu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(menu); - /** - * Adds a listener to handle enabling and disabling - * some items in the Edit submenu. - */ - menu.addMenuListener(new MenuAdapter() { - public void menuShown(MenuEvent e) { - Menu menu = (Menu)e.widget; - MenuItem[] items = menu.getItems(); - items[1].setEnabled(table.getSelectionCount() != 0); // edit contact - items[5].setEnabled((file != null) && isModified); // save - items[6].setEnabled(table.getItemCount() != 0); // save as - } - }); - - - //File -> New Contact - MenuItem subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("New_contact")); - subItem.setAccelerator(SWT.MOD1 + 'N'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - newEntry(); - } - }); - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Edit_contact")); - subItem.setAccelerator(SWT.MOD1 + 'E'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - editEntry(items[0]); - } - }); - - - new MenuItem(menu, SWT.SEPARATOR); - - //File -> New Address Book - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("New_address_book")); - subItem.setAccelerator(SWT.MOD1 + 'B'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (closeAddressBook()) { - newAddressBook(); - } - } - }); - - //File -> Open - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Open_address_book")); - subItem.setAccelerator(SWT.MOD1 + 'O'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (closeAddressBook()) { - openAddressBook(); - } - } - }); - - //File -> Save. - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Save_address_book")); - subItem.setAccelerator(SWT.MOD1 + 'S'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - save(); - } - }); - - //File -> Save As. - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Save_book_as")); - subItem.setAccelerator(SWT.MOD1 + 'A'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - saveAs(); - } - }); - - - new MenuItem(menu, SWT.SEPARATOR); - - //File -> Exit. - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Exit")); - subItem.addSelectionListener(new 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, SWT.CASCADE); - item.setText(resAddressBook.getString("Edit_menu_title")); - Menu menu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(menu); - - /** - * Add a listener to handle enabling and disabling - * some items in the Edit submenu. - */ - menu.addMenuListener(new MenuAdapter() { - public void menuShown(MenuEvent e) { - Menu menu = (Menu)e.widget; - MenuItem[] items = menu.getItems(); - int count = table.getSelectionCount(); - items[0].setEnabled(count != 0); // edit - items[1].setEnabled(count != 0); // copy - items[2].setEnabled(copyBuffer != null); // paste - items[3].setEnabled(count != 0); // delete - items[5].setEnabled(table.getItemCount() != 0); // sort - } - }); - - //Edit -> Edit - MenuItem subItem = new MenuItem(menu, SWT.PUSH); - subItem.setText(resAddressBook.getString("Edit")); - subItem.setAccelerator(SWT.MOD1 + 'E'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - editEntry(items[0]); - } - }); - - //Edit -> Copy - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Copy")); - subItem.setAccelerator(SWT.MOD1 + 'C'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - copyBuffer = new String[table.getColumnCount()]; - for (int i = 0; i < copyBuffer.length; i++) { - copyBuffer[i] = items[0].getText(i); - } - } - }); - - //Edit -> Paste - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Paste")); - subItem.setAccelerator(SWT.MOD1 + 'V'); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (copyBuffer == null) return; - TableItem item = new TableItem(table, SWT.NONE); - item.setText(copyBuffer); - isModified = true; - } - }); - - //Edit -> Delete - subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("Delete")); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - items[0].dispose(); - isModified = true; } - }); - - new MenuItem(menu, SWT.SEPARATOR); - - //Edit -> Sort(Cascade) - subItem = new MenuItem(menu, SWT.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, SWT.DROP_DOWN); - MenuItem subitem; - for(int i = 0; i < columnNames.length; i++) { - subitem = new MenuItem (submenu, SWT.NONE); - subitem.setText(columnNames [i]); - final int column = i; - subitem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - sort(column); - } - }); - - } - - 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, SWT.CASCADE); - item.setText(resAddressBook.getString("Search_menu_title")); - Menu searchMenu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(searchMenu); - - //Search -> Find... - item = new MenuItem(searchMenu, SWT.NONE); - item.setText(resAddressBook.getString("Find")); - item.setAccelerator(SWT.MOD1 + 'F'); - item.addSelectionListener(new 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, SWT.NONE); - item.setText(resAddressBook.getString("Find_next")); - item.setAccelerator(SWT.F3); - item.addSelectionListener(new 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, SWT.POP_UP); - - /** - * Adds a listener to handle enabling and disabling - * some items in the Edit submenu. - */ - popUpMenu.addMenuListener(new MenuAdapter() { - public void menuShown(MenuEvent e) { - Menu menu = (Menu)e.widget; - MenuItem[] items = menu.getItems(); - int count = table.getSelectionCount(); - items[2].setEnabled(count != 0); // edit - items[3].setEnabled(count != 0); // copy - items[4].setEnabled(copyBuffer != null); // paste - items[5].setEnabled(count != 0); // delete - items[7].setEnabled(table.getItemCount() != 0); // find - } - }); - - //New - MenuItem item = new MenuItem(popUpMenu, SWT.PUSH); - item.setText(resAddressBook.getString("Pop_up_new")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - newEntry(); - } - }); - - new MenuItem(popUpMenu, SWT.SEPARATOR); - - //Edit - item = new MenuItem(popUpMenu, SWT.PUSH); - item.setText(resAddressBook.getString("Pop_up_edit")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - editEntry(items[0]); - } - }); - - //Copy - item = new MenuItem(popUpMenu, SWT.PUSH); - item.setText(resAddressBook.getString("Pop_up_copy")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - copyBuffer = new String[table.getColumnCount()]; - for (int i = 0; i < copyBuffer.length; i++) { - copyBuffer[i] = items[0].getText(i); - } - } - }); - - //Paste - item = new MenuItem(popUpMenu, SWT.PUSH); - item.setText(resAddressBook.getString("Pop_up_paste")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (copyBuffer == null) return; - TableItem item = new TableItem(table, SWT.NONE); - item.setText(copyBuffer); - isModified = true; - } - }); - - //Delete - item = new MenuItem(popUpMenu, SWT.PUSH); - item.setText(resAddressBook.getString("Pop_up_delete")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = table.getSelection(); - if (items.length == 0) return; - items[0].dispose(); - isModified = true; - } - }); - - new MenuItem(popUpMenu, SWT.SEPARATOR); - - //Find... - item = new MenuItem(popUpMenu, SWT.PUSH); - item.setText(resAddressBook.getString("Pop_up_find")); - item.addSelectionListener(new 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, SWT.CASCADE); - item.setText(resAddressBook.getString("Help_menu_title")); - Menu menu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(menu); - - //Help -> About Text Editor - MenuItem subItem = new MenuItem(menu, SWT.NONE); - subItem.setText(resAddressBook.getString("About")); - subItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - MessageBox box = new MessageBox(shell, SWT.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 implements Comparator { - private int column; - - /** - * Constructs a RowComparator given the column index - * @param col The index (starting at zero) of the column - */ - public RowComparator(int col) { - column = col; - } - - /** - * Compares two rows (type String[]) 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 int compare(Object obj1, Object obj2) { - String[] row1 = (String[])obj1; - String[] row2 = (String[])obj2; - - return row1[column].compareTo(row2[column]); - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/DataEntryDialog.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/DataEntryDialog.java deleted file mode 100755 index 3a51431b43..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/DataEntryDialog.java +++ /dev/null @@ -1,163 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.addressbook; - - -/* Imports */ -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import java.util.ResourceBundle; - -/** - * 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 = ResourceBundle.getBundle("examples_addressbook"); - - Shell shell; - String[] values; - String[] labels; - -public DataEntryDialog(Shell parent) { - shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.PRIMARY_MODAL); - shell.setLayout(new GridLayout()); -} - -private void addTextListener(final Text text) { - text.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e){ - Integer index = (Integer)(text.getData("index")); - values[index.intValue()] = text.getText(); - } - }); -} -private void createControlButtons() { - Composite composite = new Composite(shell, SWT.NONE); - composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - composite.setLayout(layout); - - Button okButton = new Button(composite, SWT.PUSH); - okButton.setText(resAddressBook.getString("OK")); - okButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - shell.close(); - } - }); - - Button cancelButton = new Button(composite, SWT.PUSH); - cancelButton.setText(resAddressBook.getString("Cancel")); - cancelButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - values = null; - shell.close(); - } - }); - - shell.setDefaultButton(okButton); -} - -private void createTextWidgets() { - if (labels == null) return; - - Composite composite = new Composite(shell, SWT.NONE); - composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - GridLayout layout= new GridLayout(); - layout.numColumns = 2; - composite.setLayout(layout); - - if (values == null) - values = new String[labels.length]; - - for (int i = 0; i < labels.length; i++) { - Label label = new Label(composite, SWT.RIGHT); - label.setText(labels[i]); - Text text = new Text(composite, SWT.BORDER); - GridData gridData = new GridData(); - gridData.widthHint = 400; - text.setLayoutData(gridData); - if (values[i] != null) { - text.setText(values[i]); - } - text.setData("index", new Integer(i)); - addTextListener(text); - } -} - -public String[] getLabels() { - return labels; -} -public String getTitle() { - return shell.getText(); -} -/** - * Returns the contents of the <code>Text</code> widgets in the dialog in a - * <code>String</code> array. - * - * @return String[] - * The contents of the text widgets of the dialog. - * May return null if all text widgets are empty. - */ -public String[] 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 String[] open() { - createTextWidgets(); - createControlButtons(); - shell.pack(); - shell.open(); - Display display = shell.getDisplay(); - while(!shell.isDisposed()){ - if(!display.readAndDispatch()) - display.sleep(); - } - - return getValues(); -} -public void setLabels(String[] labels) { - this.labels = labels; -} -public void setTitle(String 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 String[] - * The values to which the dialog contents will be set. - */ -public void setValues(String[] itemInfo) { - if (labels == null) return; - - if (values == null) - values = new String[labels.length]; - - int numItems = Math.min(values.length, itemInfo.length); - for(int i = 0; i < numItems; i++) { - values[i] = itemInfo[i]; - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/FindListener.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/FindListener.java deleted file mode 100755 index 1732505df3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/FindListener.java +++ /dev/null @@ -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 - *******************************************************************************/ -package org.eclipse.swt.examples.addressbook; - - -public interface FindListener { - -public boolean find(); - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/SearchDialog.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/SearchDialog.java deleted file mode 100755 index 24b66e2e85..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/addressbook/SearchDialog.java +++ /dev/null @@ -1,202 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.addressbook; - - -/* Imports */ -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; -import java.util.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 = ResourceBundle.getBundle("examples_addressbook"); - - 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 SearchDialog(Shell parent) { - shell = new Shell(parent, SWT.CLOSE | SWT.BORDER | SWT.TITLE); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - shell.setLayout(layout); - shell.setText(resAddressBook.getString("Search_dialog_title")); - shell.addShellListener(new 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, SWT.LEFT); - label.setText(resAddressBook.getString("Dialog_find_what")); - searchText = new Text(shell, SWT.BORDER); - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.widthHint = 200; - searchText.setLayoutData(gridData); - searchText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - boolean enableFind = (searchText.getCharCount() != 0); - findButton.setEnabled(enableFind); - } - }); - - searchAreaLabel = new Label(shell, SWT.LEFT); - searchArea = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY); - gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.widthHint = 200; - searchArea.setLayoutData(gridData); - - matchCase = new Button(shell, SWT.CHECK); - matchCase.setText(resAddressBook.getString("Dialog_match_case")); - gridData = new GridData(); - gridData.horizontalSpan = 2; - matchCase.setLayoutData(gridData); - - matchWord = new Button(shell, SWT.CHECK); - matchWord.setText(resAddressBook.getString("Dialog_match_word")); - gridData = new GridData(); - gridData.horizontalSpan = 2; - matchWord.setLayoutData(gridData); - - Group direction = new Group(shell, SWT.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, SWT.RADIO); - up.setText(resAddressBook.getString("Dialog_dir_up")); - up.setSelection(false); - - down = new Button(direction, SWT.RADIO); - down.setText(resAddressBook.getString("Dialog_dir_down")); - down.setSelection(true); - - Composite composite = new Composite(shell, SWT.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, SWT.PUSH); - findButton.setText(resAddressBook.getString("Dialog_find")); - findButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - findButton.setEnabled(false); - findButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (!findHandler.find()){ - MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK | SWT.PRIMARY_MODAL); - box.setText(shell.getText()); - box.setMessage(resAddressBook.getString("Cannot_find") + "\"" + searchText.getText() + "\""); - box.open(); - } - } - }); - - Button cancelButton = new Button(composite, SWT.PUSH); - cancelButton.setText(resAddressBook.getString("Cancel")); - cancelButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); - cancelButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - shell.setVisible(false); - } - }); - - shell.pack(); -} -public String getSearchAreaLabel(String label) { - return searchAreaLabel.getText(); -} - -public String[] getsearchAreaNames() { - return searchArea.getItems(); -} -public boolean getMatchCase() { - return matchCase.getSelection(); -} -public boolean getMatchWord() { - return matchWord.getSelection(); -} -public String getSearchString() { - return searchText.getText(); -} -public boolean 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(String[] names) { - for (int i = 0; i < names.length; i++) { - searchArea.add(names[i]); - } - searchArea.select(0); -} -public void setSearchAreaLabel(String label) { - searchAreaLabel.setText(label); -} -public void setMatchCase(boolean match) { - matchCase.setSelection(match); -} -public void setMatchWord(boolean match) { - matchWord.setSelection(match); -} -public void setSearchDown(boolean searchDown){ - down.setSelection(searchDown); -} -public void setSearchString(String 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; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/BrowserExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/BrowserExample.java deleted file mode 100644 index 824e58763f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/BrowserExample.java +++ /dev/null @@ -1,372 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.browserexample; - -import org.eclipse.swt.*; -import org.eclipse.swt.browser.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -import java.io.*; -import java.util.*; - -public class BrowserExample { - static ResourceBundle resourceBundle = ResourceBundle.getBundle("examples_browser"); - int index; - boolean busy; - Image images[]; - Image icon = null; - boolean title = false; - Composite parent; - Text locationBar; - Browser browser; - ToolBar toolbar; - Canvas canvas; - ToolItem itemBack, itemForward; - Label status; - ProgressBar progressBar; - SWTError error = null; - - static final String[] imageLocations = { - "eclipse01.bmp", "eclipse02.bmp", "eclipse03.bmp", "eclipse04.bmp", "eclipse05.bmp", - "eclipse06.bmp", "eclipse07.bmp", "eclipse08.bmp", "eclipse09.bmp", "eclipse10.bmp", - "eclipse11.bmp", "eclipse12.bmp",}; - static final String iconLocation = "document.gif"; - - public BrowserExample(Composite parent, boolean top) { - this.parent = parent; - try { - browser = new Browser(parent, SWT.BORDER); - } catch (SWTError e) { - error = e; - /* Browser widget could not be instantiated */ - parent.setLayout(new FillLayout()); - Label label = new Label(parent, SWT.CENTER | SWT.WRAP); - label.setText(getResourceString("BrowserNotCreated")); - parent.layout(true); - return; - } - initResources(); - final Display display = parent.getDisplay(); - browser.setData("org.eclipse.swt.examples.browserexample.BrowserApplication", this); - browser.addOpenWindowListener(new OpenWindowListener() { - public void open(WindowEvent event) { - Shell shell = new Shell(display); - if (icon != null) shell.setImage(icon); - shell.setLayout(new FillLayout()); - BrowserExample app = new BrowserExample(shell, false); - app.setShellDecoration(icon, true); - event.browser = app.getBrowser(); - } - }); - if (top) { - browser.setUrl(getResourceString("Startup")); - show(false, null, null, true, true, true, true); - } else { - browser.addVisibilityWindowListener(new VisibilityWindowListener() { - public void hide(WindowEvent e) { - } - public void show(WindowEvent e) { - Browser browser = (Browser)e.widget; - BrowserExample app = (BrowserExample)browser.getData("org.eclipse.swt.examples.browserexample.BrowserApplication"); - app.show(true, e.location, e.size, e.addressBar, e.menuBar, e.statusBar, e.toolBar); - } - }); - browser.addCloseWindowListener(new CloseWindowListener() { - public void close(WindowEvent event) { - Browser browser = (Browser)event.widget; - Shell shell = browser.getShell(); - shell.close(); - } - }); - } - } - - /** - * Disposes of all resources associated with a particular - * instance of the BrowserApplication. - */ - public void dispose() { - freeResources(); - } - - /** - * 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 String getResourceString(String key) { - try { - return resourceBundle.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - public SWTError getError() { return error; } - - public Browser getBrowser() { return browser; } - - public void setShellDecoration(Image icon, boolean title) { - this.icon = icon; - this.title = title; - } - - void show(boolean owned, Point location, Point size, boolean addressBar, boolean menuBar, boolean statusBar, boolean toolBar) { - final Shell shell = browser.getShell(); - if (owned) { - if (location != null) shell.setLocation(location); - if (size != null) shell.setSize(shell.computeSize(size.x, size.y)); - } - FormData data = null; - if (toolBar) { - toolbar = new ToolBar(parent, SWT.NONE); - data = new FormData(); - data.top = new FormAttachment(0, 5); - toolbar.setLayoutData(data); - itemBack = new ToolItem(toolbar, SWT.PUSH); - itemBack.setText(getResourceString("Back")); - itemForward = new ToolItem(toolbar, SWT.PUSH); - itemForward.setText(getResourceString("Forward")); - final ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH); - itemStop.setText(getResourceString("Stop")); - final ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH); - itemRefresh.setText(getResourceString("Refresh")); - final ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH); - itemGo.setText(getResourceString("Go")); - - itemBack.setEnabled(browser.isBackEnabled()); - itemForward.setEnabled(browser.isForwardEnabled()); - Listener listener = new Listener() { - public void handleEvent(Event event) { - ToolItem item = (ToolItem)event.widget; - if (item == itemBack) browser.back(); - else if (item == itemForward) browser.forward(); - else if (item == itemStop) browser.stop(); - else if (item == itemRefresh) browser.refresh(); - else if (item == itemGo) browser.setUrl(locationBar.getText()); - } - }; - itemBack.addListener(SWT.Selection, listener); - itemForward.addListener(SWT.Selection, listener); - itemStop.addListener(SWT.Selection, listener); - itemRefresh.addListener(SWT.Selection, listener); - itemGo.addListener(SWT.Selection, listener); - - canvas = new Canvas(parent, SWT.NO_BACKGROUND); - data = new FormData(); - data.width = 24; - data.height = 24; - data.top = new FormAttachment(0, 5); - data.right = new FormAttachment(100, -5); - canvas.setLayoutData(data); - - final Rectangle rect = images[0].getBounds(); - canvas.addListener(SWT.Paint, new Listener() { - public void handleEvent(Event e) { - Point pt = ((Canvas)e.widget).getSize(); - e.gc.drawImage(images[index], 0, 0, rect.width, rect.height, 0, 0, pt.x, pt.y); - } - }); - canvas.addListener(SWT.MouseDown, new Listener() { - public void handleEvent(Event e) { - browser.setUrl(getResourceString("Startup")); - } - }); - - final Display display = parent.getDisplay(); - display.asyncExec(new Runnable() { - public void run() { - if (canvas.isDisposed()) return; - if (busy) { - index++; - if (index == images.length) index = 0; - canvas.redraw(); - } - display.timerExec(150, this); - } - }); - } - if (addressBar) { - locationBar = new Text(parent, SWT.BORDER); - data = new FormData(); - if (toolbar != null) { - data.top = new FormAttachment(toolbar, 0, SWT.TOP); - data.left = new FormAttachment(toolbar, 5, SWT.RIGHT); - data.right = new FormAttachment(canvas, -5, SWT.DEFAULT); - } else { - data.top = new FormAttachment(0, 0); - data.left = new FormAttachment(0, 0); - data.right = new FormAttachment(100, 0); - } - locationBar.setLayoutData(data); - locationBar.addListener(SWT.DefaultSelection, new Listener() { - public void handleEvent(Event e) { - browser.setUrl(locationBar.getText()); - } - }); - } - if (statusBar) { - status = new Label(parent, SWT.NONE); - progressBar = new ProgressBar(parent, SWT.NONE); - - data = new FormData(); - data.left = new FormAttachment(0, 5); - data.right = new FormAttachment(progressBar, 0, SWT.DEFAULT); - data.bottom = new FormAttachment(100, -5); - status.setLayoutData(data); - - data = new FormData(); - data.right = new FormAttachment(100, -5); - data.bottom = new FormAttachment(100, -5); - progressBar.setLayoutData(data); - - browser.addStatusTextListener(new StatusTextListener() { - public void changed(StatusTextEvent event) { - status.setText(event.text); - } - }); - } - parent.setLayout(new FormLayout()); - - Control aboveBrowser = toolBar ? (Control)canvas : (addressBar ? (Control)locationBar : null); - data = new FormData(); - data.left = new FormAttachment(0, 0); - data.top = aboveBrowser != null ? new FormAttachment(aboveBrowser, 5, SWT.DEFAULT) : new FormAttachment(0, 0); - data.right = new FormAttachment(100, 0); - data.bottom = status != null ? new FormAttachment(status, -5, SWT.DEFAULT) : new FormAttachment(100, 0); - browser.setLayoutData(data); - - if (statusBar || toolBar) { - browser.addProgressListener(new ProgressListener() { - public void changed(ProgressEvent event) { - if (event.total == 0) return; - int ratio = event.current * 100 / event.total; - if (progressBar != null) progressBar.setSelection(ratio); - busy = event.current != event.total; - if (!busy) { - index = 0; - if (canvas != null) canvas.redraw(); - } - } - public void completed(ProgressEvent event) { - if (progressBar != null) progressBar.setSelection(0); - busy = false; - index = 0; - if (canvas != null) { - itemBack.setEnabled(browser.isBackEnabled()); - itemForward.setEnabled(browser.isForwardEnabled()); - canvas.redraw(); - } - } - }); - } - if (addressBar || statusBar || toolBar) { - browser.addLocationListener(new LocationListener() { - public void changed(LocationEvent event) { - busy = true; - if (event.top && locationBar != null) locationBar.setText(event.location); - } - public void changing(LocationEvent event) { - } - }); - } - if (title) { - browser.addTitleListener(new TitleListener() { - public void changed(TitleEvent event) { - shell.setText(event.title+" - "+getResourceString("window.title")); - } - }); - } - parent.layout(true); - if (owned) shell.open(); - } - - /** - * Grabs input focus - */ - public void focus() { - if (locationBar != null) locationBar.setFocus(); - else if (browser != null) browser.setFocus(); - else parent.setFocus(); - } - - /** - * Frees the resources - */ - void freeResources() { - if (images != null) { - for (int i = 0; i < images.length; ++i) { - final Image image = images[i]; - if (image != null) image.dispose(); - } - images = null; - } - } - - /** - * Loads the resources - */ - void initResources() { - final Class clazz = this.getClass(); - if (resourceBundle != null) { - try { - if (images == null) { - images = new Image[imageLocations.length]; - for (int i = 0; i < imageLocations.length; ++i) { - InputStream sourceStream = clazz.getResourceAsStream(imageLocations[i]); - ImageData source = new ImageData(sourceStream); - ImageData mask = source.getTransparencyMask(); - images[i] = new Image(null, source, mask); - try { - sourceStream.close(); - } catch (IOException e) { - e.printStackTrace (); - } - } - } - return; - } catch (Throwable t) { - } - } - String error = (resourceBundle != null) ? getResourceString("error.CouldNotLoadResources") : "Unable to load resources"; - freeResources(); - throw new RuntimeException(error); - } - - public static void main(String [] args) { - Display display = new Display(); - Shell shell = new Shell(display); - shell.setLayout(new FillLayout()); - shell.setText(getResourceString("window.title")); - InputStream stream = BrowserExample.class.getResourceAsStream(iconLocation); - Image icon = new Image(display, stream); - shell.setImage(icon); - try { - stream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - BrowserExample app = new BrowserExample(shell, true); - app.setShellDecoration(icon, true); - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - icon.dispose(); - app.dispose(); - display.dispose(); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/document.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/document.gif Binary files differdeleted file mode 100644 index 895e22110d..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/document.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse01.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse01.bmp Binary files differdeleted file mode 100644 index 43116e6d8e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse01.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse02.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse02.bmp Binary files differdeleted file mode 100644 index 8db04efb6b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse02.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse03.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse03.bmp Binary files differdeleted file mode 100644 index 5fc7b1003c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse03.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse04.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse04.bmp Binary files differdeleted file mode 100644 index 2140654bb2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse04.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse05.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse05.bmp Binary files differdeleted file mode 100644 index 7e45a99b5b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse05.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse06.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse06.bmp Binary files differdeleted file mode 100644 index aaa888a67f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse06.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse07.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse07.bmp Binary files differdeleted file mode 100644 index 50e22225ba..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse07.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse08.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse08.bmp Binary files differdeleted file mode 100644 index b1ac29dc96..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse08.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse09.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse09.bmp Binary files differdeleted file mode 100644 index 561f830ffc..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse09.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse10.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse10.bmp Binary files differdeleted file mode 100644 index 6ae79b2df8..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse10.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse11.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse11.bmp Binary files differdeleted file mode 100644 index a0c24a6815..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse11.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse12.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse12.bmp Binary files differdeleted file mode 100644 index 1cae71cf7e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/browserexample/eclipse12.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/ClipboardExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/ClipboardExample.java deleted file mode 100644 index c2097c4b1c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/ClipboardExample.java +++ /dev/null @@ -1,611 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.clipboard; - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.dnd.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -public class ClipboardExample { - - Clipboard clipboard; - Shell shell; - Text text; - Combo combo; - StyledText styledText; - Label status; - static final int SIZE = 60; - -public static void main( String[] args) { - Display display = new Display(); - new ClipboardExample().open(display); - display.dispose(); -} -public void open(Display display) { - clipboard = new Clipboard(display); - shell = new Shell (display); - shell.setText("SWT Clipboard"); - shell.setLayout(new FillLayout()); - - ScrolledComposite sc = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL); - Composite parent = new Composite(sc, SWT.NONE); - sc.setContent(parent); - parent.setLayout(new GridLayout(2, true)); - - Group copyGroup = new Group(parent, SWT.NONE); - copyGroup.setText("Copy From:"); - GridData data = new GridData(GridData.FILL_BOTH); - copyGroup.setLayoutData(data); - copyGroup.setLayout(new GridLayout(3, false)); - - Group pasteGroup = new Group(parent, SWT.NONE); - pasteGroup.setText("Paste To:"); - data = new GridData(GridData.FILL_BOTH); - pasteGroup.setLayoutData(data); - pasteGroup.setLayout(new GridLayout(3, false)); - - Group controlGroup = new Group(parent, SWT.NONE); - controlGroup.setText("Control API:"); - data = new GridData(GridData.FILL_BOTH); - data.horizontalSpan = 2; - controlGroup.setLayoutData(data); - controlGroup.setLayout(new GridLayout(5, false)); - - Group typesGroup = new Group(parent, SWT.NONE); - typesGroup.setText("Available Types"); - data = new GridData(GridData.FILL_BOTH); - data.horizontalSpan = 2; - typesGroup.setLayoutData(data); - typesGroup.setLayout(new GridLayout(2, false)); - - status = new Label(parent, SWT.BORDER); - data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 2; - data.heightHint = 60; - status.setLayoutData(data); - - createTextTransfer(copyGroup, pasteGroup); - createRTFTransfer(copyGroup, pasteGroup); - createHTMLTransfer(copyGroup, pasteGroup); - createFileTransfer(copyGroup, pasteGroup); - createImageTransfer(copyGroup, pasteGroup); - createMyTransfer(copyGroup, pasteGroup); - createControlTransfer(controlGroup); - createAvailableTypes(typesGroup); - - sc.setMinSize(parent.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - sc.setExpandHorizontal(true); - sc.setExpandVertical(true); - - Point size = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT); - Rectangle monitorArea = shell.getMonitor().getClientArea(); - shell.setSize(Math.min(size.x, monitorArea.width - 20), Math.min(size.y, monitorArea.height - 20)); - shell.open(); - while (!shell.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - clipboard.dispose(); -} -void createTextTransfer(Composite copyParent, Composite pasteParent) { - - // TextTransfer - Label l = new Label(copyParent, SWT.NONE); - l.setText("TextTransfer:"); //$NON-NLS-1$ - final Text copyText = new Text(copyParent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - copyText.setText("some\nplain\ntext"); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - copyText.setLayoutData(data); - Button b = new Button(copyParent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String data = copyText.getText(); - if (data.length() > 0) { - status.setText(""); - clipboard.setContents(new Object[] {data}, new Transfer[] {TextTransfer.getInstance()}); - } else { - status.setText("nothing to copy"); - } - } - }); - - l = new Label(pasteParent, SWT.NONE); - l.setText("TextTransfer:"); //$NON-NLS-1$ - final Text pasteText = new Text(pasteParent, SWT.READ_ONLY | SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - pasteText.setLayoutData(data); - b = new Button(pasteParent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String data = (String)clipboard.getContents(TextTransfer.getInstance()); - if (data != null && data.length() > 0) { - status.setText(""); - pasteText.setText("begin paste>"+data+"<end paste"); - } else { - status.setText("nothing to paste"); - } - } - }); -} -void createRTFTransfer(Composite copyParent, Composite pasteParent){ - // RTF Transfer - Label l = new Label(copyParent, SWT.NONE); - l.setText("RTFTransfer:"); //$NON-NLS-1$ - final Text copyRtfText = new Text(copyParent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - copyRtfText.setText("some\nrtf\ntext"); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - copyRtfText.setLayoutData(data); - Button b = new Button(copyParent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String data = copyRtfText.getText(); - if (data.length() > 0) { - status.setText(""); - data = "{\\rtf1{\\colortbl;\\red255\\green0\\blue0;}\\uc1\\b\\i " + data + "}"; - clipboard.setContents(new Object[] {data}, new Transfer[] {RTFTransfer.getInstance()}); - } else { - status.setText("nothing to copy"); - } - } - }); - - l = new Label(pasteParent, SWT.NONE); - l.setText("RTFTransfer:"); //$NON-NLS-1$ - final Text pasteRtfText = new Text(pasteParent, SWT.READ_ONLY | SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - pasteRtfText.setLayoutData(data); - b = new Button(pasteParent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String data = (String)clipboard.getContents(RTFTransfer.getInstance()); - if (data != null && data.length() > 0) { - status.setText(""); - pasteRtfText.setText("start paste>"+data+"<end paste"); - } else { - status.setText("nothing to paste"); - } - } - }); -} -void createHTMLTransfer(Composite copyParent, Composite pasteParent){ - // HTML Transfer - Label l = new Label(copyParent, SWT.NONE); - l.setText("HTMLTransfer:"); //$NON-NLS-1$ - final Text copyHtmlText = new Text(copyParent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - copyHtmlText.setText("<b>Hello World</b>"); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - copyHtmlText.setLayoutData(data); - Button b = new Button(copyParent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String data = copyHtmlText.getText(); - if (data.length() > 0) { - status.setText(""); - clipboard.setContents(new Object[] {data}, new Transfer[] {HTMLTransfer.getInstance()}); - } else { - status.setText("nothing to copy"); - } - } - }); - - l = new Label(pasteParent, SWT.NONE); - l.setText("HTMLTransfer:"); //$NON-NLS-1$ - final Text pasteHtmlText = new Text(pasteParent, SWT.READ_ONLY | SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - pasteHtmlText.setLayoutData(data); - b = new Button(pasteParent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String data = (String)clipboard.getContents(HTMLTransfer.getInstance()); - if (data != null && data.length() > 0) { - status.setText(""); - pasteHtmlText.setText("start paste>"+data+"<end paste"); - } else { - status.setText("nothing to paste"); - } - } - }); -} -void createFileTransfer(Composite copyParent, Composite pasteParent){ - //File Transfer - Label l = new Label(copyParent, SWT.NONE); - l.setText("FileTransfer:"); //$NON-NLS-1$ - - Composite c = new Composite(copyParent, SWT.NONE); - c.setLayout(new GridLayout(2, false)); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - c.setLayoutData(data); - - final Table copyFileTable = new Table(c, SWT.MULTI | SWT.BORDER); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - data.horizontalSpan = 2; - copyFileTable.setLayoutData(data); - - Button b = new Button(c, SWT.PUSH); - b.setText("Select file(s)"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI); - String result = dialog.open(); - if (result != null && result.length() > 0){ - String separator = System.getProperty("file.separator"); - String path = dialog.getFilterPath(); - String[] names = dialog.getFileNames(); - for (int i = 0; i < names.length; i++) { - TableItem item = new TableItem(copyFileTable, SWT.NONE); - item.setText(path+separator+names[i]); - } - } - } - }); - b = new Button(c, SWT.PUSH); - b.setText("Select directory"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - DirectoryDialog dialog = new DirectoryDialog(shell, SWT.OPEN); - String result = dialog.open(); - if (result != null && result.length() > 0){ - //copyFileTable.removeAll(); - TableItem item = new TableItem(copyFileTable, SWT.NONE); - item.setText(result); - } - } - }); - - b = new Button(copyParent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem[] items = copyFileTable.getItems(); - if (items.length > 0){ - status.setText(""); - String[] data = new String[items.length]; - for (int i = 0; i < data.length; i++) { - data[i] = items[i].getText(); - } - clipboard.setContents(new Object[] {data}, new Transfer[] {FileTransfer.getInstance()}); - } else { - status.setText("nothing to copy"); - } - } - }); - - l = new Label(pasteParent, SWT.NONE); - l.setText("FileTransfer:"); //$NON-NLS-1$ - final Table pasteFileTable = new Table(pasteParent, SWT.MULTI | SWT.BORDER); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - pasteFileTable.setLayoutData(data); - b = new Button(pasteParent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - String[] data = (String[])clipboard.getContents(FileTransfer.getInstance()); - if (data != null && data.length > 0) { - status.setText(""); - pasteFileTable.removeAll(); - for (int i = 0; i < data.length; i++) { - TableItem item = new TableItem(pasteFileTable, SWT.NONE); - item.setText(data[i]); - } - } else { - status.setText("nothing to paste"); - } - } - }); -} - -void createImageTransfer(Composite copyParent, Composite pasteParent){ - final Image[] copyImage = new Image[] {null}; - Label l = new Label(copyParent, SWT.NONE); - l.setText("ImageTransfer:"); //$NON-NLS-1$ - - Composite c = new Composite(copyParent, SWT.NONE); - c.setLayout(new GridLayout(1, false)); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - c.setLayoutData(data); - - final Canvas copyImageCanvas = new Canvas(c, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - copyImageCanvas.setLayoutData(data); - - final Point copyOrigin = new Point(0, 0); - final ScrollBar copyHBar = copyImageCanvas.getHorizontalBar(); - copyHBar.setEnabled(false); - copyHBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - if (copyImage[0] != null) { - int hSelection = copyHBar.getSelection(); - int destX = -hSelection - copyOrigin.x; - Rectangle rect = copyImage[0].getBounds(); - copyImageCanvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false); - copyOrigin.x = -hSelection; - } - } - }); - final ScrollBar copyVBar = copyImageCanvas.getVerticalBar(); - copyVBar.setEnabled(false); - copyVBar.addListener(SWT.Selection, new Listener() { - public void handleEvent (Event e) { - if (copyImage[0] != null) { - int vSelection = copyVBar.getSelection(); - int destY = -vSelection - copyOrigin.y; - Rectangle rect = copyImage[0].getBounds(); - copyImageCanvas.scroll(0, destY, 0, 0, rect.width, rect.height, false); - copyOrigin.y = -vSelection; - } - } - }); - copyImageCanvas.addListener(SWT.Paint, new Listener() { - public void handleEvent(Event e) { - if(copyImage[0] != null) { - GC gc = e.gc; - gc.drawImage(copyImage[0], copyOrigin.x, copyOrigin.y); - Rectangle rect = copyImage[0].getBounds(); - Rectangle client = copyImageCanvas.getClientArea (); - int marginWidth = client.width - rect.width; - if (marginWidth > 0) { - gc.fillRectangle (rect.width, 0, marginWidth, client.height); - } - int marginHeight = client.height - rect.height; - if (marginHeight > 0) { - gc.fillRectangle(0, rect.height, client.width, marginHeight); - } - gc.dispose(); - } - } - }); - Button openButton = new Button(c, SWT.PUSH); - openButton.setText("Open Image"); - data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalAlignment = SWT.CENTER; - openButton.setLayoutData(data); - openButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - FileDialog dialog = new FileDialog (shell, SWT.OPEN); - dialog.setText("Open an image file or cancel"); - String string = dialog.open (); - if (string != null) { - if (copyImage[0] != null) { - System.out.println("CopyImage"); - copyImage[0].dispose(); - } - copyImage[0] = new Image(e.display, string); - copyVBar.setEnabled(true); - copyHBar.setEnabled(true); - copyOrigin.x = 0; copyOrigin.y = 0; - Rectangle rect = copyImage[0].getBounds(); - Rectangle client = copyImageCanvas.getClientArea(); - copyHBar.setMaximum(rect.width); - copyVBar.setMaximum(rect.height); - copyHBar.setThumb(Math.min(rect.width, client.width)); - copyVBar.setThumb(Math.min(rect.height, client.height)); - copyImageCanvas.scroll(0, 0, 0, 0, rect.width, rect.height, true); - copyVBar.setSelection(0); - copyHBar.setSelection(0); - copyImageCanvas.redraw(); - } - } - }); - Button b = new Button(copyParent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (copyImage[0] != null) { - status.setText(""); - clipboard.setContents(new Object[] {copyImage[0].getImageData()}, new Transfer[] {ImageTransfer.getInstance()}); - } else { - status.setText("nothing to copy"); - } - } - }); - - final Image[] pasteImage = new Image[] {null}; - l = new Label(pasteParent, SWT.NONE); - l.setText("ImageTransfer:"); - final Canvas pasteImageCanvas = new Canvas(pasteParent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL); - data.heightHint = data.widthHint = SIZE; - pasteImageCanvas.setLayoutData(data); - final Point pasteOrigin = new Point(0, 0); - final ScrollBar pasteHBar = pasteImageCanvas.getHorizontalBar(); - pasteHBar.setEnabled(false); - pasteHBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - if (pasteImage[0] != null) { - int hSelection = pasteHBar.getSelection(); - int destX = -hSelection - pasteOrigin.x; - Rectangle rect = pasteImage[0].getBounds(); - pasteImageCanvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false); - pasteOrigin.x = -hSelection; - } - } - }); - final ScrollBar pasteVBar = pasteImageCanvas.getVerticalBar(); - pasteVBar.setEnabled(false); - pasteVBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - if (pasteImage[0] != null) { - int vSelection = pasteVBar.getSelection(); - int destY = -vSelection - pasteOrigin.y; - Rectangle rect = pasteImage[0].getBounds(); - pasteImageCanvas.scroll(0, destY, 0, 0, rect.width, rect.height, false); - pasteOrigin.y = -vSelection; - } - } - }); - pasteImageCanvas.addListener(SWT.Paint, new Listener() { - public void handleEvent(Event e) { - if(pasteImage[0] != null) { - GC gc = e.gc; - gc.drawImage(pasteImage[0], pasteOrigin.x, pasteOrigin.y); - Rectangle rect = pasteImage[0].getBounds(); - Rectangle client = pasteImageCanvas.getClientArea (); - int marginWidth = client.width - rect.width; - if (marginWidth > 0) { - gc.fillRectangle(rect.width, 0, marginWidth, client.height); - } - int marginHeight = client.height - rect.height; - if (marginHeight > 0) { - gc.fillRectangle(0, rect.height, client.width, marginHeight); - } - gc.dispose(); - } - } - }); - b = new Button(pasteParent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - ImageData data =(ImageData)clipboard.getContents(ImageTransfer.getInstance()); - if (data != null) { - if (pasteImage[0] != null) { - System.out.println("PasteImage"); - pasteImage[0].dispose(); - } - status.setText(""); - pasteImage[0] = new Image(e.display, data); - pasteVBar.setEnabled(true); - pasteHBar.setEnabled(true); - pasteOrigin.x = 0; pasteOrigin.y = 0; - Rectangle rect = pasteImage[0].getBounds(); - Rectangle client = pasteImageCanvas.getClientArea(); - pasteHBar.setMaximum(rect.width); - pasteVBar.setMaximum(rect.height); - pasteHBar.setThumb(Math.min(rect.width, client.width)); - pasteVBar.setThumb(Math.min(rect.height, client.height)); - pasteImageCanvas.scroll(0, 0, 0, 0, rect.width, rect.height, true); - pasteVBar.setSelection(0); - pasteHBar.setSelection(0); - pasteImageCanvas.redraw(); - } else { - status.setText("nothing to paste"); - } - } - }); -} -void createMyTransfer(Composite copyParent, Composite pasteParent){ - // MyType Transfer - // TODO -} -void createControlTransfer(Composite parent){ - Label l = new Label(parent, SWT.NONE); - l.setText("Text:"); - Button b = new Button(parent, SWT.PUSH); - b.setText("Cut"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - text.cut(); - } - }); - b = new Button(parent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - text.copy(); - } - }); - b = new Button(parent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - text.paste(); - } - }); - text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - text.setLayoutData(data); - - l = new Label(parent, SWT.NONE); - l.setText("Combo:"); - b = new Button(parent, SWT.PUSH); - b.setText("Cut"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - combo.cut(); - } - }); - b = new Button(parent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - combo.copy(); - } - }); - b = new Button(parent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - combo.paste(); - } - }); - combo = new Combo(parent, SWT.NONE); - combo.setItems(new String[] {"Item 1", "Item 2", "Item 3", "A longer Item"}); - - l = new Label(parent, SWT.NONE); - l.setText("StyledText:"); - l = new Label(parent, SWT.NONE); - l.setVisible(false); - b = new Button(parent, SWT.PUSH); - b.setText("Copy"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - styledText.copy(); - } - }); - b = new Button(parent, SWT.PUSH); - b.setText("Paste"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - styledText.paste(); - } - }); - styledText = new StyledText(parent, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); - data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = data.widthHint = SIZE; - styledText.setLayoutData(data); -} -void createAvailableTypes(Composite parent){ - final List list = new List(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); - GridData data = new GridData(GridData.FILL_BOTH); - data.heightHint = 100; - list.setLayoutData(data); - Button b = new Button(parent, SWT.PUSH); - b.setText("Get Available Types"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - list.removeAll(); - String[] names = clipboard.getAvailableTypeNames(); - for (int i = 0; i < names.length; i++) { - list.add(names[i]); - } - } - }); -} -}
\ No newline at end of file diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/MyType.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/MyType.java deleted file mode 100644 index 94cdfcd786..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/MyType.java +++ /dev/null @@ -1,16 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.clipboard; - -public class MyType { - String firstName; - String lastName; -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/MyTypeTransfer.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/MyTypeTransfer.java deleted file mode 100644 index 4d09e3f901..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/clipboard/MyTypeTransfer.java +++ /dev/null @@ -1,103 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 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 - *******************************************************************************/ -package org.eclipse.swt.examples.clipboard; - -import java.io.*; -import org.eclipse.swt.dnd.*; - -public class MyTypeTransfer extends ByteArrayTransfer { - - private static final String MYTYPENAME = "name_list"; //$NON-NLS-1$ - private static final int MYTYPEID = registerType(MYTYPENAME); - private static MyTypeTransfer _instance = new MyTypeTransfer(); - -public static MyTypeTransfer getInstance () { - return _instance; -} -public void javaToNative (Object object, TransferData transferData) { - if (!checkMyType(object) || !isSupportedType(transferData)) { - DND.error(DND.ERROR_INVALID_DATA); - } - MyType[] myTypes = (MyType[]) object; - try { - // write data to a byte array and then ask super to convert to pMedium - ByteArrayOutputStream out = new ByteArrayOutputStream(); - DataOutputStream writeOut = new DataOutputStream(out); - for (int i = 0, length = myTypes.length; i < length; i++){ - byte[] buffer = myTypes[i].firstName.getBytes(); - writeOut.writeInt(buffer.length); - writeOut.write(buffer); - buffer = myTypes[i].firstName.getBytes(); - writeOut.writeInt(buffer.length); - writeOut.write(buffer); - } - byte[] buffer = out.toByteArray(); - writeOut.close(); - super.javaToNative(buffer, transferData); - } catch (IOException e) { - } -} -public Object nativeToJava(TransferData transferData){ - if (isSupportedType(transferData)) { - - byte[] buffer = (byte[])super.nativeToJava(transferData); - if (buffer == null) return null; - - MyType[] myData = new MyType[0]; - try { - ByteArrayInputStream in = new ByteArrayInputStream(buffer); - DataInputStream readIn = new DataInputStream(in); - while(readIn.available() > 20) { - MyType datum = new MyType(); - int size = readIn.readInt(); - byte[] name = new byte[size]; - readIn.read(name); - datum.firstName = new String(name); - size = readIn.readInt(); - name = new byte[size]; - readIn.read(name); - datum.lastName = new String(name); - MyType[] newMyData = new MyType[myData.length + 1]; - System.arraycopy(myData, 0, newMyData, 0, myData.length); - newMyData[myData.length] = datum; - myData = newMyData; - } - readIn.close(); - } catch (IOException ex) { - return null; - } - return myData; - } - - return null; -} -protected String[] getTypeNames(){ - return new String[]{MYTYPENAME}; -} -protected int[] getTypeIds(){ - return new int[] {MYTYPEID}; -} -boolean checkMyType(Object object) { - if (object == null || !(object instanceof MyType[]) || ((MyType[])object).length == 0) return false; - MyType[] myTypes = (MyType[])object; - for (int i = 0; i < myTypes.length; i++) { - if (myTypes[i] == null || - myTypes[i].firstName == null || - myTypes[i].firstName.length() == 0 || - myTypes[i].lastName == null || - myTypes[i].lastName.length() == 0) return false; - } - return true; -} -protected boolean validate(Object object) { - return checkMyType(object); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/AlignableTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/AlignableTab.java deleted file mode 100755 index 075ee21e96..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/AlignableTab.java +++ /dev/null @@ -1,89 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -/** - * <code>AlignableTab</code> is the abstract - * superclass of example controls that can be - * aligned. - */ -abstract class AlignableTab extends Tab { - - /* Alignment Controls */ - Button leftButton, rightButton, centerButton; - - /* Alignment Group */ - Group alignmentGroup; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - AlignableTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Other" group. - */ - void createOtherGroup () { - super.createOtherGroup (); - - /* Create the group */ - alignmentGroup = new Group (otherGroup, SWT.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, SWT.RADIO); - leftButton.setText (ControlExample.getResourceString("Left")); - centerButton = new Button (alignmentGroup, SWT.RADIO); - centerButton.setText(ControlExample.getResourceString("Center")); - rightButton = new Button (alignmentGroup, SWT.RADIO); - rightButton.setText (ControlExample.getResourceString("Right")); - - /* Add the listeners */ - SelectionListener selectionListener = new SelectionAdapter () { - public void widgetSelected(SelectionEvent event) { - if (!((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 != 0) { - leftButton.setSelection ((widgets [0].getStyle () & SWT.LEFT) != 0); - centerButton.setSelection ((widgets [0].getStyle () & SWT.CENTER) != 0); - rightButton.setSelection ((widgets [0].getStyle () & SWT.RIGHT) != 0); - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/BrowserTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/BrowserTab.java deleted file mode 100644 index 529f266bb7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/BrowserTab.java +++ /dev/null @@ -1,332 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -import org.eclipse.swt.*; -import org.eclipse.swt.browser.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class BrowserTab extends Tab { - - /* Example widgets and groups that contain them */ - Browser browser; - Group browserGroup; - - /* Style widgets added to the "Style" group */ - Button mozillaButton; - - String errorMessage, lastText, lastUrl; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - BrowserTab(ControlExample instance) { - super(instance); - } - - void createBackgroundModeGroup () { - // Browser does not need a background mode group. - } - - void createColorAndFontGroup () { - // Browser does not need a color and font group. - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the browser */ - browserGroup = new Group (exampleGroup, SWT.NONE); - browserGroup.setLayout (new GridLayout ()); - browserGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - browserGroup.setText ("Browser"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (mozillaButton.getSelection ()) style |= SWT.MOZILLA; - - /* Create the example widgets */ - try { - browser = new Browser (browserGroup, style); - } catch (SWTError e) { //XPCOM error - try { - browser = new Browser (browserGroup, style &~ SWT.MOZILLA); - } catch (SWTError e2) { // Unsupported platform - errorMessage = e.getMessage(); - return; - } - MessageBox dialog = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK); - dialog.setMessage(ControlExample.getResourceString("MozillaNotFound", new String [] {e.getMessage()})); - dialog.open(); - } - - if (lastUrl != null) { - browser.setUrl(lastUrl); - } else if (lastText != null) { - browser.setText(lastText); - } else { - InputStream htmlStream= ControlExample.class.getResourceAsStream("browser-content.html"); - BufferedReader br= new BufferedReader(new InputStreamReader(htmlStream)); - StringBuffer sb= new StringBuffer(300); - try { - int read= 0; - while ((read= br.read()) != -1) - sb.append((char) read); - } catch (IOException e) { - log(e.getMessage()); - } finally { - try { - br.close(); - } catch (IOException e) { - log(e.getMessage()); - } - } - String text= sb.toString(); - browser.setText(text); - } - lastText = lastUrl = null; - } - - /** - * Creates the "Other" group. This is typically - * a child of the "Control" group. - */ - void createOtherGroup () { - super.createOtherGroup (); - backgroundImageButton.dispose (); - } - - /** - * 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 (); - - /* Set the default state for Browser to fill horizontally & vertically. */ - fillHButton.setSelection (true); - fillVButton.setSelection (true); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup () { - super.createStyleGroup (); - - /* Create the extra widgets */ - mozillaButton = new Button (styleGroup, SWT.CHECK); - mozillaButton.setText ("SWT.MOZILLA"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - } - - /** - * Creates the tab folder page. - * - * @param tabFolder org.eclipse.swt.widgets.TabFolder - * @return the new page for the tab folder - */ - Composite createTabFolderPage (final 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 ControlAdapter() { - public void controlResized(ControlEvent e) { - setExampleWidgetSize (); - } - }); - - /* - * Add a selection listener to the tabFolder to bring up a - * dialog if this platform does not support the Browser. - */ - tabFolder.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (errorMessage != null && tabFolder.getSelection()[0].getText().equals(getTabText())) { - MessageBox dialog = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK); - dialog.setMessage(ControlExample.getResourceString("BrowserNotFound", new String [] {errorMessage})); - dialog.open(); - } - } - }); - - return tabFolderPage; - } - - /** - * Disposes the "Example" widgets. - */ - void disposeExampleWidgets () { - /* store the state of the Browser if applicable */ - if (browser != null) { - String url = browser.getUrl(); - if (url.length() > 0 && !url.equals("about:blank")) { //$NON-NLS-1$ - lastUrl = url; - } else { - String text = browser.getText(); - if (text.length() > 0) { - lastText = text; - } - } - } - super.disposeExampleWidgets(); - } - - public static String getContents(InputStream in) throws IOException { - BufferedReader br= new BufferedReader(new InputStreamReader(in)); - - StringBuffer sb= new StringBuffer(300); - try { - int read= 0; - while ((read= br.read()) != -1) - sb.append((char) read); - } finally { - br.close(); - } - return sb.toString(); - } - - /** - * Gets the list of custom event names. - * - * @return an array containing custom event names - */ - String [] getCustomEventNames () { - return new String [] {"CloseWindowListener", "LocationListener", "OpenWindowListener", - "ProgressListener", "StatusTextListener", "TitleListener", "VisibilityWindowListener"}; - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - if (browser != null) return new Widget [] {browser}; - return super.getExampleWidgets(); - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Text", "Url", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Browser"; - } - - /** - * Hooks the custom listener specified by eventName. - */ - void hookCustomListener (final String eventName) { - if (browser == null) return; - if (eventName == "CloseWindowListener") { - browser.addCloseWindowListener (new CloseWindowListener () { - public void close(WindowEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "LocationListener") { - browser.addLocationListener (new LocationListener () { - public void changed(LocationEvent event) { - log (eventName + ".changed", event); - } - public void changing(LocationEvent event) { - log (eventName + ".changing", event); - } - }); - } - if (eventName == "OpenWindowListener") { - browser.addOpenWindowListener (new OpenWindowListener () { - public void open(WindowEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "ProgressListener") { - browser.addProgressListener (new ProgressListener () { - public void changed(ProgressEvent event) { - log (eventName + ".changed", event); - } - public void completed(ProgressEvent event) { - log (eventName + ".completed", event); - } - }); - } - if (eventName == "StatusTextListener") { - browser.addStatusTextListener (new StatusTextListener () { - public void changed(StatusTextEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "TitleListener") { - browser.addTitleListener (new TitleListener () { - public void changed(TitleEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "VisibilityWindowListener") { - browser.addVisibilityWindowListener (new VisibilityWindowListener () { - public void hide(WindowEvent event) { - log (eventName + ".hide", event); - } - public void show(WindowEvent event) { - log (eventName + ".show", event); - } - }); - } - } - - boolean rtlSupport() { - return false; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - mozillaButton.setSelection (browser == null ? false : (browser.getStyle () & SWT.MOZILLA) != 0); - borderButton.setSelection (browser == null ? false : (browser.getStyle () & SWT.BORDER) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ButtonTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ButtonTab.java deleted file mode 100755 index 2c11f82e31..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ButtonTab.java +++ /dev/null @@ -1,233 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -/** - * <code>ButtonTab</code> is the class that - * demonstrates SWT buttons. - */ -class ButtonTab extends 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. - */ - ButtonTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Control" group. - */ - void createControlGroup () { - super.createControlGroup (); - - /* Create the controls */ - upButton = new Button (alignmentGroup, SWT.RADIO); - upButton.setText (ControlExample.getResourceString("Up")); - downButton = new Button (alignmentGroup, SWT.RADIO); - downButton.setText (ControlExample.getResourceString("Down")); - - /* Add the listeners */ - SelectionListener selectionListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - if (!((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, SWT.NONE); - GridLayout gridLayout = new GridLayout (); - textButtonGroup.setLayout(gridLayout); - gridLayout.numColumns = 3; - textButtonGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - textButtonGroup.setText (ControlExample.getResourceString("Text_Buttons")); - - /* Create a group for the image buttons */ - imageButtonGroup = new Group(exampleGroup, SWT.NONE); - gridLayout = new GridLayout(); - imageButtonGroup.setLayout(gridLayout); - gridLayout.numColumns = 3; - imageButtonGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - imageButtonGroup.setText (ControlExample.getResourceString("Image_Buttons")); - - /* Create a group for the image and text buttons */ - imagetextButtonGroup = new Group(exampleGroup, SWT.NONE); - gridLayout = new GridLayout(); - imagetextButtonGroup.setLayout(gridLayout); - gridLayout.numColumns = 3; - imagetextButtonGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 |= SWT.PUSH; - if (checkButton.getSelection()) style |= SWT.CHECK; - if (radioButton.getSelection()) style |= SWT.RADIO; - if (toggleButton.getSelection()) style |= SWT.TOGGLE; - if (flatButton.getSelection()) style |= SWT.FLAT; - if (borderButton.getSelection()) style |= SWT.BORDER; - if (leftButton.getSelection()) style |= SWT.LEFT; - if (rightButton.getSelection()) style |= SWT.RIGHT; - if (arrowButton.getSelection()) { - style |= SWT.ARROW; - if (upButton.getSelection()) style |= SWT.UP; - if (downButton.getSelection()) style |= SWT.DOWN; - } else { - if (centerButton.getSelection()) style |= SWT.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, SWT.RADIO); - pushButton.setText("SWT.PUSH"); - checkButton = new Button (styleGroup, SWT.RADIO); - checkButton.setText ("SWT.CHECK"); - radioButton = new Button (styleGroup, SWT.RADIO); - radioButton.setText ("SWT.RADIO"); - toggleButton = new Button (styleGroup, SWT.RADIO); - toggleButton.setText ("SWT.TOGGLE"); - arrowButton = new Button (styleGroup, SWT.RADIO); - arrowButton.setText ("SWT.ARROW"); - flatButton = new Button (styleGroup, SWT.CHECK); - flatButton.setText ("SWT.FLAT"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new 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). - */ - String[] getMethodNames() { - return new String[] {"Grayed", "Selection", "Text", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Button"; - } - - /** - * Sets the alignment of the "Example" widgets. - */ - void setExampleWidgetAlignment () { - int alignment = 0; - if (leftButton.getSelection ()) alignment = SWT.LEFT; - if (centerButton.getSelection ()) alignment = SWT.CENTER; - if (rightButton.getSelection ()) alignment = SWT.RIGHT; - if (upButton.getSelection ()) alignment = SWT.UP; - if (downButton.getSelection ()) alignment = SWT.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 () & SWT.UP) != 0); - downButton.setSelection ((button1.getStyle () & SWT.DOWN) != 0); - pushButton.setSelection ((button1.getStyle () & SWT.PUSH) != 0); - checkButton.setSelection ((button1.getStyle () & SWT.CHECK) != 0); - radioButton.setSelection ((button1.getStyle () & SWT.RADIO) != 0); - toggleButton.setSelection ((button1.getStyle () & SWT.TOGGLE) != 0); - arrowButton.setSelection ((button1.getStyle () & SWT.ARROW) != 0); - flatButton.setSelection ((button1.getStyle () & SWT.FLAT) != 0); - borderButton.setSelection ((button1.getStyle () & SWT.BORDER) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CComboTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CComboTab.java deleted file mode 100644 index 38bbbf8d0f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CComboTab.java +++ /dev/null @@ -1,123 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.layout.*; - -class CComboTab extends Tab { - - /* Example widgets and groups that contain them */ - CCombo combo1; - Group comboGroup; - - /* Style widgets added to the "Style" group */ - Button flatButton, readOnlyButton; - - static String [] 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 Tab within a given instance of ControlExample. - */ - CComboTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the combo box */ - comboGroup = new Group (exampleGroup, SWT.NONE); - comboGroup.setLayout (new GridLayout ()); - comboGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 |= SWT.FLAT; - if (readOnlyButton.getSelection ()) style |= SWT.READ_ONLY; - if (borderButton.getSelection ()) style |= SWT.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, SWT.CHECK); - readOnlyButton.setText ("SWT.READ_ONLY"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - flatButton = new Button (styleGroup, SWT.CHECK); - flatButton.setText ("SWT.FLAT"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new 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). - */ - String[] getMethodNames() { - return new String[] {"Editable", "Items", "Selection", "Text", "TextLimit", "ToolTipText", "VisibleItemCount"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "CCombo"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - flatButton.setSelection ((combo1.getStyle () & SWT.FLAT) != 0); - readOnlyButton.setSelection ((combo1.getStyle () & SWT.READ_ONLY) != 0); - borderButton.setSelection ((combo1.getStyle () & SWT.BORDER) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CLabelTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CLabelTab.java deleted file mode 100644 index 6a68c58b6b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CLabelTab.java +++ /dev/null @@ -1,135 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class CLabelTab extends 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. - */ - CLabelTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the text labels */ - textLabelGroup = new Group(exampleGroup, SWT.NONE); - GridLayout gridLayout = new GridLayout (); - textLabelGroup.setLayout (gridLayout); - gridLayout.numColumns = 3; - textLabelGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 |= SWT.SHADOW_IN; - if (shadowNoneButton.getSelection ()) style |= SWT.SHADOW_NONE; - if (shadowOutButton.getSelection ()) style |= SWT.SHADOW_OUT; - if (leftButton.getSelection ()) style |= SWT.LEFT; - if (centerButton.getSelection ()) style |= SWT.CENTER; - if (rightButton.getSelection ()) style |= SWT.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(ControlExample.getResourceString("Example_string") + "\n" + ControlExample.getResourceString("One_Two_Three")); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup (); - - /* Create the extra widgets */ - shadowNoneButton = new Button (styleGroup, SWT.RADIO); - shadowNoneButton.setText ("SWT.SHADOW_NONE"); - shadowInButton = new Button (styleGroup, SWT.RADIO); - shadowInButton.setText ("SWT.SHADOW_IN"); - shadowOutButton = new Button (styleGroup, SWT.RADIO); - shadowOutButton.setText ("SWT.SHADOW_OUT"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new 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). - */ - String[] getMethodNames() { - return new String[] {"Text", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "CLabel"; - } - - /** - * Sets the alignment of the "Example" widgets. - */ - void setExampleWidgetAlignment () { - int alignment = 0; - if (leftButton.getSelection ()) alignment = SWT.LEFT; - if (centerButton.getSelection ()) alignment = SWT.CENTER; - if (rightButton.getSelection ()) alignment = SWT.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 () & SWT.LEFT) != 0); - centerButton.setSelection ((label1.getStyle () & SWT.CENTER) != 0); - rightButton.setSelection ((label1.getStyle () & SWT.RIGHT) != 0); - shadowInButton.setSelection ((label1.getStyle () & SWT.SHADOW_IN) != 0); - shadowOutButton.setSelection ((label1.getStyle () & SWT.SHADOW_OUT) != 0); - shadowNoneButton.setSelection ((label1.getStyle () & (SWT.SHADOW_IN | SWT.SHADOW_OUT)) == 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CTabFolderTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CTabFolderTab.java deleted file mode 100644 index 15daa91d1c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CTabFolderTab.java +++ /dev/null @@ -1,446 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -class CTabFolderTab extends 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 String [] CTabItems1 = {ControlExample.getResourceString("CTabItem1_0"), - ControlExample.getResourceString("CTabItem1_1"), - ControlExample.getResourceString("CTabItem1_2")}; - - /* Controls and resources added to the "Fonts" group */ - static final int SELECTION_FOREGROUND_COLOR = 3; - static final int SELECTION_BACKGROUND_COLOR = 4; - static final 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. - */ - CTabFolderTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Colors and Fonts" group. - */ - void createColorAndFontGroup () { - super.createColorAndFontGroup(); - - TableItem item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Selection_Foreground_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Selection_Background_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Font")); - - shell.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent event) { - if (selectionBackgroundColor != null) selectionBackgroundColor.dispose(); - if (selectionForegroundColor != null) selectionForegroundColor.dispose(); - if (itemFont != null) itemFont.dispose(); - selectionBackgroundColor = null; - selectionForegroundColor = null; - itemFont = null; - } - }); - } - - void changeFontOrColor(int index) { - switch (index) { - case SELECTION_FOREGROUND_COLOR: { - Color oldColor = selectionForegroundColor; - if (oldColor == null) oldColor = tabFolder1.getSelectionForeground(); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = selectionForegroundColor; - selectionForegroundColor = new Color (display, rgb); - setSelectionForeground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case SELECTION_BACKGROUND_COLOR: { - Color oldColor = selectionBackgroundColor; - if (oldColor == null) oldColor = tabFolder1.getSelectionBackground(); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = selectionBackgroundColor; - selectionBackgroundColor = new Color (display, rgb); - setSelectionBackground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case ITEM_FONT: { - Font oldFont = itemFont; - if (oldFont == null) oldFont = tabFolder1.getItem (0).getFont (); - fontDialog.setFontList(oldFont.getFontData()); - FontData fontData = fontDialog.open (); - if (fontData == null) return; - oldFont = itemFont; - itemFont = new Font (display, fontData); - setItemFont (); - setExampleWidgetSize (); - if (oldFont != 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, SWT.CHECK); - simpleTabButton.setText (ControlExample.getResourceString("Set_Simple_Tabs")); - simpleTabButton.setSelection(true); - simpleTabButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setSimpleTabs(); - } - }); - - singleTabButton = new Button (otherGroup, SWT.CHECK); - singleTabButton.setText (ControlExample.getResourceString("Set_Single_Tabs")); - singleTabButton.setSelection(false); - singleTabButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setSingleTabs(); - } - }); - - showMinButton = new Button (otherGroup, SWT.CHECK); - showMinButton.setText (ControlExample.getResourceString("Set_Min_Visible")); - showMinButton.setSelection(false); - showMinButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setMinimizeVisible(); - } - }); - - showMaxButton = new Button (otherGroup, SWT.CHECK); - showMaxButton.setText (ControlExample.getResourceString("Set_Max_Visible")); - showMaxButton.setSelection(false); - showMaxButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setMaximizeVisible(); - } - }); - - imageButton = new Button (otherGroup, SWT.CHECK); - imageButton.setText (ControlExample.getResourceString("Set_Image")); - imageButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setImages(); - } - }); - - unselectedImageButton = new Button (otherGroup, SWT.CHECK); - unselectedImageButton.setText (ControlExample.getResourceString("Set_Unselected_Image_Visible")); - unselectedImageButton.setSelection(true); - unselectedImageButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setUnselectedImageVisible(); - } - }); - unselectedCloseButton = new Button (otherGroup, SWT.CHECK); - unselectedCloseButton.setText (ControlExample.getResourceString("Set_Unselected_Close_Visible")); - unselectedCloseButton.setSelection(true); - unselectedCloseButton.addSelectionListener (new 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, SWT.NONE); - tabFolderGroup.setLayout (new GridLayout ()); - tabFolderGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - tabFolderGroup.setText ("CTabFolder"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (topButton.getSelection ()) style |= SWT.TOP; - if (bottomButton.getSelection ()) style |= SWT.BOTTOM; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (flatButton.getSelection ()) style |= SWT.FLAT; - if (closeButton.getSelection ()) style |= SWT.CLOSE; - - /* Create the example widgets */ - tabFolder1 = new CTabFolder (tabFolderGroup, style); - for (int i = 0; i < CTabItems1.length; i++) { - CTabItem item = new CTabItem(tabFolder1, SWT.NONE); - item.setText(CTabItems1[i]); - Text text = new Text(tabFolder1, SWT.WRAP | SWT.MULTI); - text.setText(ControlExample.getResourceString("CTabItem_content") + ": " + i); - item.setControl(text); - } - tabFolder1.addListener(SWT.Selection, new 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, SWT.RADIO); - topButton.setText ("SWT.TOP"); - topButton.setSelection(true); - bottomButton = new Button (styleGroup, SWT.RADIO); - bottomButton.setText ("SWT.BOTTOM"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - flatButton = new Button (styleGroup, SWT.CHECK); - flatButton.setText ("SWT.FLAT"); - closeButton = new Button (styleGroup, SWT.CHECK); - closeButton.setText ("SWT.CLOSE"); - } - - /** - * Gets the list of custom event names. - * - * @return an array containing custom event names - */ - String [] getCustomEventNames () { - return new String [] {"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 new Widget [] {tabFolder1}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "CTabFolder"; - } - - /** - * Hooks the custom listener specified by eventName. - */ - void hookCustomListener (final String eventName) { - if (eventName == "CTabFolderEvent") { - tabFolder1.addCTabFolder2Listener (new CTabFolder2Adapter () { - public void close (CTabFolderEvent event) { - log (eventName, 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 != null) oldColor.dispose(); - oldColor = selectionBackgroundColor; - selectionBackgroundColor = null; - setSelectionBackground (); - if (oldColor != null) oldColor.dispose(); - Font oldFont = itemFont; - itemFont = null; - setItemFont (); - if (oldFont != 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 () { - boolean 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 == null) color = tabFolder1.getSelectionBackground (); - TableItem item = colorAndFontTable.getItem(SELECTION_BACKGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = tabFolder1.getSelectionForeground (); - TableItem item = colorAndFontTable.getItem(SELECTION_FOREGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) ft = tabFolder1.getItem (0).getFont (); - TableItem item = colorAndFontTable.getItem(ITEM_FONT); - Image oldImage = item.getImage(); - if (oldImage != null) oldImage.dispose(); - item.setImage (fontImage(ft)); - item.setFont(ft); - colorAndFontTable.layout (); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CanvasTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CanvasTab.java deleted file mode 100644 index b9bfc0ddde..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CanvasTab.java +++ /dev/null @@ -1,312 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; - -class CanvasTab extends Tab { - static final int colors [] = { - SWT.COLOR_RED, - SWT.COLOR_GREEN, - SWT.COLOR_BLUE, - SWT.COLOR_MAGENTA, - SWT.COLOR_YELLOW, - SWT.COLOR_CYAN, - SWT.COLOR_DARK_RED, - SWT.COLOR_DARK_GREEN, - SWT.COLOR_DARK_BLUE, - SWT.COLOR_DARK_MAGENTA, - SWT.COLOR_DARK_YELLOW, - SWT.COLOR_DARK_CYAN - }; - static final String 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. - */ - CanvasTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Other" group. - */ - void createOtherGroup () { - super.createOtherGroup (); - - /* Create display controls specific to this example */ - caretButton = new Button (otherGroup, SWT.CHECK); - caretButton.setText (ControlExample.getResourceString("Caret")); - fillDamageButton = new Button (otherGroup, SWT.CHECK); - fillDamageButton.setText (ControlExample.getResourceString("FillDamage")); - - /* Add the listeners */ - caretButton.addSelectionListener (new 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, SWT.NONE); - canvasGroup.setLayout (new GridLayout ()); - canvasGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - canvasGroup.setText ("Canvas"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (noBackgroundButton.getSelection ()) style |= SWT.NO_BACKGROUND; - if (noFocusButton.getSelection ()) style |= SWT.NO_FOCUS; - if (noMergePaintsButton.getSelection ()) style |= SWT.NO_MERGE_PAINTS; - if (noRedrawResizeButton.getSelection ()) style |= SWT.NO_REDRAW_RESIZE; - if (doubleBufferedButton.getSelection ()) style |= SWT.DOUBLE_BUFFERED; - - /* Create the example widgets */ - paintCount = 0; cx = 0; cy = 0; - canvas = new Canvas (canvasGroup, style); - canvas.addPaintListener(new 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 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 != null) { - hookListeners (bar); - bar.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollHorizontal ((ScrollBar)event.widget); - } - }); - } - bar = canvas.getVerticalBar(); - if (bar != null) { - hookListeners (bar); - bar.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollVertical ((ScrollBar)event.widget); - } - }); - } - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup(); - - /* Create the extra widgets */ - horizontalButton = new Button (styleGroup, SWT.CHECK); - horizontalButton.setText ("SWT.H_SCROLL"); - horizontalButton.setSelection(true); - verticalButton = new Button (styleGroup, SWT.CHECK); - verticalButton.setText ("SWT.V_SCROLL"); - verticalButton.setSelection(true); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - noBackgroundButton = new Button (styleGroup, SWT.CHECK); - noBackgroundButton.setText ("SWT.NO_BACKGROUND"); - noFocusButton = new Button (styleGroup, SWT.CHECK); - noFocusButton.setText ("SWT.NO_FOCUS"); - noMergePaintsButton = new Button (styleGroup, SWT.CHECK); - noMergePaintsButton.setText ("SWT.NO_MERGE_PAINTS"); - noRedrawResizeButton = new Button (styleGroup, SWT.CHECK); - noRedrawResizeButton.setText ("SWT.NO_REDRAW_RESIZE"); - doubleBufferedButton = new Button (styleGroup, SWT.CHECK); - doubleBufferedButton.setText ("SWT.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 ControlAdapter() { - public void controlResized(ControlEvent e) { - setExampleWidgetSize (); - } - }); - - return tabFolderPage; - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new 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). - */ - String[] getMethodNames() { - return new String[] {"ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Canvas"; - } - - /** - * Resizes the maximum and thumb of both scrollbars. - */ - void resizeScrollBars () { - Rectangle clientArea = canvas.getClientArea(); - ScrollBar bar = canvas.getHorizontalBar(); - if (bar != null) { - bar.setMaximum(maxX); - bar.setThumb(clientArea.width); - bar.setPageIncrement(clientArea.width); - } - bar = canvas.getVerticalBar(); - if (bar != 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, SWT.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 != null) oldCaret.dispose (); - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - horizontalButton.setSelection ((canvas.getStyle () & SWT.H_SCROLL) != 0); - verticalButton.setSelection ((canvas.getStyle () & SWT.V_SCROLL) != 0); - borderButton.setSelection ((canvas.getStyle () & SWT.BORDER) != 0); - noBackgroundButton.setSelection ((canvas.getStyle () & SWT.NO_BACKGROUND) != 0); - noFocusButton.setSelection ((canvas.getStyle () & SWT.NO_FOCUS) != 0); - noMergePaintsButton.setSelection ((canvas.getStyle () & SWT.NO_MERGE_PAINTS) != 0); - noRedrawResizeButton.setSelection ((canvas.getStyle () & SWT.NO_REDRAW_RESIZE) != 0); - doubleBufferedButton.setSelection ((canvas.getStyle () & SWT.DOUBLE_BUFFERED) != 0); - if (!instance.startup) setCaret (); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ComboTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ComboTab.java deleted file mode 100755 index 6ca3776dd3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ComboTab.java +++ /dev/null @@ -1,148 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; - -class ComboTab extends Tab { - - /* Example widgets and groups that contain them */ - Combo combo1; - Group comboGroup; - - /* Style widgets added to the "Style" group */ - Button dropDownButton, readOnlyButton, simpleButton; - - static String [] 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 Tab within a given instance of ControlExample. - */ - ComboTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the combo box */ - comboGroup = new Group (exampleGroup, SWT.NONE); - comboGroup.setLayout (new GridLayout ()); - comboGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - comboGroup.setText ("Combo"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (dropDownButton.getSelection ()) style |= SWT.DROP_DOWN; - if (readOnlyButton.getSelection ()) style |= SWT.READ_ONLY; - if (simpleButton.getSelection ()) style |= SWT.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 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, SWT.RADIO); - dropDownButton.setText ("SWT.DROP_DOWN"); - simpleButton = new Button (styleGroup, SWT.RADIO); - simpleButton.setText("SWT.SIMPLE"); - readOnlyButton = new Button (styleGroup, SWT.CHECK); - readOnlyButton.setText ("SWT.READ_ONLY"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new 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). - */ - String[] getMethodNames() { - return new String[] {"Items", "Orientation", "Selection", "Text", "TextLimit", "ToolTipText", "VisibleItemCount"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Combo"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - dropDownButton.setSelection ((combo1.getStyle () & SWT.DROP_DOWN) != 0); - simpleButton.setSelection ((combo1.getStyle () & SWT.SIMPLE) != 0); - readOnlyButton.setSelection ((combo1.getStyle () & SWT.READ_ONLY) != 0); - readOnlyButton.setEnabled(!simpleButton.getSelection()); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java deleted file mode 100755 index e56b6824b1..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java +++ /dev/null @@ -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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -import java.io.*; -import java.text.*; -import java.util.*; - -public class ControlExample { - private static ResourceBundle resourceBundle = - ResourceBundle.getBundle("examples_control"); //$NON-NLS-1$ - private ShellTab shellTab; - private TabFolder tabFolder; - private Tab [] tabs; - Image images[]; - - static final int ciClosedFolder = 0, ciOpenFolder = 1, ciTarget = 2, ciBackground = 3, ciParentBackground = 4; - static final String[] imageLocations = { - "closedFolder.gif", //$NON-NLS-1$ - "openFolder.gif", //$NON-NLS-1$ - "target.gif", //$NON-NLS-1$ - "backgroundImage.png", //$NON-NLS-1$ - "parentBackgroundImage.png"}; //$NON-NLS-1$ - static final int[] imageTypes = { - SWT.ICON, - SWT.ICON, - SWT.ICON, - SWT.BITMAP, - SWT.BITMAP}; - - boolean startup = true; - - /** - * Creates an instance of a ControlExample embedded inside - * the supplied parent Composite. - * - * @param parent the container of the example - */ - public ControlExample(Composite parent) { - initResources(); - tabFolder = new TabFolder (parent, SWT.NONE); - tabs = createTabs(); - for (int i=0; i<tabs.length; i++) { - TabItem item = new TabItem (tabFolder, SWT.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 new 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), - new BrowserTab (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 != null) shellTab.closeAllShells (); - shellTab = null; - tabFolder = null; - freeResources(); - } - - /** - * Frees the resources - */ - void freeResources() { - if (images != null) { - for (int i = 0; i < images.length; ++i) { - final Image image = images[i]; - if (image != 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 String getResourceString(String key) { - try { - return resourceBundle.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ - } - } - - /** - * Gets a string from the resource bundle and binds it - * with the given arguments. If the key is not found, - * return the key. - */ - static String getResourceString(String key, Object[] args) { - try { - return MessageFormat.format(getResourceString(key), args); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ - } - } - - /** - * Loads the resources - */ - void initResources() { - final Class clazz = ControlExample.class; - if (resourceBundle != null) { - try { - if (images == null) { - images = new Image[imageLocations.length]; - - for (int i = 0; i < imageLocations.length; ++i) { - InputStream sourceStream = clazz.getResourceAsStream(imageLocations[i]); - ImageData source = new ImageData(sourceStream); - if (imageTypes[i] == SWT.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) { - e.printStackTrace(); - } - } - } - return; - } catch (Throwable t) { - } - } - String error = (resourceBundle != null) ? - getResourceString("error.CouldNotLoadResources") : - "Unable to load resources"; //$NON-NLS-1$ - freeResources(); - throw new RuntimeException(error); - } - - /** - * Invokes as a standalone program. - */ - public static void main(String[] args) { - Display display = new Display(); - Shell shell = new Shell(display, SWT.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(SWT.DEFAULT, SWT.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 && SWT.getPlatform().equals("carbon")) { - TabItem [] tabItems = instance.tabFolder.getItems(); - for (int i=0; i<tabItems.length; i++) { - tabItems[i].setText (instance.tabs [i].getShortTabText ()); - } - size = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT); - } - shell.setSize(Math.min(size.x, monitorArea.width), Math.min(size.y, monitorArea.height)); - } -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CoolBarTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CoolBarTab.java deleted file mode 100644 index 5720ce8c64..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CoolBarTab.java +++ /dev/null @@ -1,490 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class CoolBarTab extends 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. - */ - CoolBarTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Other" group. - */ - void createOtherGroup () { - super.createOtherGroup (); - - /* Create display controls specific to this example */ - lockedButton = new Button (otherGroup, SWT.CHECK); - lockedButton.setText (ControlExample.getResourceString("Locked")); - - /* Add the listeners */ - lockedButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetLocked (); - } - }); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - coolBarGroup = new Group (exampleGroup, SWT.NONE); - coolBarGroup.setLayout (new GridLayout ()); - coolBarGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 = SWT.FLAT; - boolean vertical = false; - if (horizontalButton.getSelection ()) { - style |= SWT.HORIZONTAL; - toolBarStyle |= SWT.HORIZONTAL; - } - if (verticalButton.getSelection ()) { - style |= SWT.VERTICAL; - toolBarStyle |= SWT.VERTICAL; - vertical = true; - } - if (borderButton.getSelection()) style |= SWT.BORDER; - if (flatButton.getSelection()) style |= SWT.FLAT; - if (dropDownButton.getSelection()) itemStyle |= SWT.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, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.PUSH"); - item = new ToolItem (toolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setToolTipText ("SWT.PUSH"); - item = new ToolItem (toolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setToolTipText ("SWT.PUSH"); - item = new ToolItem (toolBar, SWT.SEPARATOR); - item = new ToolItem (toolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.PUSH"); - item = new ToolItem (toolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setToolTipText ("SWT.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, SWT.DROP_DOWN); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setToolTipText ("SWT.DROP_DOWN"); - item.addSelectionListener (new DropDownSelectionListener()); - item = new ToolItem (toolBar, SWT.DROP_DOWN); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.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, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.RADIO"); - item = new ToolItem (toolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.RADIO"); - item = new ToolItem (toolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.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, SWT.CHECK); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.CHECK"); - item = new ToolItem (toolBar, SWT.CHECK); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setToolTipText ("SWT.CHECK"); - item = new ToolItem (toolBar, SWT.CHECK); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setToolTipText ("SWT.CHECK"); - item = new ToolItem (toolBar, SWT.CHECK); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setToolTipText ("SWT.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, SWT.BORDER | SWT.SINGLE); - textItem = new CoolItem (coolBar, itemStyle); - textItem.setControl (text); - textItem.addSelectionListener (new CoolItemSelectionListener()); - Point textSize = text.computeSize(SWT.DEFAULT, SWT.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(SWT.DEFAULT, SWT.DEFAULT); - Point coolSize = coolItem.computeSize(size.x, size.y); - if (control instanceof ToolBar) { - ToolBar bar = (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 != null && order.length == coolBar.getItemCount()) { - coolBar.setItemLayout(order, wrapIndices, sizes); - } else { - coolBar.setWrapIndices(new int[] {1, 3}); - } - - /* Add a listener to resize the group box to match the coolbar */ - coolBar.addListener(SWT.Resize, new Listener() { - public void handleEvent(Event event) { - exampleGroup.layout(); - } - }); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup(); - - /* Create the extra widgets */ - horizontalButton = new Button (styleGroup, SWT.RADIO); - horizontalButton.setText ("SWT.HORIZONTAL"); - verticalButton = new Button (styleGroup, SWT.RADIO); - verticalButton.setText ("SWT.VERTICAL"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - flatButton = new Button (styleGroup, SWT.CHECK); - flatButton.setText ("SWT.FLAT"); - Group itemGroup = new Group(styleGroup, SWT.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, SWT.CHECK); - dropDownButton.setText ("SWT.DROP_DOWN"); - } - - /** - * Disposes the "Example" widgets. - */ - void disposeExampleWidgets () { - /* store the state of the toolbar if applicable */ - if (coolBar != 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 new 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). - */ - String[] getMethodNames() { - return new String[] {"ToolTipText"}; - } - - /** - * Gets the short text for the tab folder item. - */ - String getShortTabText() { - return "CB"; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "CoolBar"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - horizontalButton.setSelection ((coolBar.getStyle () & SWT.HORIZONTAL) != 0); - verticalButton.setSelection ((coolBar.getStyle () & SWT.VERTICAL) != 0); - borderButton.setSelection ((coolBar.getStyle () & SWT.BORDER) != 0); - flatButton.setSelection ((coolBar.getStyle () & SWT.FLAT) != 0); - dropDownButton.setSelection ((coolBar.getItem(0).getStyle () & SWT.DROP_DOWN) != 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 SWT.DROP_DOWN type ToolItems - * and opens/closes a menu when appropriate. - */ - class DropDownSelectionListener extends SelectionAdapter { - private Menu menu = null; - private boolean visible = false; - - public void widgetSelected(SelectionEvent event) { - // Create the menu if it has not already been created - if (menu == null) { - // Lazy create the menu. - menu = new Menu(shell); - menu.addMenuListener(new MenuAdapter() { - public void menuHidden(MenuEvent e) { - visible = false; - } - }); - for (int i = 0; i < 9; ++i) { - final String text = ControlExample.getResourceString("DropDownData_" + i); - if (text.length() != 0) { - MenuItem menuItem = new MenuItem(menu, SWT.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 SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - setMenuVisible(false); - } - }); - } else { - new MenuItem(menu, SWT.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 == SWT.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 = (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(boolean visible) { - menu.setVisible(visible); - this.visible = visible; - } - } - - /** - * Listens to widgetSelected() events on SWT.DROP_DOWN type CoolItems - * and opens/closes a menu when appropriate. - */ - class CoolItemSelectionListener extends 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 == SWT.ARROW) { - /* If the popup menu is already up (i.e. user pressed arrow twice), - * then dispose it. - */ - if (menu != null) { - menu.dispose(); - menu = null; - return; - } - - /* Get the cool item and convert its bounds to display coordinates. */ - CoolItem coolItem = (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 = (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.equals (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 == null) { - new MenuItem (menu, SWT.SEPARATOR); - } else { - if ((tool.getStyle() & SWT.DROP_DOWN) != 0) { - MenuItem menuItem = new MenuItem (menu, SWT.CASCADE); - menuItem.setImage(image); - String text = tool.getToolTipText(); - if (text != null) menuItem.setText(text); - Menu m = new Menu(menu); - menuItem.setMenu(m); - for (int k = 0; k < 9; ++k) { - text = ControlExample.getResourceString("DropDownData_" + k); - if (text.length() != 0) { - MenuItem mi = new MenuItem(m, SWT.NONE); - mi.setText(text); - /* Application code to perform the action for the submenu item would go here. */ - } else { - new MenuItem(m, SWT.SEPARATOR); - } - } - } else { - MenuItem menuItem = new MenuItem (menu, SWT.NONE); - menuItem.setImage(image); - String text = tool.getToolTipText(); - if (text != 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 != null && !menu.isDisposed() && menu.isVisible ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - if (menu != null) { - menu.dispose (); - menu = null; - } - } - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java deleted file mode 100644 index e9645f3420..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java +++ /dev/null @@ -1,58 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - - -public class CustomControlExample extends ControlExample { - - /** - * Creates an instance of a CustomControlExample embedded - * inside the supplied parent Composite. - * - * @param parent the container of the example - */ - public CustomControlExample(Composite parent) { - super (parent); - } - - /** - * Answers the set of example Tabs - */ - Tab[] createTabs() { - return new 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(String[] 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(); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DateTimeTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DateTimeTab.java deleted file mode 100644 index 3b5cb365ed..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DateTimeTab.java +++ /dev/null @@ -1,125 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; - -class DateTimeTab extends 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. - */ - DateTimeTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the list */ - dateTimeGroup = new Group (exampleGroup, SWT.NONE); - dateTimeGroup.setLayout (new GridLayout ()); - dateTimeGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - dateTimeGroup.setText ("DateTime"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (dateButton.getSelection ()) style |= SWT.DATE; - if (timeButton.getSelection ()) style |= SWT.TIME; - if (calendarButton.getSelection ()) style |= SWT.CALENDAR; - if (shortButton.getSelection ()) style |= SWT.SHORT; - if (mediumButton.getSelection ()) style |= SWT.MEDIUM; - if (longButton.getSelection ()) style |= SWT.LONG; - if (borderButton.getSelection ()) style |= SWT.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, SWT.RADIO); - dateButton.setText("SWT.DATE"); - timeButton = new Button(styleGroup, SWT.RADIO); - timeButton.setText("SWT.TIME"); - calendarButton = new Button(styleGroup, SWT.RADIO); - calendarButton.setText("SWT.CALENDAR"); - Group formatGroup = new Group(styleGroup, SWT.NONE); - formatGroup.setLayout(new GridLayout()); - shortButton = new Button(formatGroup, SWT.RADIO); - shortButton.setText("SWT.SHORT"); - mediumButton = new Button(formatGroup, SWT.RADIO); - mediumButton.setText("SWT.MEDIUM"); - longButton = new Button(formatGroup, SWT.RADIO); - longButton.setText("SWT.LONG"); - borderButton = new Button(styleGroup, SWT.CHECK); - borderButton.setText("SWT.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 () & SWT.DATE) != 0); - timeButton.setSelection ((dateTime1.getStyle () & SWT.TIME) != 0); - calendarButton.setSelection ((dateTime1.getStyle () & SWT.CALENDAR) != 0); - shortButton.setSelection ((dateTime1.getStyle () & SWT.SHORT) != 0); - mediumButton.setSelection ((dateTime1.getStyle () & SWT.MEDIUM) != 0); - longButton.setSelection ((dateTime1.getStyle () & SWT.LONG) != 0); - borderButton.setSelection ((dateTime1.getStyle () & SWT.BORDER) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java deleted file mode 100755 index d435bea552..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java +++ /dev/null @@ -1,502 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.printing.*; -import org.eclipse.swt.events.*; - -class DialogTab extends 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 String [] FilterExtensions = {"*.txt", "*.bat", "*.doc", "*"}; - static String [] FilterNames = {ControlExample.getResourceString("FilterName_0"), - ControlExample.getResourceString("FilterName_1"), - ControlExample.getResourceString("FilterName_2"), - ControlExample.getResourceString("FilterName_3")}; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - DialogTab(ControlExample instance) { - super(instance); - } - - /** - * 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. - */ - boolean ok = okButton.getSelection (); - boolean cancel = cancelButton.getSelection (); - boolean yes = yesButton.getSelection (); - boolean no = noButton.getSelection (); - boolean abort = abortButton.getSelection (); - boolean retry = retryButton.getSelection (); - boolean ignore = ignoreButton.getSelection (); - - okButton.setEnabled (!(yes || no || retry || abort || ignore)); - cancelButton.setEnabled (!(abort || ignore || (yes != 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 |= SWT.OK; - if (cancelButton.getEnabled () && cancelButton.getSelection ()) style |= SWT.CANCEL; - if (yesButton.getEnabled () && yesButton.getSelection ()) style |= SWT.YES; - if (noButton.getEnabled () && noButton.getSelection ()) style |= SWT.NO; - if (retryButton.getEnabled () && retryButton.getSelection ()) style |= SWT.RETRY; - if (abortButton.getEnabled () && abortButton.getSelection ()) style |= SWT.ABORT; - if (ignoreButton.getEnabled () && ignoreButton.getSelection ()) style |= SWT.IGNORE; - if (iconErrorButton.getEnabled () && iconErrorButton.getSelection ()) style |= SWT.ICON_ERROR; - if (iconInformationButton.getEnabled () && iconInformationButton.getSelection ()) style |= SWT.ICON_INFORMATION; - if (iconQuestionButton.getEnabled () && iconQuestionButton.getSelection ()) style |= SWT.ICON_QUESTION; - if (iconWarningButton.getEnabled () && iconWarningButton.getSelection ()) style |= SWT.ICON_WARNING; - if (iconWorkingButton.getEnabled () && iconWorkingButton.getSelection ()) style |= SWT.ICON_WORKING; - if (primaryModalButton.getEnabled () && primaryModalButton.getSelection ()) style |= SWT.PRIMARY_MODAL; - if (applicationModalButton.getEnabled () && applicationModalButton.getSelection ()) style |= SWT.APPLICATION_MODAL; - if (systemModalButton.getEnabled () && systemModalButton.getSelection ()) style |= SWT.SYSTEM_MODAL; - if (saveButton.getEnabled () && saveButton.getSelection ()) style |= SWT.SAVE; - if (openButton.getEnabled () && openButton.getSelection ()) style |= SWT.OPEN; - if (multiButton.getEnabled () && multiButton.getSelection ()) style |= SWT.MULTI; - - /* Open the appropriate dialog type */ - String name = dialogCombo.getText (); - - if (name.equals (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 (ControlExample.getResourceString("ColorDialog") + Text.DELIMITER); - textWidget.append (ControlExample.getResourceString("Result", new String [] {"" + result}) + Text.DELIMITER); - textWidget.append ("getRGB() = " + dialog.getRGB() + Text.DELIMITER + Text.DELIMITER); - return; - } - - if (name.equals (ControlExample.getResourceString("DirectoryDialog"))) { - DirectoryDialog dialog = new DirectoryDialog (shell, style); - dialog.setMessage (ControlExample.getResourceString("Example_string")); - dialog.setText (ControlExample.getResourceString("Title")); - String result = dialog.open (); - textWidget.append (ControlExample.getResourceString("DirectoryDialog") + Text.DELIMITER); - textWidget.append (ControlExample.getResourceString("Result", new String [] {"" + result}) + Text.DELIMITER + Text.DELIMITER); - return; - } - - if (name.equals (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")); - String result = dialog.open(); - textWidget.append (ControlExample.getResourceString("FileDialog") + Text.DELIMITER); - textWidget.append (ControlExample.getResourceString("Result", new String [] {"" + result}) + Text.DELIMITER); - textWidget.append ("getFileNames() =" + Text.DELIMITER); - if ((dialog.getStyle () & SWT.MULTI) != 0) { - String [] files = dialog.getFileNames (); - for (int i=0; i<files.length; i++) { - textWidget.append ("\t" + files [i] + Text.DELIMITER); - } - } - textWidget.append ("getFilterIndex() = " + dialog.getFilterIndex() + Text.DELIMITER + Text.DELIMITER); - return; - } - - if (name.equals (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 (ControlExample.getResourceString("Result", new String [] {"" + result}) + Text.DELIMITER); - textWidget.append ("getFontList() =" + Text.DELIMITER); - FontData [] fonts = dialog.getFontList (); - if (fonts != null) { - for (int i=0; i<fonts.length; i++) { - textWidget.append ("\t" + fonts [i] + Text.DELIMITER); - } - } - textWidget.append ("getRGB() = " + dialog.getRGB() + Text.DELIMITER + Text.DELIMITER); - return; - } - - if (name.equals (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 (ControlExample.getResourceString("Result", new String [] {"" + result}) + Text.DELIMITER); - textWidget.append ("getScope() = " + dialog.getScope() + Text.DELIMITER); - textWidget.append ("getStartPage() = " + dialog.getStartPage() + Text.DELIMITER); - textWidget.append ("getEndPage() = " + dialog.getEndPage() + Text.DELIMITER); - textWidget.append ("getPrintToFile() = " + dialog.getPrintToFile() + Text.DELIMITER + Text.DELIMITER); - return; - } - - if (name.equals(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 SWT.OK: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.OK"})); - break; - case SWT.YES: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.YES"})); - break; - case SWT.NO: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.NO"})); - break; - case SWT.CANCEL: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.CANCEL"})); - break; - case SWT.ABORT: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.ABORT"})); - break; - case SWT.RETRY: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.RETRY"})); - break; - case SWT.IGNORE: - textWidget.append (ControlExample.getResourceString("Result", new String [] {"SWT.IGNORE"})); - break; - default: - textWidget.append(ControlExample.getResourceString("Result", new String [] {"" + 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, SWT.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, SWT.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 */ - String [] strings = { - ControlExample.getResourceString("ColorDialog"), - ControlExample.getResourceString("DirectoryDialog"), - ControlExample.getResourceString("FileDialog"), - ControlExample.getResourceString("FontDialog"), - ControlExample.getResourceString("PrintDialog"), - ControlExample.getResourceString("MessageBox"), - }; - dialogCombo = new Combo (dialogStyleGroup, SWT.READ_ONLY); - dialogCombo.setItems (strings); - dialogCombo.setText (strings [0]); - dialogCombo.setVisibleItemCount(strings.length); - - /* Create the create dialog button */ - createButton = new Button(dialogStyleGroup, SWT.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, SWT.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, SWT.CHECK); - okButton.setText ("SWT.OK"); - cancelButton = new Button (buttonStyleGroup, SWT.CHECK); - cancelButton.setText ("SWT.CANCEL"); - yesButton = new Button (buttonStyleGroup, SWT.CHECK); - yesButton.setText ("SWT.YES"); - noButton = new Button (buttonStyleGroup, SWT.CHECK); - noButton.setText ("SWT.NO"); - retryButton = new Button (buttonStyleGroup, SWT.CHECK); - retryButton.setText ("SWT.RETRY"); - abortButton = new Button (buttonStyleGroup, SWT.CHECK); - abortButton.setText ("SWT.ABORT"); - ignoreButton = new Button (buttonStyleGroup, SWT.CHECK); - ignoreButton.setText ("SWT.IGNORE"); - - /* Create a group for the icon style controls */ - Group iconStyleGroup = new Group (controlGroup, SWT.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, SWT.RADIO); - iconErrorButton.setText ("SWT.ICON_ERROR"); - iconInformationButton = new Button (iconStyleGroup, SWT.RADIO); - iconInformationButton.setText ("SWT.ICON_INFORMATION"); - iconQuestionButton = new Button (iconStyleGroup, SWT.RADIO); - iconQuestionButton.setText ("SWT.ICON_QUESTION"); - iconWarningButton = new Button (iconStyleGroup, SWT.RADIO); - iconWarningButton.setText ("SWT.ICON_WARNING"); - iconWorkingButton = new Button (iconStyleGroup, SWT.RADIO); - iconWorkingButton.setText ("SWT.ICON_WORKING"); - noIconButton = new Button (iconStyleGroup, SWT.RADIO); - noIconButton.setText (ControlExample.getResourceString("No_Icon")); - - /* Create a group for the modal style controls */ - Group modalStyleGroup = new Group (controlGroup, SWT.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, SWT.RADIO); - primaryModalButton.setText ("SWT.PRIMARY_MODAL"); - applicationModalButton = new Button (modalStyleGroup, SWT.RADIO); - applicationModalButton.setText ("SWT.APPLICATION_MODAL"); - systemModalButton = new Button (modalStyleGroup, SWT.RADIO); - systemModalButton.setText ("SWT.SYSTEM_MODAL"); - - /* Create a group for the file dialog style controls */ - Group fileDialogStyleGroup = new Group (controlGroup, SWT.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, SWT.RADIO); - openButton.setText("SWT.OPEN"); - saveButton = new Button (fileDialogStyleGroup, SWT.RADIO); - saveButton.setText ("SWT.SAVE"); - multiButton = new Button(fileDialogStyleGroup, SWT.CHECK); - multiButton.setText("SWT.MULTI"); - - /* Create the orientation group */ - if (RTL_SUPPORT_ENABLE) { - createOrientationGroup(); - } - - /* Add the listeners */ - dialogCombo.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - dialogSelected (event); - } - }); - createButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - createButtonSelected (event); - } - }); - SelectionListener buttonStyleListener = new 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 (SWT.FILL, SWT.FILL, true, true)); - - /* - * Create a group for the text widget to display - * the results returned by the example dialogs. - */ - resultGroup = new Group (exampleGroup, SWT.NONE); - resultGroup.setLayout (new GridLayout ()); - resultGroup.setLayoutData (new GridData (SWT.FILL, SWT.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, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); - GridData gridData = new GridData (GridData.FILL_BOTH); - textWidget.setLayoutData (gridData); - } - - /** - * The platform dialogs do not have SWT listeners. - */ - void createListenersGroup () { - } - - /** - * Handle a dialog type combo selection event. - * - * @param event the selection event - */ - void dialogSelected (SelectionEvent event) { - - /* Enable/Disable the buttons */ - String name = dialogCombo.getText (); - boolean isMessageBox = name.equals (ControlExample.getResourceString("MessageBox")); - boolean isFileDialog = name.equals (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 new Widget [0]; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Dialog"; - } - - /** - * Recreates the "Example" widgets. - */ - void recreateExampleWidgets () { - if (textWidget == null) { - super.recreateExampleWidgets (); - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ExpandBarTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ExpandBarTab.java deleted file mode 100644 index 1e1a25dcd4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ExpandBarTab.java +++ /dev/null @@ -1,145 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; - -class ExpandBarTab extends 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. - */ - ExpandBarTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the list */ - expandBarGroup = new Group (exampleGroup, SWT.NONE); - expandBarGroup.setLayout (new GridLayout ()); - expandBarGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - expandBarGroup.setText ("ExpandBar"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (verticalButton.getSelection()) style |= SWT.V_SCROLL; - - /* Create the example widgets */ - expandBar1 = new ExpandBar (expandBarGroup, style); - - // First item - Composite composite = new Composite (expandBar1, SWT.NONE); - composite.setLayout(new GridLayout ()); - new Button (composite, SWT.PUSH).setText("SWT.PUSH"); - new Button (composite, SWT.RADIO).setText("SWT.RADIO"); - new Button (composite, SWT.CHECK).setText("SWT.CHECK"); - new Button (composite, SWT.TOGGLE).setText("SWT.TOGGLE"); - ExpandItem item = new ExpandItem (expandBar1, SWT.NONE, 0); - item.setText(ControlExample.getResourceString("Item1_Text")); - item.setHeight(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT).y); - item.setControl(composite); - item.setImage(instance.images[ControlExample.ciClosedFolder]); - - // Second item - composite = new Composite (expandBar1, SWT.NONE); - composite.setLayout(new GridLayout (2, false)); - new Label (composite, SWT.NONE).setImage(display.getSystemImage(SWT.ICON_ERROR)); - new Label (composite, SWT.NONE).setText("SWT.ICON_ERROR"); - new Label (composite, SWT.NONE).setImage(display.getSystemImage(SWT.ICON_INFORMATION)); - new Label (composite, SWT.NONE).setText("SWT.ICON_INFORMATION"); - new Label (composite, SWT.NONE).setImage(display.getSystemImage(SWT.ICON_WARNING)); - new Label (composite, SWT.NONE).setText("SWT.ICON_WARNING"); - new Label (composite, SWT.NONE).setImage(display.getSystemImage(SWT.ICON_QUESTION)); - new Label (composite, SWT.NONE).setText("SWT.ICON_QUESTION"); - item = new ExpandItem (expandBar1, SWT.NONE, 1); - item.setText(ControlExample.getResourceString("Item2_Text")); - item.setHeight(composite.computeSize(SWT.DEFAULT, SWT.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, SWT.CHECK); - verticalButton.setText ("SWT.V_SCROLL"); - verticalButton.setSelection(true); - borderButton = new Button(styleGroup, SWT.CHECK); - borderButton.setText("SWT.BORDER"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {expandBar1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Spacing"}; - } - - /** - * Gets the short text for the tab folder item. - */ - String getShortTabText() { - return "EB"; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "ExpandBar"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - Widget [] widgets = getExampleWidgets (); - if (widgets.length != 0){ - verticalButton.setSelection ((widgets [0].getStyle () & SWT.V_SCROLL) != 0); - borderButton.setSelection ((widgets [0].getStyle () & SWT.BORDER) != 0); - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/GroupTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/GroupTab.java deleted file mode 100644 index 918434d302..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/GroupTab.java +++ /dev/null @@ -1,154 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class GroupTab extends 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. - */ - GroupTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Other" group. - */ - void createOtherGroup () { - super.createOtherGroup (); - - /* Create display controls specific to this example */ - titleButton = new Button (otherGroup, SWT.CHECK); - titleButton.setText (ControlExample.getResourceString("Title_Text")); - - /* Add the listeners */ - titleButton.addSelectionListener (new 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, SWT.NONE); - groupGroup.setLayout (new GridLayout ()); - groupGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - groupGroup.setText ("Group"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (shadowEtchedInButton.getSelection ()) style |= SWT.SHADOW_ETCHED_IN; - if (shadowEtchedOutButton.getSelection ()) style |= SWT.SHADOW_ETCHED_OUT; - if (shadowInButton.getSelection ()) style |= SWT.SHADOW_IN; - if (shadowOutButton.getSelection ()) style |= SWT.SHADOW_OUT; - if (shadowNoneButton.getSelection ()) style |= SWT.SHADOW_NONE; - if (borderButton.getSelection ()) style |= SWT.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, SWT.RADIO); - shadowEtchedInButton.setText ("SWT.SHADOW_ETCHED_IN"); - shadowEtchedInButton.setSelection(true); - shadowEtchedOutButton = new Button (styleGroup, SWT.RADIO); - shadowEtchedOutButton.setText ("SWT.SHADOW_ETCHED_OUT"); - shadowInButton = new Button (styleGroup, SWT.RADIO); - shadowInButton.setText ("SWT.SHADOW_IN"); - shadowOutButton = new Button (styleGroup, SWT.RADIO); - shadowOutButton.setText ("SWT.SHADOW_OUT"); - shadowNoneButton = new Button (styleGroup, SWT.RADIO); - shadowNoneButton.setText ("SWT.SHADOW_NONE"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {group1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Text", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 () & SWT.SHADOW_ETCHED_IN) != 0); - shadowEtchedOutButton.setSelection ((group1.getStyle () & SWT.SHADOW_ETCHED_OUT) != 0); - shadowInButton.setSelection ((group1.getStyle () & SWT.SHADOW_IN) != 0); - shadowOutButton.setSelection ((group1.getStyle () & SWT.SHADOW_OUT) != 0); - shadowNoneButton.setSelection ((group1.getStyle () & SWT.SHADOW_NONE) != 0); - borderButton.setSelection ((group1.getStyle () & SWT.BORDER) != 0); - if (!instance.startup) setTitleText (); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/LabelTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/LabelTab.java deleted file mode 100755 index 6a68ecb759..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/LabelTab.java +++ /dev/null @@ -1,184 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; - -class LabelTab extends 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. - */ - LabelTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the text labels */ - textLabelGroup = new Group(exampleGroup, SWT.NONE); - GridLayout gridLayout = new GridLayout (); - textLabelGroup.setLayout (gridLayout); - gridLayout.numColumns = 3; - textLabelGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - textLabelGroup.setText (ControlExample.getResourceString("Text_Labels")); - - /* Create a group for the image labels */ - imageLabelGroup = new Group (exampleGroup, SWT.SHADOW_NONE); - gridLayout = new GridLayout (); - imageLabelGroup.setLayout (gridLayout); - gridLayout.numColumns = 3; - imageLabelGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 |= SWT.WRAP; - if (separatorButton.getSelection ()) style |= SWT.SEPARATOR; - if (horizontalButton.getSelection ()) style |= SWT.HORIZONTAL; - if (verticalButton.getSelection ()) style |= SWT.VERTICAL; - if (shadowInButton.getSelection ()) style |= SWT.SHADOW_IN; - if (shadowOutButton.getSelection ()) style |= SWT.SHADOW_OUT; - if (shadowNoneButton.getSelection ()) style |= SWT.SHADOW_NONE; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (leftButton.getSelection ()) style |= SWT.LEFT; - if (centerButton.getSelection ()) style |= SWT.CENTER; - if (rightButton.getSelection ()) style |= SWT.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, SWT.CHECK); - wrapButton.setText ("SWT.WRAP"); - separatorButton = new Button (styleGroup, SWT.CHECK); - separatorButton.setText ("SWT.SEPARATOR"); - horizontalButton = new Button (styleGroup, SWT.RADIO); - horizontalButton.setText ("SWT.HORIZONTAL"); - verticalButton = new Button (styleGroup, SWT.RADIO); - verticalButton.setText ("SWT.VERTICAL"); - Group styleSubGroup = new Group (styleGroup, SWT.NONE); - styleSubGroup.setLayout (new GridLayout ()); - shadowInButton = new Button (styleSubGroup, SWT.RADIO); - shadowInButton.setText ("SWT.SHADOW_IN"); - shadowOutButton = new Button (styleSubGroup, SWT.RADIO); - shadowOutButton.setText ("SWT.SHADOW_OUT"); - shadowNoneButton = new Button (styleSubGroup, SWT.RADIO); - shadowNoneButton.setText ("SWT.SHADOW_NONE"); - borderButton = new Button(styleGroup, SWT.CHECK); - borderButton.setText("SWT.BORDER"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {label1, label2, label3, label4, label5, label6}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Text", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Label"; - } - - /** - * Sets the alignment of the "Example" widgets. - */ - void setExampleWidgetAlignment () { - int alignment = 0; - if (leftButton.getSelection ()) alignment = SWT.LEFT; - if (centerButton.getSelection ()) alignment = SWT.CENTER; - if (rightButton.getSelection ()) alignment = SWT.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 (); - boolean isSeparator = (label1.getStyle () & SWT.SEPARATOR) != 0; - wrapButton.setSelection (!isSeparator && (label1.getStyle () & SWT.WRAP) != 0); - leftButton.setSelection (!isSeparator && (label1.getStyle () & SWT.LEFT) != 0); - centerButton.setSelection (!isSeparator && (label1.getStyle () & SWT.CENTER) != 0); - rightButton.setSelection (!isSeparator && (label1.getStyle () & SWT.RIGHT) != 0); - shadowInButton.setSelection (isSeparator && (label1.getStyle () & SWT.SHADOW_IN) != 0); - shadowOutButton.setSelection (isSeparator && (label1.getStyle () & SWT.SHADOW_OUT) != 0); - shadowNoneButton.setSelection (isSeparator && (label1.getStyle () & SWT.SHADOW_NONE) != 0); - horizontalButton.setSelection (isSeparator && (label1.getStyle () & SWT.HORIZONTAL) != 0); - verticalButton.setSelection (isSeparator && (label1.getStyle () & SWT.VERTICAL) != 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); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/LinkTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/LinkTab.java deleted file mode 100644 index e8b01b8ab2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/LinkTab.java +++ /dev/null @@ -1,98 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; - -class LinkTab extends Tab { - /* Example widgets and groups that contain them */ - Link link1; - Group linkGroup; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - LinkTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the list */ - linkGroup = new Group (exampleGroup, SWT.NONE); - linkGroup.setLayout (new GridLayout ()); - linkGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - linkGroup.setText ("Link"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (borderButton.getSelection ()) style |= SWT.BORDER; - - /* Create the example widgets */ - try { - link1 = new Link (linkGroup, style); - link1.setText (ControlExample.getResourceString("LinkText")); - } catch (SWTError e) { - // temporary code for photon - Label label = new Label (linkGroup, SWT.CENTER | SWT.WRAP); - label.setText ("Link widget not suported"); - } - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup (); - - /* Create the extra widgets */ - borderButton = new Button(styleGroup, SWT.CHECK); - borderButton.setText("SWT.BORDER"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { -// temporary code for photon - if (link1 != null) return new Widget [] {link1}; - return new Widget[] {}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Text", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Link"; - } - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ListTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ListTab.java deleted file mode 100755 index 3ceaca98eb..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ListTab.java +++ /dev/null @@ -1,93 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; - -class ListTab extends ScrollableTab { - - /* Example widgets and groups that contain them */ - List list1; - Group listGroup; - - static String [] ListData1 = {ControlExample.getResourceString("ListData1_0"), - ControlExample.getResourceString("ListData1_1"), - ControlExample.getResourceString("ListData1_2"), - ControlExample.getResourceString("ListData1_3"), - ControlExample.getResourceString("ListData1_4"), - ControlExample.getResourceString("ListData1_5"), - ControlExample.getResourceString("ListData1_6"), - ControlExample.getResourceString("ListData1_7"), - ControlExample.getResourceString("ListData1_8")}; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - ListTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the list */ - listGroup = new Group (exampleGroup, SWT.NONE); - listGroup.setLayout (new GridLayout ()); - listGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - listGroup.setText ("List"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (singleButton.getSelection ()) style |= SWT.SINGLE; - if (multiButton.getSelection ()) style |= SWT.MULTI; - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (borderButton.getSelection ()) style |= SWT.BORDER; - - /* Create the example widgets */ - list1 = new List (listGroup, style); - list1.setItems (ListData1); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {list1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Items", "Selection", "ToolTipText", "TopIndex"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "List"; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/MenuTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/MenuTab.java deleted file mode 100644 index 0e1579ddb0..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/MenuTab.java +++ /dev/null @@ -1,309 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class MenuTab extends 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 = new Shell [4]; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - MenuTab(ControlExample instance) { - super(instance); - } - - /** - * Close all the example shells. - */ - void closeAllShells() { - for (int i = 0; i<shellCount; i++) { - if (shells[i] != 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 |= SWT.LEFT_TO_RIGHT; - if (rightToLeftButton.getSelection()) orientation |= SWT.RIGHT_TO_LEFT; - int radioBehavior = 0; - if (noRadioGroupButton.getSelection()) radioBehavior |= SWT.NO_RADIO_GROUP; - - /* Create the shell and menu(s) */ - Shell shell = new Shell (SWT.SHELL_TRIM | orientation); - shells [shellCount] = shell; - if (barButton.getSelection ()) { - /* Create menu bar. */ - Menu menuBar = new Menu(shell, SWT.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, SWT.CASCADE); - item.setText(getMenuItemText("Cascade")); - if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciOpenFolder]); - hookListeners(item); - Menu dropDownMenu = new Menu(shell, SWT.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, SWT.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") + shellCount); - shell.addPaintListener(new 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, SWT.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, SWT.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, SWT.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, SWT.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, SWT.CHECK); - barButton.setText ("SWT.BAR"); - dropDownButton = new Button (styleGroup, SWT.CHECK); - dropDownButton.setText ("SWT.DROP_DOWN"); - popUpButton = new Button (styleGroup, SWT.CHECK); - popUpButton.setText ("SWT.POP_UP"); - noRadioGroupButton = new Button (styleGroup, SWT.CHECK); - noRadioGroupButton.setText ("SWT.NO_RADIO_GROUP"); - leftToRightButton = new Button (styleGroup, SWT.RADIO); - leftToRightButton.setText ("SWT.LEFT_TO_RIGHT"); - leftToRightButton.setSelection(true); - rightToLeftButton = new Button (styleGroup, SWT.RADIO); - rightToLeftButton.setText ("SWT.RIGHT_TO_LEFT"); - - /* Create the menu item style buttons */ - cascadeButton = new Button (menuItemStyleGroup, SWT.CHECK); - cascadeButton.setText ("SWT.CASCADE"); - checkButton = new Button (menuItemStyleGroup, SWT.CHECK); - checkButton.setText ("SWT.CHECK"); - pushButton = new Button (menuItemStyleGroup, SWT.CHECK); - pushButton.setText ("SWT.PUSH"); - radioButton = new Button (menuItemStyleGroup, SWT.CHECK); - radioButton.setText ("SWT.RADIO"); - separatorButton = new Button (menuItemStyleGroup, SWT.CHECK); - separatorButton.setText ("SWT.SEPARATOR"); - - /* Create the 'other' buttons */ - imagesButton = new Button (otherGroup, SWT.CHECK); - imagesButton.setText (ControlExample.getResourceString("Images")); - acceleratorsButton = new Button (otherGroup, SWT.CHECK); - acceleratorsButton.setText (ControlExample.getResourceString("Accelerators")); - mnemonicsButton = new Button (otherGroup, SWT.CHECK); - mnemonicsButton.setText (ControlExample.getResourceString("Mnemonics")); - subMenuButton = new Button (otherGroup, SWT.CHECK); - subMenuButton.setText (ControlExample.getResourceString("SubMenu")); - subSubMenuButton = new Button (otherGroup, SWT.CHECK); - subSubMenuButton.setText (ControlExample.getResourceString("SubSubMenu")); - - /* Create the "create" and "closeAll" buttons (and a 'filler' label to place them) */ - new Label(controlGroup, SWT.NONE); - createButton = new Button (controlGroup, SWT.NONE); - createButton.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_END)); - createButton.setText (ControlExample.getResourceString("Create_Shell")); - closeAllButton = new Button (controlGroup, SWT.NONE); - closeAllButton.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING)); - closeAllButton.setText (ControlExample.getResourceString("Close_All_Shells")); - - /* Add the listeners */ - createButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - createButtonSelected(e); - } - }); - closeAllButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - closeAllShells (); - } - }); - subMenuButton.addSelectionListener(new 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, boolean createSubMenu, boolean createSubSubMenu) { - MenuItem item; - if (pushButton.getSelection()) { - item = new MenuItem(menu, SWT.PUSH); - item.setText(getMenuItemText("Push")); - if (acceleratorsButton.getSelection()) item.setAccelerator(SWT.MOD1 + SWT.MOD2 + 'P'); - if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciClosedFolder]); - hookListeners(item); - } - - if (separatorButton.getSelection()) { - new MenuItem(menu, SWT.SEPARATOR); - } - - if (checkButton.getSelection()) { - item = new MenuItem(menu, SWT.CHECK); - item.setText(getMenuItemText("Check")); - if (acceleratorsButton.getSelection()) item.setAccelerator(SWT.MOD1 + SWT.MOD2 + 'C'); - if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciOpenFolder]); - hookListeners(item); - } - - if (radioButton.getSelection()) { - item = new MenuItem(menu, SWT.RADIO); - item.setText(getMenuItemText("1Radio")); - if (acceleratorsButton.getSelection()) item.setAccelerator(SWT.MOD1 + SWT.MOD2 + '1'); - if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciTarget]); - item.setSelection(true); - hookListeners(item); - - item = new MenuItem(menu, SWT.RADIO); - item.setText(getMenuItemText("2Radio")); - if (acceleratorsButton.getSelection()) item.setAccelerator(SWT.MOD1 + SWT.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, SWT.CASCADE); - item.setText(getMenuItemText("Cascade")); - if (imagesButton.getSelection()) item.setImage(instance.images[ControlExample.ciOpenFolder]); - hookListeners(item); - Menu subMenu = new Menu(menu.getShell(), SWT.DROP_DOWN); - item.setMenu(subMenu); - hookListeners(subMenu); - - createMenuItems(subMenu, createSubSubMenu, false); - } - } - - String getMenuItemText(String item) { - boolean cascade = item.equals("Cascade"); - boolean mnemonic = mnemonicsButton.getSelection(); - boolean accelerator = acceleratorsButton.getSelection(); - char acceleratorKey = item.charAt(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. - */ - String getTabText () { - return "Menu"; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ProgressBarTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ProgressBarTab.java deleted file mode 100755 index 8d91ff3cf2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ProgressBarTab.java +++ /dev/null @@ -1,178 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; - -class ProgressBarTab extends 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. - */ - ProgressBarTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup() { - super.createExampleGroup (); - - /* Create a group for the progress bar */ - progressBarGroup = new Group (exampleGroup, SWT.NONE); - progressBarGroup.setLayout (new GridLayout ()); - progressBarGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - progressBarGroup.setText ("ProgressBar"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (horizontalButton.getSelection ()) style |= SWT.HORIZONTAL; - if (verticalButton.getSelection ()) style |= SWT.VERTICAL; - if (smoothButton.getSelection ()) style |= SWT.SMOOTH; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (indeterminateButton.getSelection ()) style |= SWT.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, SWT.CHECK); - smoothButton.setText ("SWT.SMOOTH"); - indeterminateButton = new Button (styleGroup, SWT.CHECK); - indeterminateButton.setText ("SWT.INDETERMINATE"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {progressBar1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Selection", "State", "ToolTipText"}; - } - - /** - * Gets the short text for the tab folder item. - */ - String getShortTabText() { - return "PB"; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 () & SWT.SMOOTH) != 0); - indeterminateButton.setSelection ((progressBar1.getStyle () & SWT.INDETERMINATE) != 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 ()); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/RangeTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/RangeTab.java deleted file mode 100755 index 2b292a6c10..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/RangeTab.java +++ /dev/null @@ -1,197 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -abstract class RangeTab extends Tab { - /* Style widgets added to the "Style" group */ - Button horizontalButton, verticalButton; - boolean orientationButtons = true; - - /* Scale widgets added to the "Control" group */ - Spinner minimumSpinner, selectionSpinner, maximumSpinner; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - RangeTab(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, SWT.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, SWT.BORDER); - maximumSpinner.setMaximum (100000); - maximumSpinner.setSelection (getDefaultMaximum()); - maximumSpinner.setPageIncrement (100); - maximumSpinner.setIncrement (1); - maximumSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - maximumSpinner.addSelectionListener(new 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, SWT.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, SWT.BORDER); - minimumSpinner.setMaximum (100000); - minimumSpinner.setSelection(getDefaultMinimum()); - minimumSpinner.setPageIncrement (100); - minimumSpinner.setIncrement (1); - minimumSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - minimumSpinner.addSelectionListener (new 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, SWT.NONE); - selectionGroup.setLayout(new GridLayout()); - GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, false, false); - selectionGroup.setLayoutData(gridData); - selectionGroup.setText(ControlExample.getResourceString("Selection")); - - /* Create a Spinner widget */ - selectionSpinner = new Spinner (selectionGroup, SWT.BORDER); - selectionSpinner.setMaximum (100000); - selectionSpinner.setSelection (getDefaultSelection()); - selectionSpinner.setPageIncrement (100); - selectionSpinner.setIncrement (1); - selectionSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - selectionSpinner.addSelectionListener(new 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, SWT.RADIO); - horizontalButton.setText ("SWT.HORIZONTAL"); - verticalButton = new Button (styleGroup, SWT.RADIO); - verticalButton.setText ("SWT.VERTICAL"); - } - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - if (!instance.startup) { - setWidgetMinimum (); - setWidgetMaximum (); - setWidgetSelection (); - } - Widget [] widgets = getExampleWidgets (); - if (widgets.length != 0) { - if (orientationButtons) { - horizontalButton.setSelection ((widgets [0].getStyle () & SWT.HORIZONTAL) != 0); - verticalButton.setSelection ((widgets [0].getStyle () & SWT.VERTICAL) != 0); - } - borderButton.setSelection ((widgets [0].getStyle () & SWT.BORDER) != 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 (); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SashFormTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SashFormTab.java deleted file mode 100644 index fe4247e32f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SashFormTab.java +++ /dev/null @@ -1,122 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class SashFormTab extends 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 String [] 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$ - - static String [] 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$ - - - /** - * Creates the Tab within a given instance of ControlExample. - */ - SashFormTab(ControlExample instance) { - super(instance); - } - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the sashform widget */ - sashFormGroup = new Group (exampleGroup, SWT.NONE); - sashFormGroup.setLayout (new GridLayout ()); - sashFormGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - sashFormGroup.setText ("SashForm"); - } - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (smoothButton.getSelection ()) style |= SWT.SMOOTH; - - /* Create the example widgets */ - form = new SashForm (sashFormGroup, style); - list1 = new List (form, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); - list1.setItems (ListData0); - list2 = new List (form, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); - list2.setItems (ListData1); - text = new Text (form, SWT.MULTI | SWT.BORDER); - text.setText (ControlExample.getResourceString("Multi_line")); //$NON-NLS-1$ - form.setWeights(new int[] {1, 1, 1}); - } - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup(); - - /* Create the extra widgets */ - horizontalButton = new Button (styleGroup, SWT.RADIO); - horizontalButton.setText ("SWT.HORIZONTAL"); - horizontalButton.setSelection(true); - verticalButton = new Button (styleGroup, SWT.RADIO); - verticalButton.setText ("SWT.VERTICAL"); - verticalButton.setSelection(false); - smoothButton = new Button (styleGroup, SWT.CHECK); - smoothButton.setText ("SWT.SMOOTH"); - smoothButton.setSelection(false); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {form}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "SashForm"; //$NON-NLS-1$ - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - horizontalButton.setSelection ((form.getStyle () & SWT.H_SCROLL) != 0); - verticalButton.setSelection ((form.getStyle () & SWT.V_SCROLL) != 0); - smoothButton.setSelection ((form.getStyle () & SWT.SMOOTH) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SashTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SashTab.java deleted file mode 100755 index e55aa8fc23..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SashTab.java +++ /dev/null @@ -1,241 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; - -class SashTab extends Tab { - /* Example widgets and groups that contain them */ - Sash hSash, vSash; - Composite sashComp; - Group sashGroup; - List list1, list2, list3; - Text text; - Button smoothButton; - - static String [] ListData0 = {ControlExample.getResourceString("ListData0_0"), - ControlExample.getResourceString("ListData0_1"), - ControlExample.getResourceString("ListData0_2"), - ControlExample.getResourceString("ListData0_3"), - ControlExample.getResourceString("ListData0_4"), - ControlExample.getResourceString("ListData0_5"), - ControlExample.getResourceString("ListData0_6"), - ControlExample.getResourceString("ListData0_7"), - ControlExample.getResourceString("ListData0_8")}; - - static String [] ListData1 = {ControlExample.getResourceString("ListData1_0"), - ControlExample.getResourceString("ListData1_1"), - ControlExample.getResourceString("ListData1_2"), - ControlExample.getResourceString("ListData1_3"), - ControlExample.getResourceString("ListData1_4"), - ControlExample.getResourceString("ListData1_5"), - ControlExample.getResourceString("ListData1_6"), - ControlExample.getResourceString("ListData1_7"), - ControlExample.getResourceString("ListData1_8")}; - - /* Constants */ - static final int SASH_WIDTH = 3; - static final int SASH_LIMIT = 20; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - SashTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - exampleGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - exampleGroup.setLayout(new FillLayout()); - - /* Create a group for the sash widgets */ - sashGroup = new Group (exampleGroup, SWT.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, SWT.BORDER); - - /* Create the list and text widgets */ - list1 = new List (sashComp, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); - list1.setItems (ListData0); - list2 = new List (sashComp, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); - list2.setItems (ListData1); - text = new Text (sashComp, SWT.MULTI | SWT.BORDER); - text.setText (ControlExample.getResourceString("Multi_line")); - - /* Create the sashes */ - int style = getDefaultStyle(); - if (smoothButton.getSelection()) style |= SWT.SMOOTH; - vSash = new Sash (sashComp, SWT.VERTICAL | style); - hSash = new Sash (sashComp, SWT.HORIZONTAL | style); - - /* Add the listeners */ - hSash.addSelectionListener (new 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 != SWT.DRAG) { - hSash.setBounds (event.x, event.y, event.width, event.height); - layout (); - } - } - }); - vSash.addSelectionListener (new 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 != SWT.DRAG) { - vSash.setBounds (event.x, event.y, event.width, event.height); - layout (); - } - } - }); - sashComp.addControlListener (new 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, SWT.CHECK); - smoothButton.setText("SWT.SMOOTH"); - } - - void disposeExampleWidgets () { - sashComp.dispose(); - sashComp = null; - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {hSash, vSash}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 () & SWT.SMOOTH) != 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); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ScaleTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ScaleTab.java deleted file mode 100644 index 1ab2e0af08..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ScaleTab.java +++ /dev/null @@ -1,230 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class ScaleTab extends 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. - */ - ScaleTab(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, SWT.NONE); - scaleGroup.setLayout (new GridLayout ()); - scaleGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - scaleGroup.setText ("Scale"); - - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (horizontalButton.getSelection ()) style |= SWT.HORIZONTAL; - if (verticalButton.getSelection ()) style |= SWT.VERTICAL; - if (borderButton.getSelection ()) style |= SWT.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, SWT.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, SWT.BORDER); - incrementSpinner.setMaximum (100000); - incrementSpinner.setSelection (getDefaultIncrement()); - incrementSpinner.setPageIncrement (100); - incrementSpinner.setIncrement (1); - incrementSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - incrementSpinner.addSelectionListener (new 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, SWT.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, SWT.BORDER); - pageIncrementSpinner.setMaximum (100000); - pageIncrementSpinner.setSelection (getDefaultPageIncrement()); - pageIncrementSpinner.setPageIncrement (100); - pageIncrementSpinner.setIncrement (1); - pageIncrementSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - pageIncrementSpinner.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetPageIncrement (); - } - }); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {scale1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Selection", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 ()); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ScrollableTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ScrollableTab.java deleted file mode 100755 index 8a8708c3e4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ScrollableTab.java +++ /dev/null @@ -1,63 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; - -abstract class ScrollableTab extends Tab { - /* Style widgets added to the "Style" group */ - Button singleButton, multiButton, horizontalButton, verticalButton; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - ScrollableTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup () { - super.createStyleGroup (); - - /* Create the extra widgets */ - singleButton = new Button (styleGroup, SWT.RADIO); - singleButton.setText ("SWT.SINGLE"); - multiButton = new Button (styleGroup, SWT.RADIO); - multiButton.setText ("SWT.MULTI"); - horizontalButton = new Button (styleGroup, SWT.CHECK); - horizontalButton.setText ("SWT.H_SCROLL"); - horizontalButton.setSelection(true); - verticalButton = new Button (styleGroup, SWT.CHECK); - verticalButton.setText ("SWT.V_SCROLL"); - verticalButton.setSelection(true); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - Widget [] widgets = getExampleWidgets (); - if (widgets.length != 0){ - singleButton.setSelection ((widgets [0].getStyle () & SWT.SINGLE) != 0); - multiButton.setSelection ((widgets [0].getStyle () & SWT.MULTI) != 0); - horizontalButton.setSelection ((widgets [0].getStyle () & SWT.H_SCROLL) != 0); - verticalButton.setSelection ((widgets [0].getStyle () & SWT.V_SCROLL) != 0); - borderButton.setSelection ((widgets [0].getStyle () & SWT.BORDER) != 0); - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java deleted file mode 100755 index b8398c6c82..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java +++ /dev/null @@ -1,294 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class ShellTab extends 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 = new Shell [4]; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - ShellTab(ControlExample instance) { - super(instance); - } - - /** - * Close all the example shells. - */ - void closeAllShells() { - for (int i = 0; i<shellCount; i++) { - if (shells[i] != 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 = SWT.NONE; - if (noTrimButton.getSelection()) style |= SWT.NO_TRIM; - if (closeButton.getSelection()) style |= SWT.CLOSE; - if (titleButton.getSelection()) style |= SWT.TITLE; - if (minButton.getSelection()) style |= SWT.MIN; - if (maxButton.getSelection()) style |= SWT.MAX; - if (borderButton.getSelection()) style |= SWT.BORDER; - if (resizeButton.getSelection()) style |= SWT.RESIZE; - if (onTopButton.getSelection()) style |= SWT.ON_TOP; - if (toolButton.getSelection()) style |= SWT.TOOL; - if (modelessButton.getSelection()) style |= SWT.MODELESS; - if (primaryModalButton.getSelection()) style |= SWT.PRIMARY_MODAL; - if (applicationModalButton.getSelection()) style |= SWT.APPLICATION_MODAL; - if (systemModalButton.getSelection()) style |= SWT.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); - } - final Shell currentShell = shells [shellCount]; - Button button = new Button(currentShell, SWT.PUSH); - button.setBounds(20, 20, 120, 30); - Button close = new Button(currentShell, SWT.PUSH); - close.setBounds(160, 20, 120, 30); - close.setText(ControlExample.getResourceString("Close")); - close.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - currentShell.dispose(); - } - }); - - /* Set the size, title, and image, and open the shell */ - currentShell.setSize (300, 100); - currentShell.setText (ControlExample.getResourceString("Title") + 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, SWT.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, SWT.NONE); - styleGroup.setLayout (new GridLayout ()); - styleGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false, 1, 3)); - styleGroup.setText (ControlExample.getResourceString("Decoration_Styles")); - - /* Create a group for the modal style controls */ - modalStyleGroup = new Group (controlGroup, SWT.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, SWT.NONE); - otherGroup.setLayout (new GridLayout ()); - otherGroup.setLayoutData (new GridData(SWT.FILL, SWT.FILL, false, false)); - otherGroup.setText (ControlExample.getResourceString("Other")); - - /* Create a group for the parent style controls */ - parentStyleGroup = new Group (controlGroup, SWT.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, SWT.RADIO); - noParentButton.setText (ControlExample.getResourceString("No_Parent")); - parentButton = new Button (parentStyleGroup, SWT.RADIO); - parentButton.setText (ControlExample.getResourceString("Parent")); - - /* Create the decoration style buttons */ - noTrimButton = new Button (styleGroup, SWT.CHECK); - noTrimButton.setText ("SWT.NO_TRIM"); - closeButton = new Button (styleGroup, SWT.CHECK); - closeButton.setText ("SWT.CLOSE"); - titleButton = new Button (styleGroup, SWT.CHECK); - titleButton.setText ("SWT.TITLE"); - minButton = new Button (styleGroup, SWT.CHECK); - minButton.setText ("SWT.MIN"); - maxButton = new Button (styleGroup, SWT.CHECK); - maxButton.setText ("SWT.MAX"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.BORDER"); - resizeButton = new Button (styleGroup, SWT.CHECK); - resizeButton.setText ("SWT.RESIZE"); - onTopButton = new Button (styleGroup, SWT.CHECK); - onTopButton.setText ("SWT.ON_TOP"); - toolButton = new Button (styleGroup, SWT.CHECK); - toolButton.setText ("SWT.TOOL"); - - /* Create the modal style buttons */ - modelessButton = new Button (modalStyleGroup, SWT.RADIO); - modelessButton.setText ("SWT.MODELESS"); - primaryModalButton = new Button (modalStyleGroup, SWT.RADIO); - primaryModalButton.setText ("SWT.PRIMARY_MODAL"); - applicationModalButton = new Button (modalStyleGroup, SWT.RADIO); - applicationModalButton.setText ("SWT.APPLICATION_MODAL"); - systemModalButton = new Button (modalStyleGroup, SWT.RADIO); - systemModalButton.setText ("SWT.SYSTEM_MODAL"); - - /* Create the 'other' buttons */ - imageButton = new Button (otherGroup, SWT.CHECK); - imageButton.setText (ControlExample.getResourceString("Image")); - backgroundImageButton = new Button(otherGroup, SWT.CHECK); - backgroundImageButton.setText(ControlExample.getResourceString("BackgroundImage")); - - /* Create the "create" and "closeAll" buttons */ - createButton = new Button (controlGroup, SWT.NONE); - GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_END); - createButton.setLayoutData (gridData); - createButton.setText (ControlExample.getResourceString("Create_Shell")); - closeAllButton = new Button (controlGroup, SWT.NONE); - gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING); - closeAllButton.setText (ControlExample.getResourceString("Close_All_Shells")); - closeAllButton.setLayoutData (gridData); - - /* Add the listeners */ - createButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - createButtonSelected(e); - } - }); - closeAllButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - closeAllShells (); - } - }); - SelectionListener decorationButtonListener = new 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 SWT.APPLICATION_MODAL or - * SWT.SYSTEM_MODAL the style SWT.CLOSE is also selected. - * This is to make sure the user can close the shell. - */ - Button widget = (Button) event.widget; - if (widget == applicationModalButton || widget == systemModalButton) { - if (widget.getSelection()) { - closeButton.setSelection (true); - noTrimButton.setSelection (false); - } - return; - } - if (widget == 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 != noTrimButton) { - noTrimButton.setSelection (false); - return; - } - if (widget.getSelection() && widget == 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. - */ - String getTabText () { - return "Shell"; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SliderTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SliderTab.java deleted file mode 100755 index 1bb8390ddf..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SliderTab.java +++ /dev/null @@ -1,273 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class SliderTab extends 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. - */ - SliderTab(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, SWT.NONE); - sliderGroup.setLayout (new GridLayout ()); - sliderGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - sliderGroup.setText ("Slider"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (horizontalButton.getSelection ()) style |= SWT.HORIZONTAL; - if (verticalButton.getSelection ()) style |= SWT.VERTICAL; - if (borderButton.getSelection ()) style |= SWT.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, SWT.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, SWT.BORDER); - incrementSpinner.setMaximum (100000); - incrementSpinner.setSelection (getDefaultIncrement()); - incrementSpinner.setPageIncrement (100); - incrementSpinner.setIncrement (1); - incrementSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - incrementSpinner.addSelectionListener (new 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, SWT.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, SWT.BORDER); - pageIncrementSpinner.setMaximum (100000); - pageIncrementSpinner.setSelection (getDefaultPageIncrement()); - pageIncrementSpinner.setPageIncrement (100); - pageIncrementSpinner.setIncrement (1); - pageIncrementSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - pageIncrementSpinner.addSelectionListener (new 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, SWT.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, SWT.BORDER); - thumbSpinner.setMaximum (100000); - thumbSpinner.setSelection (getDefaultThumb()); - thumbSpinner.setPageIncrement (100); - thumbSpinner.setIncrement (1); - thumbSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - thumbSpinner.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetThumb (); - } - }); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {slider1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Selection", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 ()); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SpinnerTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SpinnerTab.java deleted file mode 100644 index ff0847549b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/SpinnerTab.java +++ /dev/null @@ -1,317 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; - -class SpinnerTab extends 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. - */ - SpinnerTab(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, SWT.NONE); - spinnerGroup.setLayout (new GridLayout ()); - spinnerGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - spinnerGroup.setText ("Spinner"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (readOnlyButton.getSelection ()) style |= SWT.READ_ONLY; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (wrapButton.getSelection ()) style |= SWT.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, SWT.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, SWT.BORDER); - incrementSpinner.setMaximum (100000); - incrementSpinner.setSelection (getDefaultIncrement()); - incrementSpinner.setPageIncrement (100); - incrementSpinner.setIncrement (1); - incrementSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - incrementSpinner.addSelectionListener (new 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, SWT.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, SWT.BORDER); - pageIncrementSpinner.setMaximum (100000); - pageIncrementSpinner.setSelection (getDefaultPageIncrement()); - pageIncrementSpinner.setPageIncrement (100); - pageIncrementSpinner.setIncrement (1); - pageIncrementSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - pageIncrementSpinner.addSelectionListener (new 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, SWT.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, SWT.BORDER); - digitsSpinner.setMaximum (100000); - digitsSpinner.setSelection (getDefaultDigits()); - digitsSpinner.setPageIncrement (100); - digitsSpinner.setIncrement (1); - digitsSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - - /* Add the listeners */ - digitsSpinner.addSelectionListener (new 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 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, SWT.CHECK); - readOnlyButton.setText ("SWT.READ_ONLY"); - wrapButton = new Button (styleGroup, SWT.CHECK); - wrapButton.setText ("SWT.WRAP"); - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {spinner1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Selection", "TextLimit", "ToolTipText"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Spinner"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - readOnlyButton.setSelection ((spinner1.getStyle () & SWT.READ_ONLY) != 0); - wrapButton.setSelection ((spinner1.getStyle () & SWT.WRAP) != 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 ()); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/StyledTextTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/StyledTextTab.java deleted file mode 100644 index 89b95018b4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/StyledTextTab.java +++ /dev/null @@ -1,413 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import java.io.*; -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.custom.*; - -class StyledTextTab extends 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. */ - String text; - StyleRange[] styleRanges; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - StyledTextTab(ControlExample instance) { - super(instance); - } - - /** - * Creates a bitmap image. - */ - Image createBitmapImage (Display display, String name) { - InputStream sourceStream = ControlExample.class.getResourceAsStream (name + ".bmp"); - InputStream maskStream = ControlExample.class.getResourceAsStream (name + "_mask.bmp"); - 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) { - e.printStackTrace (); - } - 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, SWT.NONE); - styledTextGroup.setLayout (new GridLayout ()); - styledTextGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - styledTextGroup.setText ("StyledText"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (singleButton.getSelection ()) style |= SWT.SINGLE; - if (multiButton.getSelection ()) style |= SWT.MULTI; - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (wrapButton.getSelection ()) style |= SWT.WRAP; - if (readOnlyButton.getSelection ()) style |= SWT.READ_ONLY; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (fullSelectionButton.getSelection ()) style |= SWT.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 != null) { - styledText.setText(text); - text = null; - } - if (styleRanges != null) { - styledText.setStyleRanges(styleRanges); - styleRanges = null; - } - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup(); - - /* Create the extra widgets */ - wrapButton = new Button (styleGroup, SWT.CHECK); - wrapButton.setText ("SWT.WRAP"); - readOnlyButton = new Button (styleGroup, SWT.CHECK); - readOnlyButton.setText ("SWT.READ_ONLY"); - fullSelectionButton = new Button (styleGroup, SWT.CHECK); - fullSelectionButton.setText ("SWT.FULL_SELECTION"); - } - - /** - * Creates the "StyledText Style" group. - */ - void createStyledTextStyleGroup () { - styledTextStyleGroup = new Group (controlGroup, SWT.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, "bold"); - italicImage = createBitmapImage (display, "italic"); - redImage = createBitmapImage (display, "red"); - yellowImage = createBitmapImage (display, "yellow"); - underlineImage = createBitmapImage (display, "underline"); - strikeoutImage = createBitmapImage (display, "strikeout"); - - /* Create controls to modify the StyledText */ - Label label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("StyledText_Style_Instructions")); - label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 6, 1)); - label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("Bold")); - label.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); - boldButton = new Button (styledTextStyleGroup, SWT.PUSH); - boldButton.setImage (boldImage); - label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("Underline")); - label.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); - underlineButton = new Button (styledTextStyleGroup, SWT.PUSH); - underlineButton.setImage (underlineImage); - label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("Foreground_Style")); - label.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); - redButton = new Button (styledTextStyleGroup, SWT.PUSH); - redButton.setImage (redImage); - label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("Italic")); - label.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); - italicButton = new Button (styledTextStyleGroup, SWT.PUSH); - italicButton.setImage (italicImage); - label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("Strikeout")); - label.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); - strikeoutButton = new Button (styledTextStyleGroup, SWT.PUSH); - strikeoutButton.setImage (strikeoutImage); - label = new Label (styledTextStyleGroup, SWT.NONE); - label.setText (ControlExample.getResourceString ("Background_Style")); - label.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); - yellowButton = new Button (styledTextStyleGroup, SWT.PUSH); - yellowButton.setImage (yellowImage); - SelectionListener styleListener = new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - Point sel = styledText.getSelectionRange(); - if ((sel == null) || (sel.y == 0)) return; - StyleRange style; - for (int i = sel.x; i<sel.x+sel.y; i++) { - StyleRange range = styledText.getStyleRangeAtOffset(i); - if (range != null) { - style = (StyleRange)range.clone(); - style.start = i; - style.length = 1; - } else { - style = new StyleRange(i, 1, null, null, SWT.NORMAL); - } - if (e.widget == boldButton) { - style.fontStyle ^= SWT.BOLD; - } else if (e.widget == italicButton) { - style.fontStyle ^= SWT.ITALIC; - } else if (e.widget == underlineButton) { - style.underline = !style.underline; - } else if (e.widget == strikeoutButton) { - style.strikeout = !style.strikeout; - } - styledText.setStyleRange(style); - } - styledText.setSelectionRange(sel.x + sel.y, 0); - } - }; - SelectionListener colorListener = new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - Point sel = styledText.getSelectionRange(); - if ((sel == null) || (sel.y == 0)) return; - Color fg = null, bg = null; - if (e.widget == redButton) { - fg = display.getSystemColor (SWT.COLOR_RED); - } else if (e.widget == yellowButton) { - bg = display.getSystemColor (SWT.COLOR_YELLOW); - } - StyleRange style; - for (int i = sel.x; i<sel.x+sel.y; i++) { - StyleRange range = styledText.getStyleRangeAtOffset(i); - if (range != null) { - style = (StyleRange)range.clone(); - style.start = i; - style.length = 1; - style.foreground = style.foreground != null ? null : fg; - style.background = style.background != null ? null : bg; - } else { - style = new StyleRange (i, 1, fg, bg, SWT.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 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 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 != null) { - styleRanges = styledText.getStyleRanges(); - text = styledText.getText(); - } - super.disposeExampleWidgets(); - } - - /** - * Gets the list of custom event names. - * - * @return an array containing custom event names - */ - String [] getCustomEventNames () { - return new String [] { - "ExtendedModifyListener", "BidiSegmentListener", "LineBackgroundListener", - "LineStyleListener", "PaintObjectListener", "TextChangeListener", - "VerifyKeyListener", "WordMovementListener"}; - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new 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). - */ - String[] getMethodNames() { - return new String[] {"Alignment", "CaretOffset", "DoubleClickEnabled", "Editable", "HorizontalIndex", "HorizontalPixel", "Orientation", "Selection", "Tabs", "Text", "TextLimit", "ToolTipText", "TopIndex", "TopPixel", "WordWrap"}; - } - - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "StyledText"; - } - - /** - * Hooks the custom listener specified by eventName. - */ - void hookCustomListener (final String eventName) { - if (eventName == "ExtendedModifyListener") { - styledText.addExtendedModifyListener (new ExtendedModifyListener() { - public void modifyText(ExtendedModifyEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "BidiSegmentListener") { - styledText.addBidiSegmentListener (new BidiSegmentListener() { - public void lineGetSegments(BidiSegmentEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "LineBackgroundListener") { - styledText.addLineBackgroundListener (new LineBackgroundListener() { - public void lineGetBackground(LineBackgroundEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "LineStyleListener") { - styledText.addLineStyleListener (new LineStyleListener() { - public void lineGetStyle(LineStyleEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "PaintObjectListener") { - styledText.addPaintObjectListener (new PaintObjectListener() { - public void paintObject(PaintObjectEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "TextChangeListener") { - styledText.getContent().addTextChangeListener (new TextChangeListener() { - public void textChanged(TextChangedEvent event) { - log (eventName + ".textChanged", event); - } - public void textChanging(TextChangingEvent event) { - log (eventName + ".textChanging", event); - } - public void textSet(TextChangedEvent event) { - log (eventName + ".textSet", event); - } - }); - } - if (eventName == "VerifyKeyListener") { - styledText.addVerifyKeyListener (new VerifyKeyListener() { - public void verifyKey(VerifyEvent event) { - log (eventName, event); - } - }); - } - if (eventName == "WordMovementListener") { - styledText.addWordMovementListener (new MovementListener() { - public void getNextOffset(MovementEvent event) { - log (eventName + ".getNextOffset", event); - } - public void getPreviousOffset(MovementEvent event) { - log (eventName + ".getPreviousOffset", event); - } - }); - } - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - wrapButton.setSelection ((styledText.getStyle () & SWT.WRAP) != 0); - readOnlyButton.setSelection ((styledText.getStyle () & SWT.READ_ONLY) != 0); - fullSelectionButton.setSelection ((styledText.getStyle () & SWT.FULL_SELECTION) != 0); - horizontalButton.setEnabled ((styledText.getStyle () & SWT.MULTI) != 0); - verticalButton.setEnabled ((styledText.getStyle () & SWT.MULTI) != 0); - wrapButton.setEnabled ((styledText.getStyle () & SWT.MULTI) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java deleted file mode 100755 index 74eb7b5640..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java +++ /dev/null @@ -1,1809 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -/** - * <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. - */ -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 */ - final ControlExample instance; - - /* Sizing constants for the "Size" group */ - static final int TOO_SMALL_SIZE = 10; - static final int SMALL_SIZE = 50; - static final int LARGE_SIZE = 100; - - /* Right-to-left support */ - static final boolean RTL_SUPPORT_ENABLE = "win32".equals(SWT.getPlatform()) || "gtk".equals(SWT.getPlatform()); - Group orientationGroup; - Button rtlButton, ltrButton, defaultOrietationButton; - - /* Controls and resources for the "Colors & Fonts" group */ - static final int IMAGE_SIZE = 12; - static final int FOREGROUND_COLOR = 0; - static final int BACKGROUND_COLOR = 1; - static final 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; - - boolean samplePopup = false; - - /* Set/Get API controls */ - Combo nameCombo; - Label returnTypeLabel; - Button getButton, setButton; - Text setText, getText; - Shell setGetDialog; - - /* Event logging variables and controls */ - Text eventConsole; - boolean logging = false; - boolean [] eventsFilter; - int setFieldsMask = 0; - Event setFieldsEvent = new Event (); - boolean ignore = false; - - /* Event logging constants */ - static final int DOIT = 0x0100; - static final int DETAIL = 0x0200; - static final int TEXT = 0x0400; - static final int X = 0x0800; - static final int Y = 0x1000; - static final int WIDTH = 0x2000; - static final int HEIGHT = 0x4000; - - static final int DETAIL_IME = 0; - static final int DETAIL_ERASE_ITEM = 1; - static final int DETAIL_TRAVERSE = 2; - - static class EventInfo { - String name; - int type; - int settableFields; - int setFields; - Event event; - EventInfo (String name, int type, int settableFields, int setFields, Event event) { - this.name = name; - this.type = type; - this.settableFields = settableFields; - this.setFields = setFields; - this.event = event; - } - } - - final EventInfo [] EVENT_INFO = { - new EventInfo ("Activate", SWT.Activate, 0, 0, new Event()), - new EventInfo ("Arm", SWT.Arm, 0, 0, new Event()), - new EventInfo ("Close", SWT.Close, DOIT, 0, new Event()), - new EventInfo ("Collapse", SWT.Collapse, 0, 0, new Event()), - new EventInfo ("Deactivate", SWT.Deactivate, 0, 0, new Event()), - new EventInfo ("DefaultSelection", SWT.DefaultSelection, 0, 0, new Event()), - new EventInfo ("Deiconify", SWT.Deiconify, 0, 0, new Event()), - new EventInfo ("Dispose", SWT.Dispose, 0, 0, new Event()), - new EventInfo ("DragDetect", SWT.DragDetect, 0, 0, new Event()), - new EventInfo ("EraseItem", SWT.EraseItem, DETAIL | DETAIL_ERASE_ITEM, 0, new Event()), - new EventInfo ("Expand", SWT.Expand, 0, 0, new Event()), - new EventInfo ("FocusIn", SWT.FocusIn, 0, 0, new Event()), - new EventInfo ("FocusOut", SWT.FocusOut, 0, 0, new Event()), - new EventInfo ("HardKeyDown", SWT.HardKeyDown, 0, 0, new Event()), - new EventInfo ("HardKeyUp", SWT.HardKeyUp, 0, 0, new Event()), - new EventInfo ("Help", SWT.Help, 0, 0, new Event()), - new EventInfo ("Hide", SWT.Hide, 0, 0, new Event()), - new EventInfo ("Iconify", SWT.Iconify, 0, 0, new Event()), - new EventInfo ("KeyDown", SWT.KeyDown, DOIT, 0, new Event()), - new EventInfo ("KeyUp", SWT.KeyUp, DOIT, 0, new Event()), - new EventInfo ("MeasureItem", SWT.MeasureItem, 0, 0, new Event()), - new EventInfo ("MenuDetect", SWT.MenuDetect, X | Y | DOIT, 0, new Event()), - new EventInfo ("Modify", SWT.Modify, 0, 0, new Event()), - new EventInfo ("MouseDoubleClick", SWT.MouseDoubleClick, 0, 0, new Event()), - new EventInfo ("MouseDown", SWT.MouseDown, 0, 0, new Event()), - new EventInfo ("MouseEnter", SWT.MouseEnter, 0, 0, new Event()), - new EventInfo ("MouseExit", SWT.MouseExit, 0, 0, new Event()), - new EventInfo ("MouseHover", SWT.MouseHover, 0, 0, new Event()), - new EventInfo ("MouseMove", SWT.MouseMove, 0, 0, new Event()), - new EventInfo ("MouseUp", SWT.MouseUp, 0, 0, new Event()), - new EventInfo ("MouseWheel", SWT.MouseWheel, 0, 0, new Event()), - new EventInfo ("Move", SWT.Move, 0, 0, new Event()), - new EventInfo ("Paint", SWT.Paint, 0, 0, new Event()), - new EventInfo ("PaintItem", SWT.PaintItem, 0, 0, new Event()), - new EventInfo ("Resize", SWT.Resize, 0, 0, new Event()), - new EventInfo ("Selection", SWT.Selection, X | Y | DOIT, 0, new Event()), // sash - new EventInfo ("SetData", SWT.SetData, 0, 0, new Event()), -// new EventInfo ("Settings", SWT.Settings, 0, 0, new Event()), // note: this event only goes to Display - new EventInfo ("Show", SWT.Show, 0, 0, new Event()), - new EventInfo ("Traverse", SWT.Traverse, DETAIL | DETAIL_TRAVERSE | DOIT, 0, new Event()), - new EventInfo ("Verify", SWT.Verify, TEXT | DOIT, 0, new Event()), - new EventInfo ("ImeComposition", SWT.ImeComposition, DETAIL | DETAIL_IME | TEXT | DOIT, 0, new Event()), - }; - - static final String [][] DETAIL_CONSTANTS = { - { // DETAIL_IME = 0 - "SWT.COMPOSITION_CHANGED", - "SWT.COMPOSITION_OFFSET", - "SWT.COMPOSITION_SELECTION", - }, - { // DETAIL_ERASE_ITEM = 1 - "SWT.SELECTED", - "SWT.FOCUSED", - "SWT.BACKGROUND", - "SWT.FOREGROUND", - "SWT.HOT", - }, - { // DETAIL_TRAVERSE = 2 - "SWT.TRAVERSE_NONE", - "SWT.TRAVERSE_ESCAPE", - "SWT.TRAVERSE_RETURN", - "SWT.TRAVERSE_TAB_PREVIOUS", - "SWT.TRAVERSE_TAB_NEXT", - "SWT.TRAVERSE_ARROW_PREVIOUS", - "SWT.TRAVERSE_ARROW_NEXT", - "SWT.TRAVERSE_MNEMONIC", - "SWT.TRAVERSE_PAGE_PREVIOUS", - "SWT.TRAVERSE_PAGE_NEXT", - }, - }; - - static final Object [] DETAIL_VALUES = { - "SWT.COMPOSITION_CHANGED", new Integer(SWT.COMPOSITION_CHANGED), - "SWT.COMPOSITION_OFFSET", new Integer(SWT.COMPOSITION_OFFSET), - "SWT.COMPOSITION_SELECTION", new Integer(SWT.COMPOSITION_SELECTION), - "SWT.SELECTED", new Integer(SWT.SELECTED), - "SWT.FOCUSED", new Integer(SWT.FOCUSED), - "SWT.BACKGROUND", new Integer(SWT.BACKGROUND), - "SWT.FOREGROUND", new Integer(SWT.FOREGROUND), - "SWT.HOT", new Integer(SWT.HOT), - "SWT.TRAVERSE_NONE", new Integer(SWT.TRAVERSE_NONE), - "SWT.TRAVERSE_ESCAPE", new Integer(SWT.TRAVERSE_ESCAPE), - "SWT.TRAVERSE_RETURN", new Integer(SWT.TRAVERSE_RETURN), - "SWT.TRAVERSE_TAB_PREVIOUS", new Integer(SWT.TRAVERSE_TAB_PREVIOUS), - "SWT.TRAVERSE_TAB_NEXT", new Integer(SWT.TRAVERSE_TAB_NEXT), - "SWT.TRAVERSE_ARROW_PREVIOUS", new Integer(SWT.TRAVERSE_ARROW_PREVIOUS), - "SWT.TRAVERSE_ARROW_NEXT", new Integer(SWT.TRAVERSE_ARROW_NEXT), - "SWT.TRAVERSE_MNEMONIC", new Integer(SWT.TRAVERSE_MNEMONIC), - "SWT.TRAVERSE_PAGE_PREVIOUS", new Integer(SWT.TRAVERSE_PAGE_PREVIOUS), - "SWT.TRAVERSE_PAGE_NEXT", new Integer(SWT.TRAVERSE_PAGE_NEXT), - }; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - Tab(ControlExample instance) { - this.instance = instance; - } - - /** - * 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, SWT.NONE); - controlGroup.setLayout (new GridLayout (2, true)); - controlGroup.setLayoutData (new GridData(SWT.FILL, SWT.FILL, false, false)); - controlGroup.setText (ControlExample.getResourceString("Parameters")); - - /* Create individual groups inside the "Control" group */ - createStyleGroup (); - createOtherGroup (); - createSetGetGroup(); - createSizeGroup (); - createColorAndFontGroup (); - if (rtlSupport()) { - 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 SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - if ((event.widget.getStyle () & SWT.RADIO) != 0) { - if (!((Button) event.widget).getSelection ()) return; - } - recreateExampleWidgets (); - } - }; - Control [] children = styleGroup.getChildren (); - for (int i=0; i<children.length; i++) { - if (children [i] instanceof Button) { - Button button = (Button) children [i]; - button.addSelectionListener (selectionListener); - } else { - if (children [i] instanceof Composite) { - /* Look down one more level of children in the style group. */ - Composite composite = (Composite) children [i]; - Control [] grandchildren = composite.getChildren (); - for (int j=0; j<grandchildren.length; j++) { - if (grandchildren [j] instanceof Button) { - Button button = (Button) grandchildren [j]; - button.addSelectionListener (selectionListener); - } - } - } - } - } - if (rtlSupport()) { - 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. - */ - final String [] methodNames = getMethodNames (); - if (methodNames != null) { - final Button setGetButton = new Button (otherGroup, SWT.PUSH); - setGetButton.setText (ControlExample.getResourceString ("Set_Get")); - setGetButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - setGetButton.addSelectionListener (new SelectionAdapter() { - public void widgetSelected (SelectionEvent e) { - if (getExampleWidgets().length > 0) { - if (setGetDialog == null) { - setGetDialog = createSetGetDialog(methodNames); - } - Point pt = setGetButton.getLocation(); - pt = display.map(setGetButton.getParent(), null, pt); - setGetDialog.setLocation(pt.x, pt.y); - setGetDialog.open(); - } - } - }); - } - } - - /** - * 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, SWT.NONE); - colorGroup.setLayout (new GridLayout (2, true)); - colorGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - colorGroup.setText (ControlExample.getResourceString ("Colors")); - colorAndFontTable = new Table(colorGroup, SWT.BORDER | SWT.V_SCROLL); - colorAndFontTable.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); - TableItem item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Foreground_Color")); - colorAndFontTable.setSelection(0); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Background_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Font")); - Button changeButton = new Button (colorGroup, SWT.PUSH); - changeButton.setText(ControlExample.getResourceString("Change")); - changeButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - Button defaultsButton = new Button (colorGroup, SWT.PUSH); - defaultsButton.setText(ControlExample.getResourceString("Defaults")); - defaultsButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - - /* Add listeners to set/reset colors and fonts. */ - colorDialog = new ColorDialog (shell); - fontDialog = new FontDialog (shell); - colorAndFontTable.addSelectionListener(new SelectionAdapter() { - public void widgetDefaultSelected(SelectionEvent event) { - changeFontOrColor (colorAndFontTable.getSelectionIndex()); - } - }); - changeButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - changeFontOrColor (colorAndFontTable.getSelectionIndex()); - } - }); - defaultsButton.addSelectionListener(new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - resetColorsAndFonts (); - } - }); - shell.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent event) { - if (foregroundColor != null) foregroundColor.dispose(); - if (backgroundColor != null) backgroundColor.dispose(); - if (font != null) font.dispose(); - foregroundColor = null; - backgroundColor = null; - font = null; - if (colorAndFontTable != null && !colorAndFontTable.isDisposed()) { - TableItem [] items = colorAndFontTable.getItems(); - for (int i = 0; i < items.length; i++) { - Image image = items[i].getImage(); - if (image != null) image.dispose(); - } - } - } - }); - } - - void changeFontOrColor(int index) { - switch (index) { - case FOREGROUND_COLOR: { - Color oldColor = foregroundColor; - if (oldColor == null) { - Control [] controls = getExampleControls (); - if (controls.length > 0) oldColor = controls [0].getForeground (); - } - if (oldColor != null) colorDialog.setRGB(oldColor.getRGB()); // seed dialog with current color - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = foregroundColor; // save old foreground color to dispose when done - foregroundColor = new Color (display, rgb); - setExampleWidgetForeground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case BACKGROUND_COLOR: { - Color oldColor = backgroundColor; - if (oldColor == null) { - Control [] controls = getExampleControls (); - if (controls.length > 0) oldColor = controls [0].getBackground (); // seed dialog with current color - } - if (oldColor != null) colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = backgroundColor; // save old background color to dispose when done - backgroundColor = new Color (display, rgb); - setExampleWidgetBackground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case FONT: { - Font oldFont = font; - if (oldFont == null) { - Control [] controls = getExampleControls (); - if (controls.length > 0) oldFont = controls [0].getFont (); - } - if (oldFont != null) fontDialog.setFontList(oldFont.getFontData()); // seed dialog with current font - FontData fontData = fontDialog.open (); - if (fontData == null) return; - oldFont = font; // dispose old font when done - font = new Font (display, fontData); - setExampleWidgetFont (); - setExampleWidgetSize (); - if (oldFont != null) oldFont.dispose (); - } - break; - } - } - - /** - * Creates the "Other" group. This is typically - * a child of the "Control" group. - */ - void createOtherGroup () { - /* Create the group */ - otherGroup = new Group (controlGroup, SWT.NONE); - otherGroup.setLayout (new GridLayout ()); - otherGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - otherGroup.setText (ControlExample.getResourceString("Other")); - - /* Create the controls */ - enabledButton = new Button(otherGroup, SWT.CHECK); - enabledButton.setText(ControlExample.getResourceString("Enabled")); - visibleButton = new Button(otherGroup, SWT.CHECK); - visibleButton.setText(ControlExample.getResourceString("Visible")); - backgroundImageButton = new Button(otherGroup, SWT.CHECK); - backgroundImageButton.setText(ControlExample.getResourceString("BackgroundImage")); - popupMenuButton = new Button(otherGroup, SWT.CHECK); - popupMenuButton.setText(ControlExample.getResourceString("PopupMenu")); - - /* Add the listeners */ - enabledButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleWidgetEnabled (); - } - }); - visibleButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleWidgetVisibility (); - } - }); - backgroundImageButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleWidgetBackgroundImage (); - } - }); - popupMenuButton.addSelectionListener (new 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 == 0) return; - - /* Create the group */ - backgroundModeGroup = new Group (controlGroup, SWT.NONE); - backgroundModeGroup.setLayout (new GridLayout ()); - backgroundModeGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - backgroundModeGroup.setText (ControlExample.getResourceString("Background_Mode")); - - /* Create the controls */ - backgroundModeCombo = new Combo(backgroundModeGroup, SWT.READ_ONLY); - backgroundModeCombo.setItems(new String[] {"SWT.INHERIT_NONE", "SWT.INHERIT_DEFAULT", "SWT.INHERIT_FORCE"}); - backgroundModeImageButton = new Button(backgroundModeGroup, SWT.CHECK); - backgroundModeImageButton.setText(ControlExample.getResourceString("BackgroundImage")); - backgroundModeColorButton = new Button(backgroundModeGroup, SWT.CHECK); - backgroundModeColorButton.setText(ControlExample.getResourceString("BackgroundColor")); - - /* Add the listeners */ - backgroundModeCombo.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleGroupBackgroundMode (); - } - }); - backgroundModeImageButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleGroupBackgroundImage (); - } - }); - backgroundModeColorButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleGroupBackgroundColor (); - } - }); - - /* Set the default state */ - backgroundModeCombo.setText(backgroundModeCombo.getItem(0)); - backgroundModeImageButton.setSelection(false); - backgroundModeColorButton.setSelection(false); - } - - void createEditEventDialog(Shell parent, int x, int y, final int index) { - final Shell dialog = new Shell(parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.APPLICATION_MODAL); - dialog.setLayout(new GridLayout()); - dialog.setText(ControlExample.getResourceString ("Edit_Event")); - Label label = new Label (dialog, SWT.NONE); - label.setText (ControlExample.getResourceString ("Edit_Event_Fields", new String [] {EVENT_INFO[index].name})); - - Group group = new Group (dialog, SWT.NONE); - group.setLayout(new GridLayout(2, false)); - group.setLayoutData(new GridData (SWT.FILL, SWT.FILL, true, true)); - - final int fields = EVENT_INFO[index].settableFields; - final int eventType = EVENT_INFO[index].type; - setFieldsMask = EVENT_INFO[index].setFields; - setFieldsEvent = EVENT_INFO[index].event; - - if ((fields & DOIT) != 0) { - new Label (group, SWT.NONE).setText ("doit"); - final Combo doitCombo = new Combo (group, SWT.READ_ONLY); - doitCombo.setItems (new String [] {"", "true", "false"}); - if ((setFieldsMask & DOIT) != 0) doitCombo.setText(Boolean.toString(setFieldsEvent.doit)); - doitCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - doitCombo.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - String newValue = doitCombo.getText(); - if (newValue.length() == 0) { - setFieldsMask &= ~DOIT; - } else { - setFieldsEvent.type = eventType; - setFieldsEvent.doit = newValue.equals("true"); - setFieldsMask |= DOIT; - } - } - }); - } - - if ((fields & DETAIL) != 0) { - new Label (group, SWT.NONE).setText ("detail"); - int detailType = fields & 0xFF; - final Combo detailCombo = new Combo (group, SWT.READ_ONLY); - detailCombo.setItems (DETAIL_CONSTANTS[detailType]); - detailCombo.add ("", 0); - detailCombo.setVisibleItemCount(detailCombo.getItemCount()); - if ((setFieldsMask & DETAIL) != 0) detailCombo.setText (DETAIL_CONSTANTS[detailType][setFieldsEvent.detail]); - detailCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - detailCombo.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - String newValue = detailCombo.getText(); - if (newValue.length() == 0) { - setFieldsMask &= ~DETAIL; - } else { - setFieldsEvent.type = eventType; - for (int i = 0; i < DETAIL_VALUES.length; i += 2) { - if (newValue.equals (DETAIL_VALUES [i])) { - setFieldsEvent.detail = ((Integer) DETAIL_VALUES [i + 1]).intValue(); - break; - } - } - setFieldsMask |= DETAIL; - } - } - }); - } - - if ((fields & TEXT) != 0) { - new Label (group, SWT.NONE).setText ("text"); - final Text textText = new Text (group, SWT.BORDER); - if ((setFieldsMask & TEXT) != 0) textText.setText(setFieldsEvent.text); - textText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - textText.addModifyListener(new ModifyListener () { - public void modifyText(ModifyEvent e) { - String newValue = textText.getText(); - if (newValue.length() == 0) { - setFieldsMask &= ~TEXT; - } else { - setFieldsEvent.type = eventType; - setFieldsEvent.text = newValue; - setFieldsMask |= TEXT; - } - } - }); - } - - if ((fields & X) != 0) { - new Label (group, SWT.NONE).setText ("x"); - final Text xText = new Text (group, SWT.BORDER); - if ((setFieldsMask & X) != 0) xText.setText(Integer.toString(setFieldsEvent.x)); - xText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - xText.addModifyListener(new ModifyListener () { - public void modifyText(ModifyEvent e) { - String newValue = xText.getText (); - try { - int newIntValue = Integer.parseInt (newValue); - setFieldsEvent.type = eventType; - setFieldsEvent.x = newIntValue; - setFieldsMask |= X; - } catch (NumberFormatException ex) { - setFieldsMask &= ~X; - } - } - }); - } - - if ((fields & Y) != 0) { - new Label (group, SWT.NONE).setText ("y"); - final Text yText = new Text (group, SWT.BORDER); - if ((setFieldsMask & Y) != 0) yText.setText(Integer.toString(setFieldsEvent.y)); - yText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - yText.addModifyListener(new ModifyListener () { - public void modifyText(ModifyEvent e) { - String newValue = yText.getText (); - try { - int newIntValue = Integer.parseInt (newValue); - setFieldsEvent.type = eventType; - setFieldsEvent.y = newIntValue; - setFieldsMask |= Y; - } catch (NumberFormatException ex) { - setFieldsMask &= ~Y; - } - } - }); - } - - if ((fields & WIDTH) != 0) { - new Label (group, SWT.NONE).setText ("width"); - final Text widthText = new Text (group, SWT.BORDER); - if ((setFieldsMask & WIDTH) != 0) widthText.setText(Integer.toString(setFieldsEvent.width)); - widthText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - widthText.addModifyListener(new ModifyListener () { - public void modifyText(ModifyEvent e) { - String newValue = widthText.getText (); - try { - int newIntValue = Integer.parseInt (newValue); - setFieldsEvent.type = eventType; - setFieldsEvent.width = newIntValue; - setFieldsMask |= WIDTH; - } catch (NumberFormatException ex) { - setFieldsMask &= ~WIDTH; - } - } - }); - } - - if ((fields & HEIGHT) != 0) { - new Label (group, SWT.NONE).setText ("height"); - final Text heightText = new Text (group, SWT.BORDER); - if ((setFieldsMask & HEIGHT) != 0) heightText.setText(Integer.toString(setFieldsEvent.height)); - heightText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - heightText.addModifyListener(new ModifyListener () { - public void modifyText(ModifyEvent e) { - String newValue = heightText.getText (); - try { - int newIntValue = Integer.parseInt (newValue); - setFieldsEvent.type = eventType; - setFieldsEvent.height = newIntValue; - setFieldsMask |= HEIGHT; - } catch (NumberFormatException ex) { - setFieldsMask &= ~HEIGHT; - } - } - }); - } - - Button ok = new Button (dialog, SWT.PUSH); - ok.setText (ControlExample.getResourceString("OK")); - GridData data = new GridData (70, SWT.DEFAULT); - data.horizontalAlignment = SWT.RIGHT; - ok.setLayoutData (data); - ok.addSelectionListener (new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - EVENT_INFO[index].setFields = setFieldsMask; - EVENT_INFO[index].event = setFieldsEvent; - dialog.dispose(); - } - }); - - dialog.setDefaultButton(ok); - dialog.pack(); - dialog.setLocation(x, y); - dialog.open(); - } - - /** - * Create the event console popup menu. - */ - void createEventConsolePopup () { - Menu popup = new Menu (shell, SWT.POP_UP); - eventConsole.setMenu (popup); - - MenuItem cut = new MenuItem (popup, SWT.PUSH); - cut.setText (ControlExample.getResourceString("MenuItem_Cut")); - cut.addListener (SWT.Selection, new Listener () { - public void handleEvent (Event event) { - eventConsole.cut (); - } - }); - MenuItem copy = new MenuItem (popup, SWT.PUSH); - copy.setText (ControlExample.getResourceString("MenuItem_Copy")); - copy.addListener (SWT.Selection, new Listener () { - public void handleEvent (Event event) { - eventConsole.copy (); - } - }); - MenuItem paste = new MenuItem (popup, SWT.PUSH); - paste.setText (ControlExample.getResourceString("MenuItem_Paste")); - paste.addListener (SWT.Selection, new Listener () { - public void handleEvent (Event event) { - eventConsole.paste (); - } - }); - new MenuItem (popup, SWT.SEPARATOR); - MenuItem selectAll = new MenuItem (popup, SWT.PUSH); - selectAll.setText(ControlExample.getResourceString("MenuItem_SelectAll")); - selectAll.addListener (SWT.Selection, new 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, SWT.NONE); - exampleGroup.setLayout (new GridLayout ()); - exampleGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 () { - final Shell dialog = new Shell (shell, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.APPLICATION_MODAL); - dialog.setText (ControlExample.getResourceString ("Select_Listeners")); - dialog.setLayout (new GridLayout (2, false)); - final Table table = new Table (dialog, SWT.BORDER | SWT.V_SCROLL | SWT.CHECK); - GridData data = new GridData(GridData.FILL_BOTH); - data.verticalSpan = 3; - table.setLayoutData(data); - for (int i = 0; i < EVENT_INFO.length; i++) { - TableItem item = new TableItem (table, SWT.NONE); - item.setText (EVENT_INFO[i].name); - item.setChecked (eventsFilter[i]); - } - final String [] customNames = getCustomEventNames (); - for (int i = 0; i < customNames.length; i++) { - TableItem item = new TableItem (table, SWT.NONE); - item.setText (customNames[i]); - item.setChecked (eventsFilter[EVENT_INFO.length + i]); - } - Button selectAll = new Button (dialog, SWT.PUSH); - selectAll.setText(ControlExample.getResourceString ("Select_All")); - selectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - selectAll.addSelectionListener (new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem [] items = table.getItems(); - for (int i = 0; i < EVENT_INFO.length; i++) { - items[i].setChecked(true); - } - for (int i = 0; i < customNames.length; i++) { - items[EVENT_INFO.length + i].setChecked(true); - } - } - }); - Button deselectAll = new Button (dialog, SWT.PUSH); - deselectAll.setText(ControlExample.getResourceString ("Deselect_All")); - deselectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - deselectAll.addSelectionListener (new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem [] items = table.getItems(); - for (int i = 0; i < EVENT_INFO.length; i++) { - items[i].setChecked(false); - } - for (int i = 0; i < customNames.length; i++) { - items[EVENT_INFO.length + i].setChecked(false); - } - } - }); - final Button editEvent = new Button (dialog, SWT.PUSH); - editEvent.setText (ControlExample.getResourceString ("Edit_Event")); - editEvent.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING)); - editEvent.addSelectionListener (new SelectionAdapter() { - public void widgetSelected (SelectionEvent e) { - Point pt = editEvent.getLocation(); - pt = e.display.map(editEvent, null, pt); - int index = table.getSelectionIndex(); - if (getExampleWidgets().length > 0 && index != -1) { - createEditEventDialog(dialog, pt.x, pt.y, index); - } - } - }); - editEvent.setEnabled(false); - table.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - int fields = 0; - int index = table.getSelectionIndex(); - if (index != -1 && index < EVENT_INFO.length) { // TODO: Allow custom widgets to specify event info - fields = (EVENT_INFO[index].settableFields); - } - editEvent.setEnabled(fields != 0); - } - public void widgetDefaultSelected(SelectionEvent e) { - if (editEvent.getEnabled()) { - Point pt = editEvent.getLocation(); - pt = e.display.map(editEvent, null, pt); - int index = table.getSelectionIndex(); - if (getExampleWidgets().length > 0 && index != -1 && index < EVENT_INFO.length) { - createEditEventDialog(dialog, pt.x, pt.y, index); - } - } - } - }); - - new Label(dialog, SWT.NONE); /* Filler */ - Button ok = new Button (dialog, SWT.PUSH); - ok.setText(ControlExample.getResourceString ("OK")); - dialog.setDefaultButton(ok); - ok.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - ok.addSelectionListener (new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - TableItem [] items = table.getItems(); - for (int i = 0; i < EVENT_INFO.length; i++) { - eventsFilter[i] = items[i].getChecked(); - } - for (int i = 0; i < customNames.length; i++) { - eventsFilter[EVENT_INFO.length + i] = items[EVENT_INFO.length + i].getChecked(); - } - dialog.dispose(); - } - }); - dialog.pack (); - /* - * If the preferred size of the dialog is too tall for the display, - * then reduce the height, so that the vertical scrollbar will appear. - */ - Rectangle bounds = dialog.getBounds(); - Rectangle trim = dialog.computeTrim(0, 0, 0, 0); - Rectangle clientArea = display.getClientArea(); - if (bounds.height > clientArea.height) { - dialog.setSize(bounds.width, clientArea.height - trim.height); - } - dialog.setLocation(bounds.x, clientArea.y); - 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, SWT.NONE); - listenersGroup.setLayout (new GridLayout (3, false)); - listenersGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true, 2, 1)); - listenersGroup.setText (ControlExample.getResourceString ("Listeners")); - - /* - * Create the button to access the 'Listeners' dialog. - */ - Button listenersButton = new Button (listenersGroup, SWT.PUSH); - listenersButton.setText (ControlExample.getResourceString ("Select_Listeners")); - listenersButton.addSelectionListener (new SelectionAdapter() { - public void widgetSelected (SelectionEvent e) { - createListenerSelectionDialog (); - recreateExampleWidgets (); - } - }); - - /* - * Create the checkbox to add/remove listeners to/from the example widgets. - */ - final Button listenCheckbox = new Button (listenersGroup, SWT.CHECK); - listenCheckbox.setText (ControlExample.getResourceString ("Listen")); - listenCheckbox.addSelectionListener (new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - logging = listenCheckbox.getSelection (); - recreateExampleWidgets (); - } - }); - - /* - * Create the button to clear the text. - */ - Button clearButton = new Button (listenersGroup, SWT.PUSH); - clearButton.setText (ControlExample.getResourceString ("Clear")); - clearButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - clearButton.addSelectionListener (new SelectionAdapter() { - public void widgetSelected (SelectionEvent e) { - eventConsole.setText (""); - } - }); - - /* Initialize the eventsFilter to log all events. */ - int customEventCount = getCustomEventNames ().length; - eventsFilter = new boolean [EVENT_INFO.length + customEventCount]; - for (int i = 0; i < EVENT_INFO.length + customEventCount; i++) { - eventsFilter [i] = true; - } - - /* Create the event console Text. */ - eventConsole = new Text (listenersGroup, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - GridData data = new GridData (GridData.FILL_BOTH); - data.horizontalSpan = 3; - data.heightHint = 80; - eventConsole.setLayoutData (data); - createEventConsolePopup (); - eventConsole.addKeyListener (new KeyAdapter () { - public void keyPressed (KeyEvent e) { - if ((e.keyCode == 'A' || e.keyCode == 'a') && (e.stateMask & SWT.MOD1) != 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). - */ - String[] getMethodNames() { - return null; - } - - Shell createSetGetDialog(String[] methodNames) { - final Shell dialog = new Shell(shell, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MODELESS); - dialog.setLayout(new GridLayout(2, false)); - dialog.setText(getTabText() + " " + ControlExample.getResourceString ("Set_Get")); - nameCombo = new Combo(dialog, SWT.READ_ONLY); - nameCombo.setItems(methodNames); - nameCombo.setText(methodNames[0]); - nameCombo.setVisibleItemCount(methodNames.length); - nameCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - nameCombo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - resetLabels(); - } - }); - returnTypeLabel = new Label(dialog, SWT.NONE); - returnTypeLabel.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false)); - setButton = new Button(dialog, SWT.PUSH); - setButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false)); - setButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - setValue(); - setText.selectAll(); - setText.setFocus(); - } - }); - setText = new Text(dialog, SWT.SINGLE | SWT.BORDER); - setText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - getButton = new Button(dialog, SWT.PUSH); - getButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false)); - getButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - getValue(); - } - }); - getText = new Text(dialog, SWT.MULTI | SWT.BORDER | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL); - GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); - data.widthHint = 240; - data.heightHint = 200; - getText.setLayoutData(data); - resetLabels(); - dialog.setDefaultButton(setButton); - dialog.pack(); - dialog.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - setGetDialog = null; - } - }); - return dialog; - } - - void resetLabels() { - String methodRoot = nameCombo.getText(); - returnTypeLabel.setText(parameterInfo(methodRoot)); - setButton.setText(setMethodName(methodRoot)); - getButton.setText("get" + methodRoot); - setText.setText(""); - getText.setText(""); - getValue(); - setText.setFocus(); - } - - String setMethodName(String methodRoot) { - return "set" + methodRoot; - } - - String parameterInfo(String methodRoot) { - String typeName = null; - Class returnType = getReturnType(methodRoot); - boolean isArray = returnType.isArray(); - if (isArray) { - typeName = returnType.getComponentType().getName(); - } else { - typeName = returnType.getName(); - } - String typeNameString = typeName; - int index = typeName.lastIndexOf('.'); - if (index != -1 && index+1 < typeName.length()) typeNameString = typeName.substring(index+1); - String info = ControlExample.getResourceString("Info_" + typeNameString + (isArray ? "A" : "")); - if (isArray) { - typeNameString += "[]"; - } - return ControlExample.getResourceString("Parameter_Info", new Object[] {typeNameString, info}); - } - - void getValue() { - String 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 == null) { - getText.append("null"); - } else if (result.getClass().isArray()) { - int length = java.lang.reflect.Array.getLength(result); - if (length == 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"); - } - } - } - - Class getReturnType(String methodRoot) { - Class returnType = null; - String methodName = "get" + methodRoot; - Widget[] widgets = getExampleWidgets(); - try { - java.lang.reflect.Method method = widgets[0].getClass().getMethod(methodName, null); - returnType = method.getReturnType(); - } catch (Exception e) { - } - return returnType; - } - - void setValue() { - /* The parameter type must be the same as the get method's return type */ - String methodRoot = nameCombo.getText(); - Class returnType = getReturnType(methodRoot); - String methodName = setMethodName(methodRoot); - String 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, new Class[] {returnType}); - String typeName = returnType.getName(); - Object[] parameter = null; - if (value.equals("null")) { - parameter = new Object[] {null}; - } else if (typeName.equals("int")) { - parameter = new Object[] {new Integer(value)}; - } else if (typeName.equals("long")) { - parameter = new Object[] {new Long(value)}; - } else if (typeName.equals("char")) { - parameter = new Object[] {value.length() == 1 ? new Character(value.charAt(0)) : new Character('\0')}; - } else if (typeName.equals("boolean")) { - parameter = new Object[] {new Boolean(value)}; - } else if (typeName.equals("java.lang.String")) { - parameter = new Object[] {value}; - } else if (typeName.equals("org.eclipse.swt.graphics.Point")) { - String xy[] = split(value, ','); - parameter = new Object[] {new Point(new Integer(xy[0]).intValue(),new Integer(xy[1]).intValue())}; - } else if (typeName.equals("[I")) { - String 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 = new Object[] {ints}; - } else if (typeName.equals("[Ljava.lang.String;")) { - parameter = new Object[] {split(value, ',')}; - } else { - parameter = parameterForType(typeName, value, widgets[i]); - } - method.invoke(widgets[i], parameter); - } catch (Exception e) { - Throwable cause = e.getCause(); - String message = e.getMessage(); - getText.setText(e.toString()); - if (cause != null) getText.append(", cause=\n" + cause.toString()); - if (message != null) getText.append(", message=\n" + message); - } - } - } - - Object[] parameterForType(String typeName, String value, Widget widget) { - return new Object[] {value}; - } - - void createOrientationGroup () { - /* Create Orientation group*/ - orientationGroup = new Group (controlGroup, SWT.NONE); - orientationGroup.setLayout (new GridLayout()); - orientationGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - orientationGroup.setText (ControlExample.getResourceString("Orientation")); - defaultOrietationButton = new Button (orientationGroup, SWT.RADIO); - defaultOrietationButton.setText (ControlExample.getResourceString("Default")); - defaultOrietationButton.setSelection (true); - ltrButton = new Button (orientationGroup, SWT.RADIO); - ltrButton.setText ("SWT.LEFT_TO_RIGHT"); - rtlButton = new Button (orientationGroup, SWT.RADIO); - rtlButton.setText ("SWT.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, SWT.NONE); - sizeGroup.setLayout (new GridLayout()); - sizeGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - sizeGroup.setText (ControlExample.getResourceString("Size")); - - /* Create the controls */ - - /* - * The preferred size of a widget is the size returned - * by widget.computeSize (SWT.DEFAULT, SWT.DEFAULT). - * This size is defined on a widget by widget basis. - * Many widgets will attempt to display their contents. - */ - preferredButton = new Button (sizeGroup, SWT.RADIO); - preferredButton.setText (ControlExample.getResourceString("Preferred")); - tooSmallButton = new Button (sizeGroup, SWT.RADIO); - tooSmallButton.setText (TOO_SMALL_SIZE + " X " + TOO_SMALL_SIZE); - smallButton = new Button(sizeGroup, SWT.RADIO); - smallButton.setText (SMALL_SIZE + " X " + SMALL_SIZE); - largeButton = new Button (sizeGroup, SWT.RADIO); - largeButton.setText (LARGE_SIZE + " X " + LARGE_SIZE); - fillHButton = new Button (sizeGroup, SWT.CHECK); - fillHButton.setText (ControlExample.getResourceString("Fill_X")); - fillVButton = new Button (sizeGroup, SWT.CHECK); - fillVButton.setText (ControlExample.getResourceString("Fill_Y")); - - /* Add the listeners */ - SelectionAdapter selectionListener = new 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, SWT.NONE); - styleGroup.setLayout (new GridLayout ()); - styleGroup.setLayoutData (new GridData (SWT.FILL, SWT.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, SWT.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++) { - final Control control = controls [i]; - control.addListener(SWT.MenuDetect, new Listener() { - public void handleEvent(Event event) { - Menu menu = control.getMenu(); - if (menu != null && samplePopup) { - menu.dispose(); - menu = null; - } - if (menu == null && popupMenuButton.getSelection()) { - menu = new Menu(shell, SWT.POP_UP); - MenuItem item = new MenuItem(menu, SWT.PUSH); - item.setText("Sample popup menu item"); - specialPopupMenuItems(menu, event); - control.setMenu(menu); - samplePopup = true; - } - } - }); - } - } - - protected void specialPopupMenuItems(final Menu menu, final 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(SWT.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(SWT.COLOR_WHITE)); - gc.fillRectangle(0, 0, bounds.width, bounds.height); - gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); - gc.drawRectangle(0, 0, bounds.width - 1, bounds.height - 1); - FontData data[] = font.getFontData(); - int style = data[0].getStyle(); - switch (style) { - case SWT.NORMAL: - gc.drawLine(3, 3, 3, 8); - gc.drawLine(4, 3, 7, 8); - gc.drawLine(8, 3, 8, 8); - break; - case SWT.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 SWT.ITALIC: - gc.drawLine(6, 2, 8, 2); - gc.drawLine(7, 3, 4, 8); - gc.drawLine(3, 9, 5, 9); - break; - case SWT.BOLD | SWT.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. - * Subclasses override this method to allow adding of custom events. - * - * @return an array containing custom event names - * @see hookCustomListener - */ - String [] getCustomEventNames () { - return new String [0]; - } - - /** - * Gets the default style for a widget - * - * @return the default style bit - */ - int getDefaultStyle () { - if (ltrButton != null && ltrButton.getSelection()) { - return SWT.LEFT_TO_RIGHT; - } - if (rtlButton != null && rtlButton.getSelection()) { - return SWT.RIGHT_TO_LEFT; - } - return SWT.NONE; - } - - /** - * Gets the "Example" widgets. - * - * @return an array containing the example widgets - */ - Widget [] getExampleWidgets () { - return new Widget [0]; - } - - /** - * 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 (widgets[i] instanceof Control) { - Control[] newControls = new Control[controls.length + 1]; - System.arraycopy(controls, 0, newControls, 0, controls.length); - controls = newControls; - controls[controls.length - 1] = (Control)widgets[i]; - } - } - return controls; - } - - /** - * Gets the "Example" widget's items, if any. - * - * @return an array containing the example widget'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 - */ - String getShortTabText() { - return getTabText(); - } - - /** - * Gets the text for the tab folder item. - * - * @return the text for the tab item - */ - String 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]); - } - String [] customNames = getCustomEventNames (); - for (int i = 0; i < customNames.length; i++) { - if (eventsFilter [EVENT_INFO.length + i]) { - hookCustomListener (customNames[i]); - } - } - } - } - - /** - * Hooks the custom listener specified by eventName. - * Subclasses override this method to add custom listeners. - * @see getCustomEventNames - */ - void hookCustomListener (String eventName) { - } - - /** - * Hooks all listeners to the specified widget. - */ - void hookListeners (Widget widget) { - if (logging) { - Listener listener = new Listener() { - public void handleEvent (Event event) { - log (event); - } - }; - for (int i = 0; i < EVENT_INFO.length; i++) { - if (eventsFilter [i]) { - widget.addListener (EVENT_INFO[i].type, listener); - } - } - } - } - - /** - * Logs an untyped event to the event console. - */ - void log(Event event) { - int i = 0; - while (i < EVENT_INFO.length) { - if (EVENT_INFO[i].type == event.type) break; - i++; - } - String toString = EVENT_INFO[i].name + " [" + event.type + "]: "; - switch (event.type) { - case SWT.KeyDown: - case SWT.KeyUp: toString += new KeyEvent (event).toString (); break; - case SWT.MouseDown: - case SWT.MouseUp: - case SWT.MouseMove: - case SWT.MouseEnter: - case SWT.MouseExit: - case SWT.MouseDoubleClick: - case SWT.MouseWheel: - case SWT.MouseHover: toString += new MouseEvent (event).toString (); break; - case SWT.Paint: toString += new PaintEvent (event).toString (); break; - case SWT.Move: - case SWT.Resize: toString += new ControlEvent (event).toString (); break; - case SWT.Dispose: toString += new DisposeEvent (event).toString (); break; - case SWT.Selection: - case SWT.DefaultSelection: toString += new SelectionEvent (event).toString (); break; - case SWT.FocusIn: - case SWT.FocusOut: toString += new FocusEvent (event).toString (); break; - case SWT.Expand: - case SWT.Collapse: toString += new TreeEvent (event).toString (); break; - case SWT.Iconify: - case SWT.Deiconify: - case SWT.Close: - case SWT.Activate: - case SWT.Deactivate: toString += new ShellEvent (event).toString (); break; - case SWT.Show: - case SWT.Hide: toString += (event.widget instanceof Menu) ? new MenuEvent (event).toString () : event.toString(); break; - case SWT.Modify: toString += new ModifyEvent (event).toString (); break; - case SWT.Verify: toString += new VerifyEvent (event).toString (); break; - case SWT.Help: toString += new HelpEvent (event).toString (); break; - case SWT.Arm: toString += new ArmEvent (event).toString (); break; - case SWT.Traverse: toString += new TraverseEvent (event).toString (); break; - case SWT.HardKeyDown: - case SWT.HardKeyUp: - case SWT.DragDetect: - case SWT.MenuDetect: - case SWT.SetData: - default: toString += event.toString (); - } - log (toString); - - /* Return values for event fields. */ - int mask = EVENT_INFO[i].setFields; - if (!ignore && mask != 0) { - Event setFieldsEvent = EVENT_INFO[i].event; - if ((mask & DOIT) != 0) event.doit = setFieldsEvent.doit; - if ((mask & DETAIL) != 0) event.detail = setFieldsEvent.detail; - if ((mask & TEXT) != 0) event.text = setFieldsEvent.text; - if ((mask & X) != 0) event.x = setFieldsEvent.x; - if ((mask & Y) != 0) event.y = setFieldsEvent.y; - if ((mask & WIDTH) != 0) event.width = setFieldsEvent.width; - if ((mask & HEIGHT) != 0) event.height = setFieldsEvent.height; - eventConsole.append (ControlExample.getResourceString("Returning")); - ignore = true; - log (event); - ignore = false; - } - } - - /** - * Logs a string to the event console. - */ - void log (String string) { - eventConsole.append (string); - eventConsole.append ("\n"); - } - - /** - * Logs a typed event to the event console. - */ - void log (String 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 != null) oldColor.dispose(); - oldColor = backgroundColor; - backgroundColor = null; - setExampleWidgetBackground (); - if (oldColor != null) oldColor.dispose(); - Font oldFont = font; - font = null; - setExampleWidgetFont (); - setExampleWidgetSize (); - if (oldFont != null) oldFont.dispose(); - } - - boolean rtlSupport() { - return RTL_SUPPORT_ENABLE; - } - - /** - * Sets the background color of the "Example" widgets' parent. - */ - void setExampleGroupBackgroundColor () { - if (backgroundModeGroup == null) return; - exampleGroup.setBackground (backgroundModeColorButton.getSelection () ? display.getSystemColor(SWT.COLOR_BLUE) : null); - } - /** - * Sets the background image of the "Example" widgets' parent. - */ - void setExampleGroupBackgroundImage () { - if (backgroundModeGroup == null) return; - exampleGroup.setBackgroundImage (backgroundModeImageButton.getSelection () ? instance.images[ControlExample.ciParentBackground] : null); - } - - /** - * Sets the background mode of the "Example" widgets' parent. - */ - void setExampleGroupBackgroundMode () { - if (backgroundModeGroup == null) return; - String modeString = backgroundModeCombo.getText (); - int mode = SWT.INHERIT_NONE; - if (modeString.equals("SWT.INHERIT_DEFAULT")) mode = SWT.INHERIT_DEFAULT; - if (modeString.equals("SWT.INHERIT_FORCE")) mode = SWT.INHERIT_FORCE; - exampleGroup.setBackgroundMode (mode); - } - - /** - * Sets the background color of the "Example" widgets. - */ - void setExampleWidgetBackground () { - if (colorAndFontTable == 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 == 0) return; - if (color == null) color = controls [0].getBackground (); - TableItem item = colorAndFontTable.getItem(BACKGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == 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 == 0) return; - if (ft == null) ft = controls [0].getFont (); - TableItem item = colorAndFontTable.getItem(FONT); - Image oldImage = item.getImage(); - if (oldImage != null) oldImage.dispose(); - item.setImage (fontImage (ft)); - item.setFont(ft); - colorAndFontTable.layout (); - } - - /** - * Sets the foreground color of the "Example" widgets. - */ - void setExampleWidgetForeground () { - if (colorAndFontTable == 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 == 0) return; - if (color == null) color = controls [0].getForeground (); - TableItem item = colorAndFontTable.getItem(FOREGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != null) oldImage.dispose(); - item.setImage (colorImage(color)); - } - - /** - * Sets the size of the "Example" widgets. - */ - void setExampleWidgetSize () { - int size = SWT.DEFAULT; - if (preferredButton == null) return; - if (preferredButton.getSelection()) size = SWT.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() ? SWT.FILL : SWT.LEFT; - gridData.verticalAlignment = fillVButton.getSelection() ? SWT.FILL : SWT.TOP; - controls [i].setLayoutData (gridData); - } - tabFolderPage.layout (controls); - } - - /** - * Sets the state of the "Example" widgets. Subclasses - * may extend 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 () { - if (backgroundImageButton != null && backgroundImageButton.isDisposed()) return; - 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. - */ - String [] split (String string, char ch) { - String [] result = new String[0]; - int start = 0; - int length = string.length(); - while (start < length) { - int end = string.indexOf(ch, start); - if (end == -1) end = length; - String substr = string.substring(start, end); - String [] newResult = new String[result.length + 1]; - System.arraycopy(result, 0, newResult, 0, result.length); - newResult [result.length] = substr; - result = newResult; - start = end + 1; - } - return result; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TabFolderTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TabFolderTab.java deleted file mode 100644 index 2b6177a107..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TabFolderTab.java +++ /dev/null @@ -1,166 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class TabFolderTab extends Tab { - /* Example widgets and groups that contain them */ - TabFolder tabFolder1; - Group tabFolderGroup; - - /* Style widgets added to the "Style" group */ - Button topButton, bottomButton; - - static String [] TabItems1 = {ControlExample.getResourceString("TabItem1_0"), - ControlExample.getResourceString("TabItem1_1"), - ControlExample.getResourceString("TabItem1_2")}; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - TabFolderTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the TabFolder */ - tabFolderGroup = new Group (exampleGroup, SWT.NONE); - tabFolderGroup.setLayout (new GridLayout ()); - tabFolderGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - tabFolderGroup.setText ("TabFolder"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (topButton.getSelection ()) style |= SWT.TOP; - if (bottomButton.getSelection ()) style |= SWT.BOTTOM; - if (borderButton.getSelection ()) style |= SWT.BORDER; - - /* Create the example widgets */ - tabFolder1 = new TabFolder (tabFolderGroup, style); - for (int i = 0; i < TabItems1.length; i++) { - TabItem item = new TabItem(tabFolder1, SWT.NONE); - item.setText(TabItems1[i]); - item.setToolTipText(ControlExample.getResourceString("Tooltip", new String [] {TabItems1[i]})); - Text content = new Text(tabFolder1, SWT.WRAP | SWT.MULTI); - content.setText(ControlExample.getResourceString("TabItem_content") + ": " + i); - item.setControl(content); - } - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup (); - - /* Create the extra widgets */ - topButton = new Button (styleGroup, SWT.RADIO); - topButton.setText ("SWT.TOP"); - topButton.setSelection(true); - bottomButton = new Button (styleGroup, SWT.RADIO); - bottomButton.setText ("SWT.BOTTOM"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.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 new Widget [] {tabFolder1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"Selection", "SelectionIndex"}; - } - - String setMethodName(String methodRoot) { - /* Override to handle special case of int getSelectionIndex()/setSelection(int) */ - return (methodRoot.equals("SelectionIndex")) ? "setSelection" : "set" + methodRoot; - } - - Object[] parameterForType(String typeName, String value, Widget widget) { - if (value.equals("")) return new Object[] {new TabItem[0]}; - if (typeName.equals("org.eclipse.swt.widgets.TabItem")) { - TabItem item = findItem(value, ((TabFolder) widget).getItems()); - if (item != null) return new Object[] {item}; - } - if (typeName.equals("[Lorg.eclipse.swt.widgets.TabItem;")) { - String[] 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(String value, TabItem[] items) { - for (int i = 0; i < items.length; i++) { - TabItem item = items[i]; - if (item.getText().equals(value)) return item; - } - return null; - } - - /** - * Gets the short text for the tab folder item. - */ - String getShortTabText() { - return "TF"; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "TabFolder"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - topButton.setSelection ((tabFolder1.getStyle () & SWT.TOP) != 0); - bottomButton.setSelection ((tabFolder1.getStyle () & SWT.BOTTOM) != 0); - borderButton.setSelection ((tabFolder1.getStyle () & SWT.BORDER) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTab.java deleted file mode 100755 index fb9cd648aa..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTab.java +++ /dev/null @@ -1,684 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class TableTab extends 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 noScrollButton, 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 final int ITEM_FOREGROUND_COLOR = 3; - static final int ITEM_BACKGROUND_COLOR = 4; - static final int ITEM_FONT = 5; - static final int CELL_FOREGROUND_COLOR = 6; - static final int CELL_BACKGROUND_COLOR = 7; - static final int CELL_FONT = 8; - Color itemForegroundColor, itemBackgroundColor, cellForegroundColor, cellBackgroundColor; - Font itemFont, cellFont; - - static String [] columnTitles = {ControlExample.getResourceString("TableTitle_0"), - ControlExample.getResourceString("TableTitle_1"), - ControlExample.getResourceString("TableTitle_2"), - ControlExample.getResourceString("TableTitle_3")}; - - static String[][] tableData = { - { ControlExample.getResourceString("TableLine0_0"), - ControlExample.getResourceString("TableLine0_1"), - ControlExample.getResourceString("TableLine0_2"), - ControlExample.getResourceString("TableLine0_3") }, - { ControlExample.getResourceString("TableLine1_0"), - ControlExample.getResourceString("TableLine1_1"), - ControlExample.getResourceString("TableLine1_2"), - ControlExample.getResourceString("TableLine1_3") }, - { ControlExample.getResourceString("TableLine2_0"), - ControlExample.getResourceString("TableLine2_1"), - ControlExample.getResourceString("TableLine2_2"), - ControlExample.getResourceString("TableLine2_3") } }; - - Point menuMouseCoords; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - TableTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Colors and Fonts" group. - */ - void createColorAndFontGroup () { - super.createColorAndFontGroup(); - - TableItem item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Foreground_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Background_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Font")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Cell_Foreground_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Cell_Background_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Cell_Font")); - - shell.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent event) { - if (itemBackgroundColor != null) itemBackgroundColor.dispose(); - if (itemForegroundColor != null) itemForegroundColor.dispose(); - if (itemFont != null) itemFont.dispose(); - if (cellBackgroundColor != null) cellBackgroundColor.dispose(); - if (cellForegroundColor != null) cellForegroundColor.dispose(); - if (cellFont != 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 == null) oldColor = table1.getItem (0).getForeground (); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = itemForegroundColor; - itemForegroundColor = new Color (display, rgb); - setItemForeground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case ITEM_BACKGROUND_COLOR: { - Color oldColor = itemBackgroundColor; - if (oldColor == null) oldColor = table1.getItem (0).getBackground (); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = itemBackgroundColor; - itemBackgroundColor = new Color (display, rgb); - setItemBackground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case ITEM_FONT: { - Font oldFont = itemFont; - if (oldFont == null) oldFont = table1.getItem (0).getFont (); - fontDialog.setFontList(oldFont.getFontData()); - FontData fontData = fontDialog.open (); - if (fontData == null) return; - oldFont = itemFont; - itemFont = new Font (display, fontData); - setItemFont (); - setExampleWidgetSize (); - if (oldFont != null) oldFont.dispose (); - } - break; - case CELL_FOREGROUND_COLOR: { - Color oldColor = cellForegroundColor; - if (oldColor == null) oldColor = table1.getItem (0).getForeground (1); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = cellForegroundColor; - cellForegroundColor = new Color (display, rgb); - setCellForeground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case CELL_BACKGROUND_COLOR: { - Color oldColor = cellBackgroundColor; - if (oldColor == null) oldColor = table1.getItem (0).getBackground (1); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = cellBackgroundColor; - cellBackgroundColor = new Color (display, rgb); - setCellBackground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case CELL_FONT: { - Font oldFont = cellFont; - if (oldFont == null) oldFont = table1.getItem (0).getFont (1); - fontDialog.setFontList(oldFont.getFontData()); - FontData fontData = fontDialog.open (); - if (fontData == null) return; - oldFont = cellFont; - cellFont = new Font (display, fontData); - setCellFont (); - setExampleWidgetSize (); - if (oldFont != 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, SWT.CHECK); - linesVisibleButton.setText (ControlExample.getResourceString("Lines_Visible")); - multipleColumns = new Button (otherGroup, SWT.CHECK); - multipleColumns.setText (ControlExample.getResourceString("Multiple_Columns")); - multipleColumns.setSelection(true); - headerVisibleButton = new Button (otherGroup, SWT.CHECK); - headerVisibleButton.setText (ControlExample.getResourceString("Header_Visible")); - sortIndicatorButton = new Button (otherGroup, SWT.CHECK); - sortIndicatorButton.setText (ControlExample.getResourceString("Sort_Indicator")); - moveableColumns = new Button (otherGroup, SWT.CHECK); - moveableColumns.setText (ControlExample.getResourceString("Moveable_Columns")); - resizableColumns = new Button (otherGroup, SWT.CHECK); - resizableColumns.setText (ControlExample.getResourceString("Resizable_Columns")); - headerImagesButton = new Button (otherGroup, SWT.CHECK); - headerImagesButton.setText (ControlExample.getResourceString("Header_Images")); - subImagesButton = new Button (otherGroup, SWT.CHECK); - subImagesButton.setText (ControlExample.getResourceString("Sub_Images")); - - /* Add the listeners */ - linesVisibleButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetLinesVisible (); - } - }); - multipleColumns.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - recreateExampleWidgets (); - } - }); - headerVisibleButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetHeaderVisible (); - } - }); - sortIndicatorButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetSortIndicator (); - } - }); - moveableColumns.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setColumnsMoveable (); - } - }); - resizableColumns.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setColumnsResizable (); - } - }); - headerImagesButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - recreateExampleWidgets (); - } - }); - subImagesButton.addSelectionListener (new 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, SWT.NONE); - tableGroup.setLayout (new GridLayout ()); - tableGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - tableGroup.setText ("Table"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - /* Compute the widget style */ - int style = getDefaultStyle(); - if (singleButton.getSelection ()) style |= SWT.SINGLE; - if (multiButton.getSelection ()) style |= SWT.MULTI; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (noScrollButton.getSelection ()) style |= SWT.NO_SCROLL; - if (checkButton.getSelection ()) style |= SWT.CHECK; - if (fullSelectionButton.getSelection ()) style |= SWT.FULL_SELECTION; - if (hideSelectionButton.getSelection ()) style |= SWT.HIDE_SELECTION; - if (borderButton.getSelection ()) style |= SWT.BORDER; - - /* Create the table widget */ - table1 = new Table (tableGroup, style); - - /* Fill the table with data */ - boolean multiColumn = multipleColumns.getSelection(); - if (multiColumn) { - for (int i = 0; i < columnTitles.length; i++) { - TableColumn tableColumn = new TableColumn(table1, SWT.NONE); - tableColumn.setText(columnTitles[i]); - tableColumn.setToolTipText(ControlExample.getResourceString("Tooltip", new String [] {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, SWT.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") + i); - } - packColumns(); - } - - void setItemText(TableItem item, int i, String 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, SWT.PUSH); - packColumnsButton.setText (ControlExample.getResourceString("Pack_Columns")); - packColumnsButton.addSelectionListener(new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - packColumns (); - setExampleWidgetSize (); - } - }); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup () { - super.createStyleGroup (); - - /* Create the extra widgets */ - noScrollButton = new Button (styleGroup, SWT.CHECK); - noScrollButton.setText ("SWT.NO_SCROLL"); - checkButton = new Button (styleGroup, SWT.CHECK); - checkButton.setText ("SWT.CHECK"); - fullSelectionButton = new Button (styleGroup, SWT.CHECK); - fullSelectionButton.setText ("SWT.FULL_SELECTION"); - hideSelectionButton = new Button (styleGroup, SWT.CHECK); - hideSelectionButton.setText ("SWT.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 new Widget [] {table1}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"ColumnOrder", "ItemCount", "Selection", "SelectionIndex", "ToolTipText", "TopIndex"}; - } - - String setMethodName(String methodRoot) { - /* Override to handle special case of int getSelectionIndex()/setSelection(int) */ - return (methodRoot.equals("SelectionIndex")) ? "setSelection" : "set" + methodRoot; - } - - void packColumns () { - int columnCount = table1.getColumnCount(); - for (int i = 0; i < columnCount; i++) { - TableColumn tableColumn = table1.getColumn(i); - tableColumn.pack(); - } - } - - Object[] parameterForType(String typeName, String value, Widget widget) { - if (value.equals("")) return new Object[] {new TableItem[0]}; // bug in Table? - if (typeName.equals("org.eclipse.swt.widgets.TableItem")) { - TableItem item = findItem(value, ((Table) widget).getItems()); - if (item != null) return new Object[] {item}; - } - if (typeName.equals("[Lorg.eclipse.swt.widgets.TableItem;")) { - String[] 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(String value, TableItem[] items) { - for (int i = 0; i < items.length; i++) { - TableItem item = items[i]; - if (item.getText().equals(value)) return item; - } - return null; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 != null) oldColor.dispose(); - oldColor = itemBackgroundColor; - itemBackgroundColor = null; - setItemBackground (); - if (oldColor != null) oldColor.dispose(); - Font oldFont = font; - itemFont = null; - setItemFont (); - if (oldFont != null) oldFont.dispose(); - oldColor = cellForegroundColor; - cellForegroundColor = null; - setCellForeground (); - if (oldColor != null) oldColor.dispose(); - oldColor = cellBackgroundColor; - cellBackgroundColor = null; - setCellBackground (); - if (oldColor != null) oldColor.dispose(); - oldFont = font; - cellFont = null; - setCellFont (); - if (oldFont != 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 == null) color = table1.getItem (0).getBackground (1); - TableItem item = colorAndFontTable.getItem(CELL_BACKGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = table1.getItem (0).getForeground (1); - TableItem item = colorAndFontTable.getItem(CELL_FOREGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) ft = table1.getItem (0).getFont (1); - TableItem item = colorAndFontTable.getItem(CELL_FONT); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = table1.getItem (0).getBackground (); - TableItem item = colorAndFontTable.getItem(ITEM_BACKGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = table1.getItem (0).getForeground (); - TableItem item = colorAndFontTable.getItem(ITEM_FOREGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) ft = table1.getItem (0).getFont (); - TableItem item = colorAndFontTable.getItem(ITEM_FONT); - Image oldImage = item.getImage(); - if (oldImage != null) oldImage.dispose(); - item.setImage (fontImage(ft)); - item.setFont(ft); - colorAndFontTable.layout (); - } - - /** - * Sets the moveable columns state of the "Example" widgets. - */ - void setColumnsMoveable () { - boolean 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 () { - boolean 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 (); - noScrollButton.setSelection ((table1.getStyle () & SWT.NO_SCROLL) != 0); - checkButton.setSelection ((table1.getStyle () & SWT.CHECK) != 0); - fullSelectionButton.setSelection ((table1.getStyle () & SWT.FULL_SELECTION) != 0); - hideSelectionButton.setSelection ((table1.getStyle () & SWT.HIDE_SELECTION) != 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 () { - TableColumn [] columns = table1.getColumns(); - if (sortIndicatorButton.getSelection ()) { - /* Reset to known state: 'down' on column 0. */ - table1.setSortDirection (SWT.DOWN); - for (int i = 0; i < columns.length; i++) { - TableColumn column = columns[i]; - if (i == 0) table1.setSortColumn(column); - SelectionListener listener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - int sortDirection = SWT.DOWN; - if (e.widget == table1.getSortColumn()) { - /* If the sort column hasn't changed, cycle down -> up -> none. */ - switch (table1.getSortDirection ()) { - case SWT.DOWN: sortDirection = SWT.UP; break; - case SWT.UP: sortDirection = SWT.NONE; break; - } - } else { - table1.setSortColumn((TableColumn)e.widget); - } - table1.setSortDirection (sortDirection); - } - }; - column.addSelectionListener(listener); - column.setData("SortListener", listener); //$NON-NLS-1$ - } - } else { - table1.setSortDirection (SWT.NONE); - for (int j = 0; j < columns.length; j++) { - SelectionListener listener = (SelectionListener)columns[j].getData("SortListener"); //$NON-NLS-1$ - if (listener != null) columns[j].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, SWT.PUSH); - item.setText("getItem(Point) on mouse coordinates"); - menuMouseCoords = table1.toControl(new Point(event.x, event.y)); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - eventConsole.append ("getItem(Point(" + menuMouseCoords + ")) returned: " + table1.getItem(menuMouseCoords)); - eventConsole.append ("\n"); - }; - }); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TextTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TextTab.java deleted file mode 100755 index dd49c1b3fe..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TextTab.java +++ /dev/null @@ -1,181 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; - -class TextTab extends 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. - */ - TextTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the text widget */ - textGroup = new Group (exampleGroup, SWT.NONE); - textGroup.setLayout (new GridLayout ()); - textGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - textGroup.setText ("Text"); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (singleButton.getSelection ()) style |= SWT.SINGLE; - if (multiButton.getSelection ()) style |= SWT.MULTI; - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (wrapButton.getSelection ()) style |= SWT.WRAP; - if (readOnlyButton.getSelection ()) style |= SWT.READ_ONLY; - if (passwordButton.getSelection ()) style |= SWT.PASSWORD; - if (searchButton.getSelection ()) style |= SWT.SEARCH; - if (cancelButton.getSelection ()) style |= SWT.CANCEL; - if (borderButton.getSelection ()) style |= SWT.BORDER; - if (leftButton.getSelection ()) style |= SWT.LEFT; - if (centerButton.getSelection ()) style |= SWT.CENTER; - if (rightButton.getSelection ()) style |= SWT.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, SWT.CHECK); - wrapButton.setText ("SWT.WRAP"); - readOnlyButton = new Button (styleGroup, SWT.CHECK); - readOnlyButton.setText ("SWT.READ_ONLY"); - passwordButton = new Button (styleGroup, SWT.CHECK); - passwordButton.setText ("SWT.PASSWORD"); - searchButton = new Button (styleGroup, SWT.CHECK); - searchButton.setText ("SWT.SEARCH"); - cancelButton = new Button (styleGroup, SWT.CHECK); - cancelButton.setText ("SWT.CANCEL"); - - Composite alignmentGroup = new Composite (styleGroup, SWT.NONE); - GridLayout layout = new GridLayout (); - layout.marginWidth = layout.marginHeight = 0; - alignmentGroup.setLayout (layout); - alignmentGroup.setLayoutData (new GridData (GridData.FILL_BOTH)); - leftButton = new Button (alignmentGroup, SWT.RADIO); - leftButton.setText ("SWT.LEFT"); - centerButton = new Button (alignmentGroup, SWT.RADIO); - centerButton.setText ("SWT.CENTER"); - rightButton = new Button (alignmentGroup, SWT.RADIO); - rightButton.setText ("SWT.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 ControlAdapter() { - public void controlResized(ControlEvent e) { - setExampleWidgetSize (); - } - }); - - return tabFolderPage; - } - - /** - * Gets the "Example" widget children. - */ - Widget [] getExampleWidgets () { - return new Widget [] {text}; - } - - /** - * Returns a list of set/get API method names (without the set/get prefix) - * that can be used to set/get values in the example control(s). - */ - String[] getMethodNames() { - return new String[] {"DoubleClickEnabled", "EchoChar", "Editable", "Orientation", "Selection", "Tabs", "Text", "TextLimit", "ToolTipText", "TopIndex"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "Text"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - wrapButton.setSelection ((text.getStyle () & SWT.WRAP) != 0); - readOnlyButton.setSelection ((text.getStyle () & SWT.READ_ONLY) != 0); - passwordButton.setSelection ((text.getStyle () & SWT.PASSWORD) != 0); - searchButton.setSelection ((text.getStyle () & SWT.SEARCH) != 0); - leftButton.setSelection ((text.getStyle () & SWT.LEFT) != 0); - centerButton.setSelection ((text.getStyle () & SWT.CENTER) != 0); - rightButton.setSelection ((text.getStyle () & SWT.RIGHT) != 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 () & SWT.SEARCH) != 0) { - cancelButton.setSelection ((text.getStyle () & SWT.CANCEL) != 0); - horizontalButton.setSelection (false); - } else { - cancelButton.setSelection (false); - horizontalButton.setSelection ((text.getStyle () & SWT.H_SCROLL) != 0); - } - - passwordButton.setEnabled ((text.getStyle () & SWT.SINGLE) != 0); - searchButton.setEnabled ((text.getStyle () & SWT.SINGLE) != 0); - cancelButton.setEnabled ((text.getStyle () & SWT.SEARCH) != 0); - wrapButton.setEnabled ((text.getStyle () & SWT.MULTI) != 0); - horizontalButton.setEnabled ((text.getStyle () & SWT.MULTI) != 0); - verticalButton.setEnabled ((text.getStyle () & SWT.MULTI) != 0); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ToolBarTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ToolBarTab.java deleted file mode 100755 index 143d126b56..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ToolBarTab.java +++ /dev/null @@ -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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; - -class ToolBarTab extends 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. - */ - ToolBarTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Example" group. - */ - void createExampleGroup () { - super.createExampleGroup (); - - /* Create a group for the image tool bar */ - imageToolBarGroup = new Group (exampleGroup, SWT.NONE); - imageToolBarGroup.setLayout (new GridLayout ()); - imageToolBarGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - imageToolBarGroup.setText (ControlExample.getResourceString("Image_ToolBar")); - - /* Create a group for the text tool bar */ - textToolBarGroup = new Group (exampleGroup, SWT.NONE); - textToolBarGroup.setLayout (new GridLayout ()); - textToolBarGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - textToolBarGroup.setText (ControlExample.getResourceString("Text_ToolBar")); - - /* Create a group for the image and text tool bar */ - imageTextToolBarGroup = new Group (exampleGroup, SWT.NONE); - imageTextToolBarGroup.setLayout (new GridLayout ()); - imageTextToolBarGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 |= SWT.HORIZONTAL; - if (verticalButton.getSelection()) style |= SWT.VERTICAL; - if (flatButton.getSelection()) style |= SWT.FLAT; - if (wrapButton.getSelection()) style |= SWT.WRAP; - if (borderButton.getSelection()) style |= SWT.BORDER; - if (shadowOutButton.getSelection()) style |= SWT.SHADOW_OUT; - if (rightButton.getSelection()) style |= SWT.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, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText("SWT.PUSH"); - item = new ToolItem (imageToolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.PUSH"); - item = new ToolItem (imageToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setToolTipText ("SWT.RADIO"); - item = new ToolItem (imageToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setToolTipText ("SWT.RADIO"); - item = new ToolItem (imageToolBar, SWT.CHECK); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setToolTipText ("SWT.CHECK"); - item = new ToolItem (imageToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.RADIO"); - item = new ToolItem (imageToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setToolTipText ("SWT.RADIO"); - item = new ToolItem (imageToolBar, SWT.SEPARATOR); - item.setToolTipText("SWT.SEPARATOR"); - if (comboChildButton.getSelection ()) { - Combo combo = new Combo (imageToolBar, SWT.NONE); - combo.setItems (new String [] {"250", "500", "750"}); - combo.setText (combo.getItem (0)); - combo.pack (); - item.setWidth (combo.getSize ().x); - item.setControl (combo); - } - item = new ToolItem (imageToolBar, SWT.DROP_DOWN); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setToolTipText ("SWT.DROP_DOWN"); - item.addSelectionListener(new DropDownSelectionListener()); - - /* Create the text tool bar */ - textToolBar = new ToolBar (textToolBarGroup, style); - item = new ToolItem (textToolBar, SWT.PUSH); - item.setText (ControlExample.getResourceString("Push")); - item.setToolTipText("SWT.PUSH"); - item = new ToolItem (textToolBar, SWT.PUSH); - item.setText (ControlExample.getResourceString("Push")); - item.setToolTipText("SWT.PUSH"); - item = new ToolItem (textToolBar, SWT.RADIO); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (textToolBar, SWT.RADIO); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (textToolBar, SWT.CHECK); - item.setText (ControlExample.getResourceString("Check")); - item.setToolTipText("SWT.CHECK"); - item = new ToolItem (textToolBar, SWT.RADIO); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (textToolBar, SWT.RADIO); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (textToolBar, SWT.SEPARATOR); - item.setToolTipText("SWT.SEPARATOR"); - if (comboChildButton.getSelection ()) { - Combo combo = new Combo (textToolBar, SWT.NONE); - combo.setItems (new String [] {"250", "500", "750"}); - combo.setText (combo.getItem (0)); - combo.pack (); - item.setWidth (combo.getSize ().x); - item.setControl (combo); - } - item = new ToolItem (textToolBar, SWT.DROP_DOWN); - item.setText (ControlExample.getResourceString("Drop_Down")); - item.setToolTipText("SWT.DROP_DOWN"); - item.addSelectionListener(new DropDownSelectionListener()); - - /* Create the image and text tool bar */ - imageTextToolBar = new ToolBar (imageTextToolBarGroup, style); - item = new ToolItem (imageTextToolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setText (ControlExample.getResourceString("Push")); - item.setToolTipText("SWT.PUSH"); - item = new ToolItem (imageTextToolBar, SWT.PUSH); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setText (ControlExample.getResourceString("Push")); - item.setToolTipText("SWT.PUSH"); - item = new ToolItem (imageTextToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (imageTextToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciOpenFolder]); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (imageTextToolBar, SWT.CHECK); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setText (ControlExample.getResourceString("Check")); - item.setToolTipText("SWT.CHECK"); - item = new ToolItem (imageTextToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (imageTextToolBar, SWT.RADIO); - item.setImage (instance.images[ControlExample.ciClosedFolder]); - item.setText (ControlExample.getResourceString("Radio")); - item.setToolTipText("SWT.RADIO"); - item = new ToolItem (imageTextToolBar, SWT.SEPARATOR); - item.setToolTipText("SWT.SEPARATOR"); - if (comboChildButton.getSelection ()) { - Combo combo = new Combo (imageTextToolBar, SWT.NONE); - combo.setItems (new String [] {"250", "500", "750"}); - combo.setText (combo.getItem (0)); - combo.pack (); - item.setWidth (combo.getSize ().x); - item.setControl (combo); - } - item = new ToolItem (imageTextToolBar, SWT.DROP_DOWN); - item.setImage (instance.images[ControlExample.ciTarget]); - item.setText (ControlExample.getResourceString("Drop_Down")); - item.setToolTipText("SWT.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, SWT.CHECK); - comboChildButton.setText (ControlExample.getResourceString("Combo_child")); - - /* Add the listeners */ - comboChildButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - recreateExampleWidgets (); - } - }); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup(); - - /* Create the extra widgets */ - horizontalButton = new Button (styleGroup, SWT.RADIO); - horizontalButton.setText ("SWT.HORIZONTAL"); - verticalButton = new Button (styleGroup, SWT.RADIO); - verticalButton.setText ("SWT.VERTICAL"); - flatButton = new Button (styleGroup, SWT.CHECK); - flatButton.setText ("SWT.FLAT"); - shadowOutButton = new Button (styleGroup, SWT.CHECK); - shadowOutButton.setText ("SWT.SHADOW_OUT"); - wrapButton = new Button (styleGroup, SWT.CHECK); - wrapButton.setText ("SWT.WRAP"); - rightButton = new Button (styleGroup, SWT.CHECK); - rightButton.setText ("SWT.RIGHT"); - borderButton = new Button (styleGroup, SWT.CHECK); - borderButton.setText ("SWT.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 new Widget [] {imageToolBar, textToolBar, imageTextToolBar}; - } - - /** - * Gets the short text for the tab folder item. - */ - String getShortTabText() { - return "TB"; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "ToolBar"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - super.setExampleWidgetState (); - horizontalButton.setSelection ((imageToolBar.getStyle () & SWT.HORIZONTAL) != 0); - verticalButton.setSelection ((imageToolBar.getStyle () & SWT.VERTICAL) != 0); - flatButton.setSelection ((imageToolBar.getStyle () & SWT.FLAT) != 0); - wrapButton.setSelection ((imageToolBar.getStyle () & SWT.WRAP) != 0); - shadowOutButton.setSelection ((imageToolBar.getStyle () & SWT.SHADOW_OUT) != 0); - borderButton.setSelection ((imageToolBar.getStyle () & SWT.BORDER) != 0); - rightButton.setSelection ((imageToolBar.getStyle () & SWT.RIGHT) != 0); - } - - /** - * Listens to widgetSelected() events on SWT.DROP_DOWN type ToolItems - * and opens/closes a menu when appropriate. - */ - class DropDownSelectionListener extends SelectionAdapter { - private Menu menu = null; - - public void widgetSelected(SelectionEvent event) { - // Create the menu if it has not already been created - if (menu == null) { - // Lazy create the menu. - ToolBar toolbar = ((ToolItem) event.widget).getParent(); - int style = toolbar.getStyle() & (SWT.RIGHT_TO_LEFT | SWT.LEFT_TO_RIGHT); - menu = new Menu(shell, style | SWT.POP_UP); - for (int i = 0; i < 9; ++i) { - final String text = ControlExample.getResourceString("DropDownData_" + i); - if (text.length() != 0) { - MenuItem menuItem = new MenuItem(menu, SWT.NONE); - menuItem.setText(text); - } else { - new MenuItem(menu, SWT.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 == SWT.ARROW) { - /* - * The drop down arrow was selected. - */ - // Position the menu below and vertically aligned with the the drop down tool button. - final ToolItem toolItem = (ToolItem) event.widget; - final ToolBar toolBar = toolItem.getParent(); - - Point point = toolBar.toDisplay(new Point(event.x, event.y)); - menu.setLocation(point.x, point.y); - menu.setVisible(true); - } - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ToolTipTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ToolTipTab.java deleted file mode 100644 index 6a02a828e2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ToolTipTab.java +++ /dev/null @@ -1,249 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; - -class ToolTipTab extends 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. - */ - ToolTipTab(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, SWT.NONE); - toolTipGroup.setLayout (new GridLayout ()); - toolTipGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - toolTipGroup.setText ("ToolTip"); - visibleButton = new Button(toolTipGroup, SWT.CHECK); - visibleButton.setText(ControlExample.getResourceString("Visible")); - visibleButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleWidgetVisibility (); - } - }); - } - - /** - * Creates the "Example" widgets. - */ - void createExampleWidgets () { - - /* Compute the widget style */ - int style = getDefaultStyle(); - if (balloonButton.getSelection ()) style |= SWT.BALLOON; - if (iconErrorButton.getSelection ()) style |= SWT.ICON_ERROR; - if (iconInformationButton.getSelection ()) style |= SWT.ICON_INFORMATION; - if (iconWarningButton.getSelection ()) style |= SWT.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 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, SWT.CHECK); - balloonButton.setText ("SWT.BALLOON"); - iconErrorButton = new Button (styleGroup, SWT.RADIO); - iconErrorButton.setText("SWT.ICON_ERROR"); - iconInformationButton = new Button (styleGroup, SWT.RADIO); - iconInformationButton.setText("SWT.ICON_INFORMATION"); - iconWarningButton = new Button (styleGroup, SWT.RADIO); - iconWarningButton.setText("SWT.ICON_WARNING"); - noIconButton = new Button (styleGroup, SWT.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, SWT.NONE); - otherGroup.setLayout (new GridLayout ()); - otherGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - otherGroup.setText (ControlExample.getResourceString("Other")); - - /* Create the controls */ - autoHideButton = new Button(otherGroup, SWT.CHECK); - autoHideButton.setText(ControlExample.getResourceString("AutoHide")); - showInTrayButton = new Button(otherGroup, SWT.CHECK); - showInTrayButton.setText(ControlExample.getResourceString("Show_In_Tray")); - tray = display.getSystemTray(); - showInTrayButton.setEnabled(tray != null); - - /* Add the listeners */ - autoHideButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setExampleWidgetAutoHide (); - } - }); - showInTrayButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - showExampleWidgetInTray (); - } - }); - shell.addDisposeListener(new 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 new 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). - */ - String[] getMethodNames() { - return new String[] {"Message", "Text"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "ToolTip"; - } - - /** - * Sets the state of the "Example" widgets. - */ - void setExampleWidgetState () { - showExampleWidgetInTray (); - setExampleWidgetAutoHide (); - super.setExampleWidgetState (); - balloonButton.setSelection ((toolTip1.getStyle () & SWT.BALLOON) != 0); - iconErrorButton.setSelection ((toolTip1.getStyle () & SWT.ICON_ERROR) != 0); - iconInformationButton.setSelection ((toolTip1.getStyle () & SWT.ICON_INFORMATION) != 0); - iconWarningButton.setSelection ((toolTip1.getStyle () & SWT.ICON_WARNING) != 0); - noIconButton.setSelection ((toolTip1.getStyle () & (SWT.ICON_ERROR | SWT.ICON_INFORMATION | SWT.ICON_WARNING)) == 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 == null) { - trayItem = new TrayItem(tray, SWT.NONE); - trayItem.setImage(instance.images[ControlExample.ciTarget]); - } - } - - void disposeTrayItem() { - if (trayItem != null) { - trayItem.setToolTip(null); - trayItem.dispose(); - trayItem = null; - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TreeTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TreeTab.java deleted file mode 100755 index 8e473c8f6a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TreeTab.java +++ /dev/null @@ -1,782 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.controlexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.events.*; - -class TreeTab extends 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 noScrollButton, 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 final int ITEM_FOREGROUND_COLOR = 3; - static final int ITEM_BACKGROUND_COLOR = 4; - static final int ITEM_FONT = 5; - static final int CELL_FOREGROUND_COLOR = 6; - static final int CELL_BACKGROUND_COLOR = 7; - static final int CELL_FONT = 8; - Color itemForegroundColor, itemBackgroundColor, cellForegroundColor, cellBackgroundColor; - Font itemFont, cellFont; - - static String [] columnTitles = {ControlExample.getResourceString("TableTitle_0"), - ControlExample.getResourceString("TableTitle_1"), - ControlExample.getResourceString("TableTitle_2"), - ControlExample.getResourceString("TableTitle_3")}; - - static String[][] tableData = { - { ControlExample.getResourceString("TableLine0_0"), - ControlExample.getResourceString("TableLine0_1"), - ControlExample.getResourceString("TableLine0_2"), - ControlExample.getResourceString("TableLine0_3") }, - { ControlExample.getResourceString("TableLine1_0"), - ControlExample.getResourceString("TableLine1_1"), - ControlExample.getResourceString("TableLine1_2"), - ControlExample.getResourceString("TableLine1_3") }, - { ControlExample.getResourceString("TableLine2_0"), - ControlExample.getResourceString("TableLine2_1"), - ControlExample.getResourceString("TableLine2_2"), - ControlExample.getResourceString("TableLine2_3") } }; - - Point menuMouseCoords; - - /** - * Creates the Tab within a given instance of ControlExample. - */ - TreeTab(ControlExample instance) { - super(instance); - } - - /** - * Creates the "Colors and Fonts" group. - */ - void createColorAndFontGroup () { - super.createColorAndFontGroup(); - - TableItem item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Foreground_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Background_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Item_Font")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Cell_Foreground_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Cell_Background_Color")); - item = new TableItem(colorAndFontTable, SWT.None); - item.setText(ControlExample.getResourceString ("Cell_Font")); - - shell.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent event) { - if (itemBackgroundColor != null) itemBackgroundColor.dispose(); - if (itemForegroundColor != null) itemForegroundColor.dispose(); - if (itemFont != null) itemFont.dispose(); - if (cellBackgroundColor != null) cellBackgroundColor.dispose(); - if (cellForegroundColor != null) cellForegroundColor.dispose(); - if (cellFont != 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 == null) oldColor = textNode1.getForeground (); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = itemForegroundColor; - itemForegroundColor = new Color (display, rgb); - setItemForeground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case ITEM_BACKGROUND_COLOR: { - Color oldColor = itemBackgroundColor; - if (oldColor == null) oldColor = textNode1.getBackground (); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = itemBackgroundColor; - itemBackgroundColor = new Color (display, rgb); - setItemBackground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case ITEM_FONT: { - Font oldFont = itemFont; - if (oldFont == null) oldFont = textNode1.getFont (); - fontDialog.setFontList(oldFont.getFontData()); - FontData fontData = fontDialog.open (); - if (fontData == null) return; - oldFont = itemFont; - itemFont = new Font (display, fontData); - setItemFont (); - setExampleWidgetSize (); - if (oldFont != null) oldFont.dispose (); - } - break; - case CELL_FOREGROUND_COLOR: { - Color oldColor = cellForegroundColor; - if (oldColor == null) oldColor = textNode1.getForeground (1); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = cellForegroundColor; - cellForegroundColor = new Color (display, rgb); - setCellForeground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case CELL_BACKGROUND_COLOR: { - Color oldColor = cellBackgroundColor; - if (oldColor == null) oldColor = textNode1.getBackground (1); - colorDialog.setRGB(oldColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb == null) return; - oldColor = cellBackgroundColor; - cellBackgroundColor = new Color (display, rgb); - setCellBackground (); - if (oldColor != null) oldColor.dispose (); - } - break; - case CELL_FONT: { - Font oldFont = cellFont; - if (oldFont == null) oldFont = textNode1.getFont (1); - fontDialog.setFontList(oldFont.getFontData()); - FontData fontData = fontDialog.open (); - if (fontData == null) return; - oldFont = cellFont; - cellFont = new Font (display, fontData); - setCellFont (); - setExampleWidgetSize (); - if (oldFont != 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, SWT.CHECK); - linesVisibleButton.setText (ControlExample.getResourceString("Lines_Visible")); - multipleColumns = new Button (otherGroup, SWT.CHECK); - multipleColumns.setText (ControlExample.getResourceString("Multiple_Columns")); - headerVisibleButton = new Button (otherGroup, SWT.CHECK); - headerVisibleButton.setText (ControlExample.getResourceString("Header_Visible")); - sortIndicatorButton = new Button (otherGroup, SWT.CHECK); - sortIndicatorButton.setText (ControlExample.getResourceString("Sort_Indicator")); - moveableColumns = new Button (otherGroup, SWT.CHECK); - moveableColumns.setText (ControlExample.getResourceString("Moveable_Columns")); - resizableColumns = new Button (otherGroup, SWT.CHECK); - resizableColumns.setText (ControlExample.getResourceString("Resizable_Columns")); - headerImagesButton = new Button (otherGroup, SWT.CHECK); - headerImagesButton.setText (ControlExample.getResourceString("Header_Images")); - subImagesButton = new Button (otherGroup, SWT.CHECK); - subImagesButton.setText (ControlExample.getResourceString("Sub_Images")); - - /* Add the listeners */ - linesVisibleButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetLinesVisible (); - } - }); - multipleColumns.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - recreateExampleWidgets (); - } - }); - headerVisibleButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetHeaderVisible (); - } - }); - sortIndicatorButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setWidgetSortIndicator (); - } - }); - moveableColumns.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setColumnsMoveable (); - } - }); - resizableColumns.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - setColumnsResizable (); - } - }); - headerImagesButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - recreateExampleWidgets (); - } - }); - subImagesButton.addSelectionListener (new 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, SWT.NONE); - treeGroup.setLayout (new GridLayout ()); - treeGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - treeGroup.setText ("Tree"); - - /* Create a group for the image tree */ - imageTreeGroup = new Group (exampleGroup, SWT.NONE); - imageTreeGroup.setLayout (new GridLayout ()); - imageTreeGroup.setLayoutData (new GridData (SWT.FILL, SWT.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 |= SWT.SINGLE; - if (multiButton.getSelection()) style |= SWT.MULTI; - if (horizontalButton.getSelection ()) style |= SWT.H_SCROLL; - if (verticalButton.getSelection ()) style |= SWT.V_SCROLL; - if (noScrollButton.getSelection()) style |= SWT.NO_SCROLL; - if (checkButton.getSelection()) style |= SWT.CHECK; - if (fullSelectionButton.getSelection ()) style |= SWT.FULL_SELECTION; - if (borderButton.getSelection()) style |= SWT.BORDER; - - /* Create the text tree */ - tree1 = new Tree (treeGroup, style); - boolean multiColumn = multipleColumns.getSelection(); - if (multiColumn) { - for (int i = 0; i < columnTitles.length; i++) { - TreeColumn treeColumn = new TreeColumn(tree1, SWT.NONE); - treeColumn.setText(columnTitles[i]); - treeColumn.setToolTipText(ControlExample.getResourceString("Tooltip", new String [] {columnTitles[i]})); - } - tree1.setSortColumn(tree1.getColumn(0)); - } - for (int i = 0; i < 4; i++) { - TreeItem item = new TreeItem (tree1, SWT.NONE); - setItemText(item, i, ControlExample.getResourceString("Node_" + (i + 1))); - if (i < 3) { - TreeItem subitem = new TreeItem (item, SWT.NONE); - setItemText(subitem, i, ControlExample.getResourceString("Node_" + (i + 1) + "_1")); - } - } - TreeItem treeRoots[] = tree1.getItems (); - TreeItem item = new TreeItem (treeRoots[1], SWT.NONE); - setItemText(item, 1, ControlExample.getResourceString("Node_2_2")); - item = new TreeItem (item, SWT.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, SWT.NONE); - treeColumn.setText(columnTitles[i]); - treeColumn.setToolTipText(ControlExample.getResourceString("Tooltip", new String [] {columnTitles[i]})); - if (headerImagesButton.getSelection()) treeColumn.setImage(instance.images [i % 3]); - } - } - for (int i = 0; i < 4; i++) { - item = new TreeItem (tree2, SWT.NONE); - setItemText(item, i, ControlExample.getResourceString("Node_" + (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, SWT.NONE); - setItemText(subitem, i, ControlExample.getResourceString("Node_" + (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], SWT.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, SWT.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, String 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, SWT.PUSH); - packColumnsButton.setText (ControlExample.getResourceString("Pack_Columns")); - packColumnsButton.addSelectionListener(new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - packColumns (tree1); - packColumns (tree2); - setExampleWidgetSize (); - } - }); - } - - /** - * Creates the "Style" group. - */ - void createStyleGroup() { - super.createStyleGroup(); - - /* Create the extra widgets */ - noScrollButton = new Button (styleGroup, SWT.CHECK); - noScrollButton.setText ("SWT.NO_SCROLL"); - checkButton = new Button (styleGroup, SWT.CHECK); - checkButton.setText ("SWT.CHECK"); - fullSelectionButton = new Button (styleGroup, SWT.CHECK); - fullSelectionButton.setText ("SWT.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 new 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). - */ - String[] getMethodNames() { - return new String[] {"ColumnOrder", "Selection", "ToolTipText", "TopItem"}; - } - - Object[] parameterForType(String typeName, String value, Widget widget) { - if (typeName.equals("org.eclipse.swt.widgets.TreeItem")) { - TreeItem item = findItem(value, ((Tree) widget).getItems()); - if (item != null) return new Object[] {item}; - } - if (typeName.equals("[Lorg.eclipse.swt.widgets.TreeItem;")) { - String[] 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 == null) break; - items[i] = item; - } - return new Object[] {items}; - } - return super.parameterForType(typeName, value, widget); - } - - TreeItem findItem(String value, TreeItem[] items) { - for (int i = 0; i < items.length; i++) { - TreeItem item = items[i]; - if (item.getText().equals(value)) return item; - item = findItem(value, item.getItems()); - if (item != null) return item; - } - return null; - } - - /** - * Gets the text for the tab folder item. - */ - String 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 () { - boolean 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 () { - boolean 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 != null) oldColor.dispose(); - oldColor = itemBackgroundColor; - itemBackgroundColor = null; - setItemBackground (); - if (oldColor != null) oldColor.dispose(); - Font oldFont = font; - itemFont = null; - setItemFont (); - if (oldFont != null) oldFont.dispose(); - oldColor = cellForegroundColor; - cellForegroundColor = null; - setCellForeground (); - if (oldColor != null) oldColor.dispose(); - oldColor = cellBackgroundColor; - cellBackgroundColor = null; - setCellBackground (); - if (oldColor != null) oldColor.dispose(); - oldFont = font; - cellFont = null; - setCellFont (); - if (oldFont != 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 (); - noScrollButton.setSelection ((tree1.getStyle () & SWT.NO_SCROLL) != 0); - checkButton.setSelection ((tree1.getStyle () & SWT.CHECK) != 0); - fullSelectionButton.setSelection ((tree1.getStyle () & SWT.FULL_SELECTION) != 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 == null) color = textNode1.getBackground (1); - TableItem item = colorAndFontTable.getItem(CELL_BACKGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = textNode1.getForeground (1); - TableItem item = colorAndFontTable.getItem(CELL_FOREGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) ft = textNode1.getFont (1); - TableItem item = colorAndFontTable.getItem(CELL_FONT); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = textNode1.getBackground (); - TableItem item = colorAndFontTable.getItem(ITEM_BACKGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) color = textNode1.getForeground (); - TableItem item = colorAndFontTable.getItem(ITEM_FOREGROUND_COLOR); - Image oldImage = item.getImage(); - if (oldImage != 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 == null) ft = textNode1.getFont (); - TableItem item = colorAndFontTable.getItem(ITEM_FONT); - Image oldImage = item.getImage(); - if (oldImage != 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 (final Tree tree) { - /* Reset to known state: 'down' on column 0. */ - tree.setSortDirection (SWT.DOWN); - TreeColumn [] columns = tree.getColumns(); - for (int i = 0; i < columns.length; i++) { - TreeColumn column = columns[i]; - if (i == 0) tree.setSortColumn(column); - SelectionListener listener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - int sortDirection = SWT.DOWN; - if (e.widget == tree.getSortColumn()) { - /* If the sort column hasn't changed, cycle down -> up -> none. */ - switch (tree.getSortDirection ()) { - case SWT.DOWN: sortDirection = SWT.UP; break; - case SWT.UP: sortDirection = SWT.NONE; break; - } - } else { - tree.setSortColumn((TreeColumn)e.widget); - } - tree.setSortDirection (sortDirection); - } - }; - column.addSelectionListener(listener); - column.setData("SortListener", listener); //$NON-NLS-1$ - } - } - - void resetSortState (final Tree tree) { - tree.setSortDirection (SWT.NONE); - TreeColumn [] columns = tree.getColumns(); - for (int i = 0; i < columns.length; i++) { - SelectionListener listener = (SelectionListener)columns[i].getData("SortListener"); //$NON-NLS-1$ - if (listener != 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, SWT.PUSH); - item.setText("getItem(Point) on mouse coordinates"); - final Tree t = (Tree) event.widget; - menuMouseCoords = t.toControl(new Point(event.x, event.y)); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - eventConsole.append ("getItem(Point(" + menuMouseCoords + ")) returned: " + t.getItem(menuMouseCoords)); - eventConsole.append ("\n"); - }; - }); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/backgroundImage.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/backgroundImage.png Binary files differdeleted file mode 100644 index 0632ad89b0..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/backgroundImage.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/bold.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/bold.bmp Binary files differdeleted file mode 100644 index 15136cbf7c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/bold.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/bold_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/bold_mask.bmp Binary files differdeleted file mode 100644 index 7863429f50..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/bold_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/browser-content.html b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/browser-content.html deleted file mode 100644 index 248b93ee1c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/browser-content.html +++ /dev/null @@ -1,33 +0,0 @@ -<html> -<head> -<title>SWT Browser</title> -</head> - -<h3>About SWT Browser</h3> -<p>You are looking at HTML content in a <b>Browser</b> widget. -<ul> -<li>For a definition of the Browser widget, see: -<a href="http://www.eclipse.org/swt/faq.php#whatisbrowser">http://www.eclipse.org/swt/faq.php#whatisbrowser</a></li> -<li>For a list of the platforms that Browser supports, see: -<a href="http://www.eclipse.org/swt/faq.php#browserplatforms">http://www.eclipse.org/swt/faq.php#browserplatforms</a></li> -<li>For more information on the SWT.MOZILLA Browser style, see: -<a href="http://www.eclipse.org/swt/faq.php#howusemozilla">http://www.eclipse.org/swt/faq.php#howusemozilla</a></li> -<li>For more examples that use a Browser widget, see BrowserExample, BrowserDemo, and WebBrowser: -<a href="http://www.eclipse.org/swt/examples.php">http://www.eclipse.org/swt/examples.php</a></li> -</ul></p> - -<h3>About SWT</h3> -<p>For more information on SWT, including the Widget Gallery, Snippets, Examples, FAQ, Tools, Documentation -and more, check out <a href="http://www.eclipse.org/swt/">http://www.eclipse.org/swt</a>.</p> - -<h3>Eclipse Downloads Page</h3> -<p>To download the latest Integration Build of eclipse, go to: -<a href="http://download.eclipse.org/eclipse/downloads/">http://download.eclipse.org/eclipse/downloads</a>.</p> - -<h3>Bug Reports and Feature Requests</h3> -<p>To report an SWT bug or request an SWT feature, go to: -<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Platform">https://bugs.eclipse.org/bugs</a> -and select <b>Component: SWT</b>.</p> - -</body> -</html> diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/closedFolder.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/closedFolder.gif Binary files differdeleted file mode 100644 index 6660d0b11a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/closedFolder.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/italic.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/italic.bmp Binary files differdeleted file mode 100644 index 82071f6bdd..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/italic.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/italic_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/italic_mask.bmp Binary files differdeleted file mode 100644 index caf2354d48..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/italic_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/openFolder.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/openFolder.gif Binary files differdeleted file mode 100644 index fc9943f111..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/openFolder.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/parentBackgroundImage.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/parentBackgroundImage.png Binary files differdeleted file mode 100644 index 08f55c79e9..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/parentBackgroundImage.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/red.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/red.bmp Binary files differdeleted file mode 100644 index 9a563ff34a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/red.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/red_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/red_mask.bmp Binary files differdeleted file mode 100644 index 1359c081de..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/red_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/strikeout.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/strikeout.bmp Binary files differdeleted file mode 100644 index ac21b3c4bc..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/strikeout.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/strikeout_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/strikeout_mask.bmp Binary files differdeleted file mode 100644 index 98b48fb8aa..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/strikeout_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/target.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/target.gif Binary files differdeleted file mode 100644 index 9807ae648d..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/target.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/underline.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/underline.bmp Binary files differdeleted file mode 100644 index 52e28e2152..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/underline.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/underline_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/underline_mask.bmp Binary files differdeleted file mode 100644 index 2615d8b5eb..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/underline_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/yellow.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/yellow.bmp Binary files differdeleted file mode 100644 index 4da9c1de3f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/yellow.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/yellow_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/yellow_mask.bmp Binary files differdeleted file mode 100644 index 1359c081de..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/yellow_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/dnd/DNDExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/dnd/DNDExample.java deleted file mode 100644 index e701e9edc1..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/dnd/DNDExample.java +++ /dev/null @@ -1,1438 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.dnd; - - -import java.net.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.dnd.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -public class DNDExample { - - private int dragOperation = 0; - private Transfer[] dragTypes = new Transfer[0]; - private Control dragControl; - private int dragControlType = 0; - private DragSource dragSource; - private String dragDataText; - private String dragDataRTF; - private String dragDataHTML; - private String dragDataURL; - private String[] dragDataFiles; - private List fileList; - private boolean dragEnabled = false; - - private int dropOperation = 0; - private int dropFeedback = 0; - private int dropDefaultOperation = 0; - private Transfer[] dropTypes = new Transfer[0]; - private DropTarget dropTarget; - private Control dropControl; - private int dropControlType = 0; - private Composite defaultParent; - private boolean dropEnabled = false; - - private Text dragConsole; - private boolean dragEventDetail = false; - private Text dropConsole; - private boolean dropEventDetail = false; - - private Image itemImage; - - private static final int BUTTON_TOGGLE = 0; - private static final int BUTTON_RADIO = 1; - private static final int BUTTON_CHECK = 2; - private static final int CANVAS = 3; - private static final int LABEL = 4; - private static final int LIST = 5; - private static final int TABLE = 6; - private static final int TREE = 7; - private static final int TEXT = 8; - private static final int STYLED_TEXT = 9; - private static final int COMBO = 10; - -public static void main(String[] args) { - Display display = new Display(); - DNDExample example = new DNDExample(); - example.open(display); - display.dispose(); -} - -private void addDragTransfer(Transfer transfer){ - Transfer[] newTypes = new Transfer[dragTypes.length + 1]; - System.arraycopy(dragTypes, 0, newTypes, 0, dragTypes.length); - newTypes[dragTypes.length] = transfer; - dragTypes = newTypes; - if (dragSource != null) { - dragSource.setTransfer(dragTypes); - } -} - -private void addDropTransfer(Transfer transfer){ - Transfer[] newTypes = new Transfer[dropTypes.length + 1]; - System.arraycopy(dropTypes, 0, newTypes, 0, dropTypes.length); - newTypes[dropTypes.length] = transfer; - dropTypes = newTypes; - if (dropTarget != null) { - dropTarget.setTransfer(dropTypes); - } -} - -private void createDragOperations(Composite parent) { - parent.setLayout(new RowLayout(SWT.VERTICAL)); - final Button moveButton = new Button(parent, SWT.CHECK); - moveButton.setText("DND.DROP_MOVE"); - moveButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dragOperation |= DND.DROP_MOVE; - } else { - dragOperation = dragOperation &~DND.DROP_MOVE; - if (dragOperation == 0) { - dragOperation = DND.DROP_MOVE; - moveButton.setSelection(true); - } - } - if (dragEnabled) { - createDragSource(); - } - } - }); - - - Button copyButton = new Button(parent, SWT.CHECK); - copyButton.setText("DND.DROP_COPY"); - copyButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dragOperation |= DND.DROP_COPY; - } else { - dragOperation = dragOperation &~DND.DROP_COPY; - if (dragOperation == 0) { - dragOperation = DND.DROP_MOVE; - moveButton.setSelection(true); - } - } - if (dragEnabled) { - createDragSource(); - } - } - }); - - Button linkButton = new Button(parent, SWT.CHECK); - linkButton.setText("DND.DROP_LINK"); - linkButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dragOperation |= DND.DROP_LINK; - } else { - dragOperation = dragOperation &~DND.DROP_LINK; - if (dragOperation == 0) { - dragOperation = DND.DROP_MOVE; - moveButton.setSelection(true); - } - } - if (dragEnabled) { - createDragSource(); - } - } - }); - - //initialize state - moveButton.setSelection(true); - copyButton.setSelection(true); - linkButton.setSelection(true); - dragOperation |= DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK; -} - -private void createDragSource() { - if (dragSource != null) dragSource.dispose(); - dragSource = new DragSource(dragControl, dragOperation); - dragSource.setTransfer(dragTypes); - dragSource.addDragListener(new DragSourceListener() { - public void dragFinished(org.eclipse.swt.dnd.DragSourceEvent event) { - dragConsole.append(">>dragFinished\n"); - printEvent(event); - dragDataText = dragDataRTF = dragDataHTML = dragDataURL = null; - dragDataFiles = null; - if (event.detail == DND.DROP_MOVE) { - switch(dragControlType) { - case BUTTON_CHECK: - case BUTTON_TOGGLE: - case BUTTON_RADIO: { - Button b = (Button)dragControl; - b.setText(""); - break; - } - case STYLED_TEXT: { - StyledText text = (StyledText)dragControl; - text.insert(""); - break; - } - case TABLE: { - Table table = (Table)dragControl; - TableItem[] items = table.getSelection(); - for (int i = 0; i < items.length; i++) { - items[i].dispose(); - } - break; - } - case TEXT: { - Text text = (Text)dragControl; - text.insert(""); - break; - } - case TREE: { - Tree tree = (Tree)dragControl; - TreeItem[] items = tree.getSelection(); - for (int i = 0; i < items.length; i++) { - items[i].dispose(); - } - break; - } - case CANVAS: { - dragControl.setData("STRINGS", null); - dragControl.redraw(); - break; - } - case LABEL: { - Label label = (Label)dragControl; - label.setText(""); - break; - } - case LIST: { - List list = (List)dragControl; - int[] indices = list.getSelectionIndices(); - list.remove(indices); - break; - } - case COMBO:{ - Combo combo = (Combo)dragControl; - combo.setText(""); - break; - } - } - } - } - public void dragSetData(org.eclipse.swt.dnd.DragSourceEvent event) { - dragConsole.append(">>dragSetData\n"); - printEvent(event); - if (TextTransfer.getInstance().isSupportedType(event.dataType)) { - event.data = dragDataText; - } - if (RTFTransfer.getInstance().isSupportedType(event.dataType)) { - event.data = dragDataRTF; - } - if (HTMLTransfer.getInstance().isSupportedType(event.dataType)) { - event.data = dragDataHTML; - } - if (URLTransfer.getInstance().isSupportedType(event.dataType)) { - event.data = dragDataURL; - } - if (FileTransfer.getInstance().isSupportedType(event.dataType)) { - event.data = dragDataFiles; - } - } - public void dragStart(org.eclipse.swt.dnd.DragSourceEvent event) { - dragConsole.append(">>dragStart\n"); - printEvent(event); - dragDataFiles = fileList.getItems(); - switch(dragControlType) { - case BUTTON_CHECK: - case BUTTON_TOGGLE: - case BUTTON_RADIO: { - Button b = (Button)dragControl; - dragDataText = b.getSelection() ? "true" : "false"; - break; - } - case STYLED_TEXT: { - StyledText text = (StyledText)dragControl; - String s = text.getSelectionText(); - if (s.length() == 0) { - event.doit = false; - } else { - dragDataText = s; - } - break; - } - case TABLE: { - Table table = (Table)dragControl; - TableItem[] items = table.getSelection(); - if (items.length == 0) { - event.doit = false; - } else { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < items.length; i++) { - buffer.append(items[i].getText()); - if (items.length > 1 && i < items.length - 1) { - buffer.append("\n"); - } - } - dragDataText = buffer.toString(); - } - break; - } - case TEXT: { - Text text = (Text)dragControl; - String s = text.getSelectionText(); - if (s.length() == 0) { - event.doit = false; - } else { - dragDataText = s; - } - break; - } - case TREE: { - Tree tree = (Tree)dragControl; - TreeItem[] items = tree.getSelection(); - if (items.length == 0) { - event.doit = false; - } else { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < items.length; i++) { - buffer.append(items[i].getText()); - if (items.length > 1 && i < items.length - 1) { - buffer.append("\n"); - } - } - dragDataText = buffer.toString(); - } - break; - } - case CANVAS: { - String[] strings = (String[])dragControl.getData("STRINGS"); - if (strings == null || strings.length == 0) { - event.doit = false; - } else { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < strings.length; i++) { - buffer.append(strings[i]); - if (strings.length > 1 && i < strings.length - 1) { - buffer.append("\n"); - } - } - dragDataText = buffer.toString(); - } - break; - } - case LABEL: { - Label label = (Label)dragControl; - String string = label.getText(); - if (string.length() == 0) { - event.doit = false; - } else { - dragDataText = string; - } - break; - } - case LIST: { - List list = (List)dragControl; - String[] selection = list.getSelection(); - if (selection.length == 0) { - event.doit = false; - } else { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < selection.length; i++) { - buffer.append(selection[i]); - if (selection.length > 1 && i < selection.length - 1) { - buffer.append("\n"); - } - } - dragDataText = buffer.toString(); - } - break; - } - case COMBO: { - Combo combo = (Combo) dragControl; - String string = combo.getText(); - Point selection = combo.getSelection(); - if (selection.x == selection.y) { - event.doit = false; - } else { - dragDataText = string.substring(selection.x, selection.y); - } - break; - } - default: - throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED); - } - if (dragDataText != null) { - dragDataRTF = "{\\rtf1{\\colortbl;\\red255\\green0\\blue0;}\\cf1\\b "+dragDataText+"}"; - dragDataHTML = "<b>"+dragDataText+"</b>"; - dragDataURL = "http://" + dragDataText.replace(' ', '.'); - try { - new URL(dragDataURL); - } catch (MalformedURLException e) { - dragDataURL = null; - } - } - - for (int i = 0; i < dragTypes.length; i++) { - if (dragTypes[i] instanceof TextTransfer && dragDataText == null) { - event.doit = false; - } - if (dragTypes[i] instanceof RTFTransfer && dragDataRTF == null) { - event.doit = false; - } - if (dragTypes[i] instanceof HTMLTransfer && dragDataHTML == null) { - event.doit = false; - } - if (dragTypes[i] instanceof URLTransfer && dragDataURL == null) { - event.doit = false; - } - if (dragTypes[i] instanceof FileTransfer && (dragDataFiles == null || dragDataFiles.length == 0)) { - event.doit = false; - } - } - } - }); -} - -private void createDragTypes(Composite parent) { - parent.setLayout(new GridLayout()); - Button textButton = new Button(parent, SWT.CHECK); - textButton.setText("Text Transfer"); - textButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDragTransfer(TextTransfer.getInstance()); - } else { - removeDragTransfer(TextTransfer.getInstance()); - } - } - }); - - Button b = new Button(parent, SWT.CHECK); - b.setText("RTF Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDragTransfer(RTFTransfer.getInstance()); - } else { - removeDragTransfer(RTFTransfer.getInstance()); - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("HTML Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDragTransfer(HTMLTransfer.getInstance()); - } else { - removeDragTransfer(HTMLTransfer.getInstance()); - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("URL Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDragTransfer(URLTransfer.getInstance()); - } else { - removeDragTransfer(URLTransfer.getInstance()); - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("File Transfer"); - b.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDragTransfer(FileTransfer.getInstance()); - } else { - removeDragTransfer(FileTransfer.getInstance()); - } - } - }); - b = new Button(parent, SWT.PUSH); - b.setText("Select File(s)"); - b.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - FileDialog dialog = new FileDialog(fileList.getShell(), SWT.OPEN | SWT.MULTI); - String result = dialog.open(); - if (result != null && result.length() > 0){ - fileList.removeAll(); - String separator = System.getProperty("file.separator"); - String path = dialog.getFilterPath(); - String[] names = dialog.getFileNames(); - for (int i = 0; i < names.length; i++) { - fileList.add(path+separator+names[i]); - } - } - } - }); - fileList = new List(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); - GridData data = new GridData(); - data.grabExcessHorizontalSpace = true; - data.horizontalAlignment = GridData.FILL; - data.verticalAlignment = GridData.BEGINNING; - fileList.setLayoutData(data); - - // initialize state - textButton.setSelection(true); - addDragTransfer(TextTransfer.getInstance()); -} - -private void createDragWidget(Composite parent) { - parent.setLayout(new FormLayout()); - Combo combo = new Combo(parent, SWT.READ_ONLY); - combo.setItems(new String[] {"Toggle Button", "Radio Button", "Checkbox", "Canvas", "Label", "List", "Table", "Tree", "Text", "StyledText", "Combo"}); - combo.select(LABEL); - dragControlType = combo.getSelectionIndex(); - dragControl = createWidget(dragControlType, parent, "Drag Source"); - - combo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Object data = dragControl.getLayoutData(); - Composite parent = dragControl.getParent(); - dragControl.dispose(); - Combo c = (Combo)e.widget; - dragControlType = c.getSelectionIndex(); - dragControl = createWidget(dragControlType, parent, "Drag Source"); - dragControl.setLayoutData(data); - if (dragEnabled) createDragSource(); - parent.layout(); - } - }); - - Button b = new Button(parent, SWT.CHECK); - b.setText("DragSource"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - dragEnabled = b.getSelection(); - if (dragEnabled) { - createDragSource(); - } else { - if (dragSource != null){ - dragSource.dispose(); - } - dragSource = null; - } - } - }); - b.setSelection(true); - dragEnabled = true; - - FormData data = new FormData(); - data.top = new FormAttachment(0, 10); - data.bottom = new FormAttachment(combo, -10); - data.left = new FormAttachment(0, 10); - data.right = new FormAttachment(100, -10); - dragControl.setLayoutData(data); - - data = new FormData(); - data.bottom = new FormAttachment(100, -10); - data.left = new FormAttachment(0, 10); - combo.setLayoutData(data); - - data = new FormData(); - data.bottom = new FormAttachment(100, -10); - data.left = new FormAttachment(combo, 10); - b.setLayoutData(data); -} - -private void createDropOperations(Composite parent) { - parent.setLayout(new RowLayout(SWT.VERTICAL)); - final Button moveButton = new Button(parent, SWT.CHECK); - moveButton.setText("DND.DROP_MOVE"); - moveButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropOperation |= DND.DROP_MOVE; - } else { - dropOperation = dropOperation & ~DND.DROP_MOVE; - if (dropOperation == 0 || (dropDefaultOperation & DND.DROP_MOVE) != 0) { - dropOperation |= DND.DROP_MOVE; - moveButton.setSelection(true); - } - } - if (dropEnabled) { - createDropTarget(); - } - } - }); - - - final Button copyButton = new Button(parent, SWT.CHECK); - copyButton.setText("DND.DROP_COPY"); - copyButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropOperation |= DND.DROP_COPY; - } else { - dropOperation = dropOperation & ~DND.DROP_COPY; - if (dropOperation == 0 || (dropDefaultOperation & DND.DROP_COPY) != 0) { - dropOperation = DND.DROP_COPY; - copyButton.setSelection(true); - } - } - if (dropEnabled) { - createDropTarget(); - } - } - }); - - final Button linkButton = new Button(parent, SWT.CHECK); - linkButton.setText("DND.DROP_LINK"); - linkButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropOperation |= DND.DROP_LINK; - } else { - dropOperation = dropOperation & ~DND.DROP_LINK; - if (dropOperation == 0 || (dropDefaultOperation & DND.DROP_LINK) != 0) { - dropOperation = DND.DROP_LINK; - linkButton.setSelection(true); - } - } - if (dropEnabled) { - createDropTarget(); - } - } - }); - - Button b = new Button(parent, SWT.CHECK); - b.setText("DND.DROP_DEFAULT"); - defaultParent = new Composite(parent, SWT.NONE); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropOperation |= DND.DROP_DEFAULT; - defaultParent.setVisible(true); - } else { - dropOperation = dropOperation & ~DND.DROP_DEFAULT; - defaultParent.setVisible(false); - } - if (dropEnabled) { - createDropTarget(); - } - } - }); - - defaultParent.setVisible(false); - GridLayout layout = new GridLayout(); - layout.marginWidth = 20; - defaultParent.setLayout(layout); - Label label = new Label(defaultParent, SWT.NONE); - label.setText("Value for default operation is:"); - b = new Button(defaultParent, SWT.RADIO); - b.setText("DND.DROP_MOVE"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropDefaultOperation = DND.DROP_MOVE; - dropOperation |= DND.DROP_MOVE; - moveButton.setSelection(true); - if (dropEnabled) { - createDropTarget(); - } - } - } - }); - - b = new Button(defaultParent, SWT.RADIO); - b.setText("DND.DROP_COPY"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropDefaultOperation = DND.DROP_COPY; - dropOperation |= DND.DROP_COPY; - copyButton.setSelection(true); - if (dropEnabled) { - createDropTarget(); - } - } - } - }); - - b = new Button(defaultParent, SWT.RADIO); - b.setText("DND.DROP_LINK"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropDefaultOperation = DND.DROP_LINK; - dropOperation |= DND.DROP_LINK; - linkButton.setSelection(true); - if (dropEnabled) { - createDropTarget(); - } - } - } - }); - - b = new Button(defaultParent, SWT.RADIO); - b.setText("DND.DROP_NONE"); - b.setSelection(true); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropDefaultOperation = DND.DROP_NONE; - dropOperation &= ~DND.DROP_DEFAULT; - if (dropEnabled) { - createDropTarget(); - } - } - } - }); - - // initialize state - moveButton.setSelection(true); - copyButton.setSelection(true); - linkButton.setSelection(true); - dropOperation = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK; -} - -private void createDropTarget() { - if (dropTarget != null) dropTarget.dispose(); - dropTarget = new DropTarget(dropControl, dropOperation); - dropTarget.setTransfer(dropTypes); - dropTarget.addDropListener(new DropTargetListener() { - public void dragEnter(DropTargetEvent event) { - dropConsole.append(">>dragEnter\n"); - printEvent(event); - if (event.detail == DND.DROP_DEFAULT) { - event.detail = dropDefaultOperation; - } - event.feedback = dropFeedback; - } - public void dragLeave(DropTargetEvent event) { - dropConsole.append(">>dragLeave\n"); - printEvent(event); - } - public void dragOperationChanged(DropTargetEvent event) { - dropConsole.append(">>dragOperationChanged\n"); - printEvent(event); - if (event.detail == DND.DROP_DEFAULT) { - event.detail = dropDefaultOperation; - } - event.feedback = dropFeedback; - } - public void dragOver(DropTargetEvent event) { - dropConsole.append(">>dragOver\n"); - printEvent(event); - event.feedback = dropFeedback; - } - public void drop(DropTargetEvent event) { - dropConsole.append(">>drop\n"); - printEvent(event); - String[] strings = null; - if (TextTransfer.getInstance().isSupportedType(event.currentDataType) || - RTFTransfer.getInstance().isSupportedType(event.currentDataType) || - HTMLTransfer.getInstance().isSupportedType(event.currentDataType) || - URLTransfer.getInstance().isSupportedType(event.currentDataType)) { - strings = new String[] {(String)event.data}; - } - if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) { - strings = (String[])event.data; - } - if (strings == null || strings.length == 0) { - dropConsole.append("!!Invalid data dropped"); - return; - } - - if (strings.length == 1 && (dropControlType == TABLE || - dropControlType == TREE || - dropControlType == LIST)) { - // convert string separated by "\n" into an array of strings - String string = strings[0]; - int count = 0; - int offset = string.indexOf("\n", 0); - while (offset > 0) { - count++; - offset = string.indexOf("\n", offset + 1); - } - if (count > 0) { - strings = new String[count + 1]; - int start = 0; - int end = string.indexOf("\n"); - int index = 0; - while (start < end) { - strings[index++] = string.substring(start, end); - start = end + 1; - end = string.indexOf("\n", start); - if (end == -1) end = string.length(); - } - } - } - switch(dropControlType) { - case BUTTON_CHECK: - case BUTTON_TOGGLE: - case BUTTON_RADIO: { - Button b = (Button)dropControl; - b.setText(strings[0]); - break; - } - case STYLED_TEXT: { - StyledText text = (StyledText)dropControl; - for(int i = 0; i < strings.length; i++) { - text.insert(strings[i]); - } - break; - } - case TABLE: { - Table table = (Table)dropControl; - Point p = event.display.map(null, table, event.x, event.y); - TableItem dropItem = table.getItem(p); - int index = dropItem == null ? table.getItemCount() : table.indexOf(dropItem); - for(int i = 0; i < strings.length; i++) { - TableItem item = new TableItem(table, SWT.NONE, index); - item.setText(0, strings[i]); - item.setText(1, "dropped item"); - } - TableColumn[] columns = table.getColumns(); - for (int i = 0; i < columns.length; i++) { - columns[i].pack(); - } - break; - } - case TEXT: { - Text text = (Text)dropControl; - for(int i = 0; i < strings.length; i++) { - text.append(strings[i]+"\n"); - } - break; - } - case TREE: { - Tree tree = (Tree)dropControl; - Point p = event.display.map(null, tree, event.x, event.y); - TreeItem parentItem = tree.getItem(p); - for(int i = 0; i < strings.length; i++) { - TreeItem item = parentItem != null ? new TreeItem(parentItem, SWT.NONE) : new TreeItem(tree, SWT.NONE); - item.setText(strings[i]); - } - break; - } - case CANVAS: { - dropControl.setData("STRINGS", strings); - dropControl.redraw(); - break; - } - case LABEL: { - Label label = (Label)dropControl; - label.setText(strings[0]); - break; - } - case LIST: { - List list = (List)dropControl; - for(int i = 0; i < strings.length; i++) { - list.add(strings[i]); - } - break; - } - case COMBO: { - Combo combo = (Combo)dropControl; - combo.setText(strings[0]); - break; - } - default: - throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED); - } - } - public void dropAccept(DropTargetEvent event) { - dropConsole.append(">>dropAccept\n"); - printEvent(event); - } - }); -} - -private void createFeedbackTypes(Group parent) { - parent.setLayout(new RowLayout(SWT.VERTICAL)); - Button b = new Button(parent, SWT.CHECK); - b.setText("FEEDBACK_SELECT"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropFeedback |= DND.FEEDBACK_SELECT; - } else { - dropFeedback &= ~DND.FEEDBACK_SELECT; - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("FEEDBACK_SCROLL"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropFeedback |= DND.FEEDBACK_SCROLL; - } else { - dropFeedback &= ~DND.FEEDBACK_SCROLL; - } - } - }); - - - b = new Button(parent, SWT.CHECK); - b.setText("FEEDBACK_INSERT_BEFORE"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropFeedback |= DND.FEEDBACK_INSERT_BEFORE; - } else { - dropFeedback &= ~DND.FEEDBACK_INSERT_BEFORE; - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("FEEDBACK_INSERT_AFTER"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropFeedback |= DND.FEEDBACK_INSERT_AFTER; - } else { - dropFeedback &= ~DND.FEEDBACK_INSERT_AFTER; - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("FEEDBACK_EXPAND"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - dropFeedback |= DND.FEEDBACK_EXPAND; - } else { - dropFeedback &= ~DND.FEEDBACK_EXPAND; - } - } - }); -} - -private void createDropTypes(Composite parent) { - parent.setLayout(new RowLayout(SWT.VERTICAL)); - Button textButton = new Button(parent, SWT.CHECK); - textButton.setText("Text Transfer"); - textButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDropTransfer(TextTransfer.getInstance()); - } else { - removeDropTransfer(TextTransfer.getInstance()); - } - } - }); - - Button b = new Button(parent, SWT.CHECK); - b.setText("RTF Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDropTransfer(RTFTransfer.getInstance()); - } else { - removeDropTransfer(RTFTransfer.getInstance()); - } - } - }); - - - b = new Button(parent, SWT.CHECK); - b.setText("HTML Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDropTransfer(HTMLTransfer.getInstance()); - } else { - removeDropTransfer(HTMLTransfer.getInstance()); - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("URL Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDropTransfer(URLTransfer.getInstance()); - } else { - removeDropTransfer(URLTransfer.getInstance()); - } - } - }); - - b = new Button(parent, SWT.CHECK); - b.setText("File Transfer"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - if (b.getSelection()) { - addDropTransfer(FileTransfer.getInstance()); - } else { - removeDropTransfer(FileTransfer.getInstance()); - } - } - }); - - // initialize state - textButton.setSelection(true); - addDropTransfer(TextTransfer.getInstance()); -} - -private void createDropWidget(Composite parent) { - parent.setLayout(new FormLayout()); - Combo combo = new Combo(parent, SWT.READ_ONLY); - combo.setItems(new String[] {"Toggle Button", "Radio Button", "Checkbox", "Canvas", "Label", "List", "Table", "Tree", "Text", "StyledText", "Combo"}); - combo.select(LABEL); - dropControlType = combo.getSelectionIndex(); - dropControl = createWidget(dropControlType, parent, "Drop Target"); - combo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Object data = dropControl.getLayoutData(); - Composite parent = dropControl.getParent(); - dropControl.dispose(); - Combo c = (Combo)e.widget; - dropControlType = c.getSelectionIndex(); - dropControl = createWidget(dropControlType, parent, "Drop Target"); - dropControl.setLayoutData(data); - if (dropEnabled) createDropTarget(); - parent.layout(); - } - }); - - Button b = new Button(parent, SWT.CHECK); - b.setText("DropTarget"); - b.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Button b = (Button)e.widget; - dropEnabled = b.getSelection(); - if (dropEnabled) { - createDropTarget(); - } else { - if (dropTarget != null){ - dropTarget.dispose(); - } - dropTarget = null; - } - } - }); - // initialize state - b.setSelection(true); - dropEnabled = true; - - FormData data = new FormData(); - data.top = new FormAttachment(0, 10); - data.bottom = new FormAttachment(combo, -10); - data.left = new FormAttachment(0, 10); - data.right = new FormAttachment(100, -10); - dropControl.setLayoutData(data); - - data = new FormData(); - data.bottom = new FormAttachment(100, -10); - data.left = new FormAttachment(0, 10); - combo.setLayoutData(data); - - data = new FormData(); - data.bottom = new FormAttachment(100, -10); - data.left = new FormAttachment(combo, 10); - b.setLayoutData(data); -} - -private Control createWidget(int type, Composite parent, String prefix){ - switch (type) { - case BUTTON_CHECK: { - Button button = new Button(parent, SWT.CHECK); - button.setText(prefix+" Check box"); - return button; - } - case BUTTON_TOGGLE: { - Button button = new Button(parent, SWT.TOGGLE); - button.setText(prefix+" Toggle button"); - return button; - } - case BUTTON_RADIO: { - Button button = new Button(parent, SWT.RADIO); - button.setText(prefix+" Radio button"); - return button; - } - case STYLED_TEXT: { - StyledText text = new StyledText(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - text.setText(prefix+" Styled Text"); - return text; - } - case TABLE: { - Table table = new Table(parent, SWT.BORDER | SWT.MULTI); - table.setHeaderVisible(true); - TableColumn column0 = new TableColumn(table, SWT.LEFT); - column0.setText("Name"); - TableColumn column1 = new TableColumn(table, SWT.RIGHT); - column1.setText("Value"); - TableColumn column2 = new TableColumn(table, SWT.CENTER); - column2.setText("Description"); - for (int i = 0; i < 10; i++) { - TableItem item = new TableItem(table, SWT.NONE); - item.setText(0, prefix+" name "+i); - item.setText(1, prefix+" value "+i); - item.setText(2, prefix+" description "+i); - item.setImage(itemImage); - } - column0.pack(); - column1.pack(); - column2.pack(); - return table; - } - case TEXT: { - Text text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - text.setText(prefix+" Text"); - return text; - } - case TREE: { - Tree tree = new Tree(parent, SWT.BORDER | SWT.MULTI); - tree.setHeaderVisible(true); - TreeColumn column0 = new TreeColumn(tree, SWT.LEFT); - column0.setText("Name"); - TreeColumn column1 = new TreeColumn(tree, SWT.RIGHT); - column1.setText("Value"); - TreeColumn column2 = new TreeColumn(tree, SWT.CENTER); - column2.setText("Description"); - for (int i = 0; i < 3; i++) { - TreeItem item = new TreeItem(tree, SWT.NONE); - item.setText(0, prefix+" name "+i); - item.setText(1, prefix+" value "+i); - item.setText(2, prefix+" description "+i); - item.setImage(itemImage); - for (int j = 0; j < 3; j++) { - TreeItem subItem = new TreeItem(item, SWT.NONE); - subItem.setText(0, prefix+" name "+i+" "+j); - subItem.setText(1, prefix+" value "+i+" "+j); - subItem.setText(2, prefix+" description "+i+" "+j); - subItem.setImage(itemImage); - for (int k = 0; k < 3; k++) { - TreeItem subsubItem = new TreeItem(subItem, SWT.NONE); - subsubItem.setText(0, prefix+" name "+i+" "+j+" "+k); - subsubItem.setText(1, prefix+" value "+i+" "+j+" "+k); - subsubItem.setText(2, prefix+" description "+i+" "+j+" "+k); - subsubItem.setImage(itemImage); - } - } - } - column0.pack(); - column1.pack(); - column2.pack(); - return tree; - } - case CANVAS: { - Canvas canvas = new Canvas(parent, SWT.BORDER); - canvas.setData("STRINGS", new String[] {prefix+" Canvas widget"}); - canvas.addPaintListener(new PaintListener() { - public void paintControl(PaintEvent e) { - Canvas c = (Canvas)e.widget; - Image image = (Image)c.getData("IMAGE"); - if (image != null) { - e.gc.drawImage(image, 5, 5); - } else { - String[] strings = (String[])c.getData("STRINGS"); - if (strings != null) { - FontMetrics metrics = e.gc.getFontMetrics(); - int height = metrics.getHeight(); - int y = 5; - for(int i = 0; i < strings.length; i++) { - e.gc.drawString(strings[i], 5, y); - y += height + 5; - } - } - } - } - }); - return canvas; - } - case LABEL: { - Label label = new Label(parent, SWT.BORDER); - label.setText(prefix+" Label"); - return label; - } - case LIST: { - List list = new List(parent, SWT.BORDER); - list.setItems(new String[] {prefix+" Item a", prefix+" Item b", prefix+" Item c", prefix+" Item d"}); - return list; - } - case COMBO:{ - Combo combo = new Combo(parent, SWT.BORDER); - combo.setItems(new String[] {"Item a", "Item b", "Item c", "Item d"}); - return combo; - } - default: - throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED); - } -} - -public void open(Display display) { - Shell shell = new Shell(display); - shell.setText("Drag and Drop Example"); - shell.setLayout(new FillLayout()); - - itemImage = new Image (display, DNDExample.class.getResourceAsStream("openFolder.gif")); - - ScrolledComposite sc = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL); - Composite parent = new Composite(sc, SWT.NONE); - sc.setContent(parent); - parent.setLayout(new FormLayout()); - - Label dragLabel = new Label(parent, SWT.LEFT); - dragLabel.setText("Drag Source:"); - - Group dragWidgetGroup = new Group(parent, SWT.NONE); - dragWidgetGroup.setText("Widget"); - createDragWidget(dragWidgetGroup); - - Composite cLeft = new Composite(parent, SWT.NONE); - cLeft.setLayout(new GridLayout(2, false)); - - Group dragOperationsGroup = new Group(cLeft, SWT.NONE); - dragOperationsGroup.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1)); - dragOperationsGroup.setText("Allowed Operation(s):"); - createDragOperations(dragOperationsGroup); - - Group dragTypesGroup = new Group(cLeft, SWT.NONE); - dragTypesGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1)); - dragTypesGroup.setText("Transfer Type(s):"); - createDragTypes(dragTypesGroup); - - dragConsole = new Text(cLeft, SWT.READ_ONLY | SWT.BORDER |SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI); - dragConsole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - Menu menu = new Menu (shell, SWT.POP_UP); - MenuItem item = new MenuItem (menu, SWT.PUSH); - item.setText ("Clear"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - dragConsole.setText(""); - } - }); - item = new MenuItem (menu, SWT.CHECK); - item.setText ("Show Event detail"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - MenuItem item = (MenuItem)e.widget; - dragEventDetail = item.getSelection(); - } - }); - dragConsole.setMenu(menu); - - Label dropLabel = new Label(parent, SWT.LEFT); - dropLabel.setText("Drop Target:"); - - Group dropWidgetGroup = new Group(parent, SWT.NONE); - dropWidgetGroup.setText("Widget"); - createDropWidget(dropWidgetGroup); - - Composite cRight = new Composite(parent, SWT.NONE); - cRight.setLayout(new GridLayout(2, false)); - - Group dropOperationsGroup = new Group(cRight, SWT.NONE); - dropOperationsGroup.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 2)); - dropOperationsGroup.setText("Allowed Operation(s):"); - createDropOperations(dropOperationsGroup); - - Group dropTypesGroup = new Group(cRight, SWT.NONE); - dropTypesGroup.setText("Transfer Type(s):"); - createDropTypes(dropTypesGroup); - - Group feedbackTypesGroup = new Group(cRight, SWT.NONE); - feedbackTypesGroup.setText("Feedback Type(s):"); - createFeedbackTypes(feedbackTypesGroup); - - dropConsole = new Text(cRight, SWT.READ_ONLY | SWT.BORDER |SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI); - dropConsole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - menu = new Menu (shell, SWT.POP_UP); - item = new MenuItem (menu, SWT.PUSH); - item.setText ("Clear"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - dropConsole.setText(""); - } - }); - item = new MenuItem (menu, SWT.CHECK); - item.setText ("Show Event detail"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - MenuItem item = (MenuItem)e.widget; - dropEventDetail = item.getSelection(); - } - }); - dropConsole.setMenu(menu); - - if (dragEnabled) createDragSource(); - if (dropEnabled) createDropTarget(); - - int height = 200; - FormData data = new FormData(); - data.top = new FormAttachment(0, 10); - data.left = new FormAttachment(0, 10); - dragLabel.setLayoutData(data); - - data = new FormData(); - data.top = new FormAttachment(dragLabel, 10); - data.left = new FormAttachment(0, 10); - data.right = new FormAttachment(50, -10); - data.height = height; - dragWidgetGroup.setLayoutData(data); - - data = new FormData(); - data.top = new FormAttachment(dragWidgetGroup, 10); - data.left = new FormAttachment(0, 10); - data.right = new FormAttachment(50, -10); - data.bottom = new FormAttachment(100, -10); - cLeft.setLayoutData(data); - - data = new FormData(); - data.top = new FormAttachment(0, 10); - data.left = new FormAttachment(cLeft, 10); - dropLabel.setLayoutData(data); - - data = new FormData(); - data.top = new FormAttachment(dropLabel, 10); - data.left = new FormAttachment(cLeft, 10); - data.right = new FormAttachment(100, -10); - data.height = height; - dropWidgetGroup.setLayoutData(data); - - data = new FormData(); - data.top = new FormAttachment(dropWidgetGroup, 10); - data.left = new FormAttachment(cLeft, 10); - data.right = new FormAttachment(100, -10); - data.bottom = new FormAttachment(100, -10); - cRight.setLayoutData(data); - - sc.setMinSize(parent.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - sc.setExpandHorizontal(true); - sc.setExpandVertical(true); - - Point size = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT); - Rectangle monitorArea = shell.getMonitor().getClientArea(); - shell.setSize(Math.min(size.x, monitorArea.width - 20), Math.min(size.y, monitorArea.height - 20)); - shell.open(); - - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - itemImage.dispose(); -} - -private void printEvent(DragSourceEvent e) { - if (!dragEventDetail) return; - StringBuffer sb = new StringBuffer(); - sb.append("widget: "); sb.append(e.widget); - sb.append(", time: "); sb.append(e.time); - sb.append(", operation: "); sb.append(e.detail); - sb.append(", type: "); sb.append(e.dataType != null ? e.dataType.type : 0); - sb.append(", doit: "); sb.append(e.doit); - sb.append(", data: "); sb.append(e.data); - sb.append("\n"); - dragConsole.append(sb.toString()); -} - -private void printEvent(DropTargetEvent e) { - if (!dropEventDetail) return; - StringBuffer sb = new StringBuffer(); - sb.append("widget; "); sb.append(e.widget); - sb.append(", time: "); sb.append(e.time); - sb.append(", x: "); sb.append(e.x); - sb.append(", y: "); sb.append(e.y); - sb.append(", item: "); sb.append(e.item); - sb.append(", operations: "); sb.append(e.operations); - sb.append(", operation: "); sb.append(e.detail); - sb.append(", feedback: "); sb.append(e.feedback); - if (e.dataTypes != null) { - for (int i = 0; i < e.dataTypes.length; i++) { - sb.append(", dataType "); sb.append(i); sb.append(": "); sb.append(e.dataTypes[i].type); - } - } else { - sb.append(", dataTypes: none"); - } - sb.append(", currentDataType: "); sb.append(e.currentDataType); - sb.append(", data: "); sb.append(e.data); - sb.append("\n"); - dropConsole.append(sb.toString()); -} - -private void removeDragTransfer(Transfer transfer){ - if (dragTypes.length == 1) { - dragTypes = new Transfer[0]; - } else { - int index = -1; - for(int i = 0; i < dragTypes.length; i++) { - if (dragTypes[i] == transfer) { - index = i; - break; - } - } - if (index == -1) return; - Transfer[] newTypes = new Transfer[dragTypes.length - 1]; - System.arraycopy(dragTypes, 0, newTypes, 0, index); - System.arraycopy(dragTypes, index + 1, newTypes, index, dragTypes.length - index - 1); - dragTypes = newTypes; - } - if (dragSource != null) { - dragSource.setTransfer(dragTypes); - } -} - -private void removeDropTransfer(Transfer transfer){ - if (dropTypes.length == 1) { - dropTypes = new Transfer[0]; - } else { - int index = -1; - for(int i = 0; i < dropTypes.length; i++) { - if (dropTypes[i] == transfer) { - index = i; - break; - } - } - if (index == -1) return; - Transfer[] newTypes = new Transfer[dropTypes.length - 1]; - System.arraycopy(dropTypes, 0, newTypes, 0, index); - System.arraycopy(dropTypes, index + 1, newTypes, index, dropTypes.length - index - 1); - dropTypes = newTypes; - } - if (dropTarget != null) { - dropTarget.setTransfer(dropTypes); - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/dnd/openFolder.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/dnd/openFolder.gif Binary files differdeleted file mode 100644 index fc9943f111..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/dnd/openFolder.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/FileViewer.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/FileViewer.java deleted file mode 100755 index 0c3d8c30b0..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/FileViewer.java +++ /dev/null @@ -1,1716 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.fileviewer; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.dnd.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.program.*; -import org.eclipse.swt.widgets.*; - -import java.io.*; -import java.text.*; -import java.util.*; - -/** - * File Viewer example - */ -public class FileViewer { - private static ResourceBundle resourceBundle = ResourceBundle.getBundle("examples_fileviewer"); - - private final static String DRIVE_A = "a:" + File.separator; - private final static String DRIVE_B = "b:" + File.separator; - - /* UI elements */ - private Display display; - private Shell shell; - private ToolBar toolBar; - - private Label numObjectsLabel; - private Label diskSpaceLabel; - - private File currentDirectory = null; - private boolean initial = true; - - /* Drag and drop optimizations */ - private boolean isDragging = false; // if this app is dragging - private boolean isDropping = false; // if this app is dropping - - private File[] processedDropFiles = null; // so Drag only deletes what it needs to - private File[] deferredRefreshFiles = null; // to defer notifyRefreshFiles while we do DND - private boolean deferredRefreshRequested = false; // to defer notifyRefreshFiles while we do DND - private ProgressDialog progressDialog = null; // progress dialog for locally-initiated operations - - /* Combo view */ - private static final String COMBODATA_ROOTS = "Combo.roots"; - // File[]: Array of files whose paths are currently displayed in the combo - private static final String COMBODATA_LASTTEXT = "Combo.lastText"; - // String: Previous selection text string - - private Combo combo; - - /* Tree view */ - private IconCache iconCache = new IconCache(); - private static final String TREEITEMDATA_FILE = "TreeItem.file"; - // File: File associated with tree item - private static final String TREEITEMDATA_IMAGEEXPANDED = "TreeItem.imageExpanded"; - // Image: shown when item is expanded - private static final String TREEITEMDATA_IMAGECOLLAPSED = "TreeItem.imageCollapsed"; - // Image: shown when item is collapsed - private static final String TREEITEMDATA_STUB = "TreeItem.stub"; - // Object: if not present or null then the item has not been populated - - private Tree tree; - private Label treeScopeLabel; - - /* Table view */ - private static final DateFormat dateFormat = DateFormat.getDateTimeInstance( - DateFormat.MEDIUM, DateFormat.MEDIUM); - private static final String TABLEITEMDATA_FILE = "TableItem.file"; - // File: File associated with table row - private static final String TABLEDATA_DIR = "Table.dir"; - // File: Currently visible directory - private static final int[] tableWidths = new int[] {150, 60, 75, 150}; - private final String[] tableTitles = new String [] { - FileViewer.getResourceString("table.Name.title"), - FileViewer.getResourceString("table.Size.title"), - FileViewer.getResourceString("table.Type.title"), - FileViewer.getResourceString("table.Modified.title") - }; - private Table table; - private Label tableContentsOfLabel; - - /* Table update worker */ - // Control data - private final Object workerLock = new Object(); - // Lock for all worker control data and state - private volatile Thread workerThread = null; - // The worker's thread - private volatile boolean workerStopped = false; - // True if the worker must exit on completion of the current cycle - private volatile boolean workerCancelled = false; - // True if the worker must cancel its operations prematurely perhaps due to a state update - - // Worker state information -- this is what gets synchronized by an update - private volatile File workerStateDir = null; - - // State information to use for the next cycle - private volatile File workerNextDir = null; - - /* Simulate only flag */ - // when true, disables actual filesystem manipulations and outputs results to standard out - private boolean simulateOnly = true; - - /** - * Runs main program. - */ - public static void main (String [] args) { - Display display = new Display (); - FileViewer application = new FileViewer(); - Shell shell = application.open(display); - while (! shell.isDisposed()) { - if (! display.readAndDispatch()) display.sleep(); - } - application.close(); - display.dispose(); - } - - /** - * Opens the main program. - */ - public Shell open(Display display) { - // Create the window - this.display = display; - iconCache.initResources(display); - shell = new Shell(); - createShellContents(); - notifyRefreshFiles(null); - shell.open(); - return shell; - } - - /** - * Closes the main program. - */ - void close() { - workerStop(); - iconCache.freeResources(); - } - - /** - * Returns a string from the resource bundle. - * We don't want to crash because of a missing String. - * Returns the key if not found. - */ - static String getResourceString(String key) { - try { - return resourceBundle.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Returns a string from the resource bundle and binds it - * with the given arguments. If the key is not found, - * return the key. - */ - static String getResourceString(String key, Object[] args) { - try { - return MessageFormat.format(getResourceString(key), args); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Construct the UI - * - * @param container the ShellContainer managing the Shell we are rendering inside - */ - private void createShellContents() { - shell.setText(getResourceString("Title", new Object[] { "" })); - shell.setImage(iconCache.stockImages[iconCache.shellIcon]); - Menu bar = new Menu(shell, SWT.BAR); - shell.setMenuBar(bar); - createFileMenu(bar); - createHelpMenu(bar); - - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 3; - gridLayout.marginHeight = gridLayout.marginWidth = 0; - shell.setLayout(gridLayout); - - GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gridData.widthHint = 185; - createComboView(shell, gridData); - gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gridData.horizontalSpan = 2; - createToolBar(shell, gridData); - - SashForm sashForm = new SashForm(shell, SWT.NONE); - sashForm.setOrientation(SWT.HORIZONTAL); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL); - gridData.horizontalSpan = 3; - sashForm.setLayoutData(gridData); - createTreeView(sashForm); - createTableView(sashForm); - sashForm.setWeights(new int[] { 2, 5 }); - - numObjectsLabel = new Label(shell, SWT.BORDER); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); - gridData.widthHint = 185; - numObjectsLabel.setLayoutData(gridData); - - diskSpaceLabel = new Label(shell, SWT.BORDER); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); - gridData.horizontalSpan = 2; - diskSpaceLabel.setLayoutData(gridData); - } - - /** - * Creates the File Menu. - * - * @param parent the parent menu - */ - private void createFileMenu(Menu parent) { - Menu menu = new Menu(parent); - MenuItem header = new MenuItem(parent, SWT.CASCADE); - header.setText(getResourceString("menu.File.text")); - header.setMenu(menu); - - final MenuItem simulateItem = new MenuItem(menu, SWT.CHECK); - simulateItem.setText(getResourceString("menu.File.SimulateOnly.text")); - simulateItem.setSelection(simulateOnly); - simulateItem.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - simulateOnly = simulateItem.getSelection(); - } - }); - - MenuItem item = new MenuItem(menu, SWT.PUSH); - item.setText(getResourceString("menu.File.Close.text")); - item.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - shell.close(); - } - }); - } - - /** - * Creates the Help Menu. - * - * @param parent the parent menu - */ - private void createHelpMenu(Menu parent) { - Menu menu = new Menu(parent); - MenuItem header = new MenuItem(parent, SWT.CASCADE); - header.setText(getResourceString("menu.Help.text")); - header.setMenu(menu); - - MenuItem item = new MenuItem(menu, SWT.PUSH); - item.setText(getResourceString("menu.Help.About.text")); - item.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK); - box.setText(getResourceString("dialog.About.title")); - box.setMessage(getResourceString("dialog.About.description", - new Object[] { System.getProperty("os.name") })); - box.open(); - } - }); - } - - /** - * Creates the toolbar - * - * @param shell the shell on which to attach the toolbar - * @param layoutData the layout data - */ - private void createToolBar(final Shell shell, Object layoutData) { - toolBar = new ToolBar(shell, SWT.NONE); - toolBar.setLayoutData(layoutData); - ToolItem item = new ToolItem(toolBar, SWT.SEPARATOR); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdParent]); - item.setToolTipText(getResourceString("tool.Parent.tiptext")); - item.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - doParent(); - } - }); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdRefresh]); - item.setToolTipText(getResourceString("tool.Refresh.tiptext")); - item.addSelectionListener(new SelectionAdapter () { - public void widgetSelected(SelectionEvent e) { - doRefresh(); - } - }); - SelectionAdapter unimplementedListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK); - box.setText(getResourceString("dialog.NotImplemented.title")); - box.setMessage(getResourceString("dialog.ActionNotImplemented.description")); - box.open(); - } - }; - - item = new ToolItem(toolBar, SWT.SEPARATOR); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdCut]); - item.setToolTipText(getResourceString("tool.Cut.tiptext")); - item.addSelectionListener(unimplementedListener); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdCopy]); - item.setToolTipText(getResourceString("tool.Copy.tiptext")); - item.addSelectionListener(unimplementedListener); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdPaste]); - item.setToolTipText(getResourceString("tool.Paste.tiptext")); - item.addSelectionListener(unimplementedListener); - - item = new ToolItem(toolBar, SWT.SEPARATOR); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdDelete]); - item.setToolTipText(getResourceString("tool.Delete.tiptext")); - item.addSelectionListener(unimplementedListener); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdRename]); - item.setToolTipText(getResourceString("tool.Rename.tiptext")); - item.addSelectionListener(unimplementedListener); - - item = new ToolItem(toolBar, SWT.SEPARATOR); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdSearch]); - item.setToolTipText(getResourceString("tool.Search.tiptext")); - item.addSelectionListener(unimplementedListener); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(iconCache.stockImages[iconCache.cmdPrint]); - item.setToolTipText(getResourceString("tool.Print.tiptext")); - item.addSelectionListener(unimplementedListener); - } - - /** - * Creates the combo box view. - * - * @param parent the parent control - */ - private void createComboView(Composite parent, Object layoutData) { - combo = new Combo(parent, SWT.NONE); - combo.setLayoutData(layoutData); - combo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - final File[] roots = (File[]) combo.getData(COMBODATA_ROOTS); - if (roots == null) return; - int selection = combo.getSelectionIndex(); - if (selection >= 0 && selection < roots.length) { - notifySelectedDirectory(roots[selection]); - } - } - public void widgetDefaultSelected(SelectionEvent e) { - final String lastText = (String) combo.getData(COMBODATA_LASTTEXT); - String text = combo.getText(); - if (text == null) return; - if (lastText != null && lastText.equals(text)) return; - combo.setData(COMBODATA_LASTTEXT, text); - notifySelectedDirectory(new File(text)); - } - }); - } - - /** - * Creates the file tree view. - * - * @param parent the parent control - */ - private void createTreeView(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 1; - gridLayout.marginHeight = gridLayout.marginWidth = 2; - gridLayout.horizontalSpacing = gridLayout.verticalSpacing = 0; - composite.setLayout(gridLayout); - - treeScopeLabel = new Label(composite, SWT.BORDER); - treeScopeLabel.setText(FileViewer.getResourceString("details.AllFolders.text")); - treeScopeLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL)); - - tree = new Tree(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE); - tree.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL)); - - tree.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent event) { - final TreeItem[] selection = tree.getSelection(); - if (selection != null && selection.length != 0) { - TreeItem item = selection[0]; - File file = (File) item.getData(TREEITEMDATA_FILE); - - notifySelectedDirectory(file); - } - } - public void widgetDefaultSelected(SelectionEvent event) { - final TreeItem[] selection = tree.getSelection(); - if (selection != null && selection.length != 0) { - TreeItem item = selection[0]; - item.setExpanded(true); - treeExpandItem(item); - } - } - }); - tree.addTreeListener(new TreeAdapter() { - public void treeExpanded(TreeEvent event) { - final TreeItem item = (TreeItem) event.item; - final Image image = (Image) item.getData(TREEITEMDATA_IMAGEEXPANDED); - if (image != null) item.setImage(image); - treeExpandItem(item); - } - public void treeCollapsed(TreeEvent event) { - final TreeItem item = (TreeItem) event.item; - final Image image = (Image) item.getData(TREEITEMDATA_IMAGECOLLAPSED); - if (image != null) item.setImage(image); - } - }); - createTreeDragSource(tree); - createTreeDropTarget(tree); - } - - /** - * Creates the Drag & Drop DragSource for items being dragged from the tree. - * - * @return the DragSource for the tree - */ - private DragSource createTreeDragSource(final Tree tree){ - DragSource dragSource = new DragSource(tree, DND.DROP_MOVE | DND.DROP_COPY); - dragSource.setTransfer(new Transfer[] { FileTransfer.getInstance() }); - dragSource.addDragListener(new DragSourceListener() { - TreeItem[] dndSelection = null; - String[] sourceNames = null; - public void dragStart(DragSourceEvent event){ - dndSelection = tree.getSelection(); - sourceNames = null; - event.doit = dndSelection.length > 0; - isDragging = true; - processedDropFiles = null; - } - public void dragFinished(DragSourceEvent event){ - dragSourceHandleDragFinished(event, sourceNames); - dndSelection = null; - sourceNames = null; - isDragging = false; - processedDropFiles = null; - handleDeferredRefresh(); - } - public void dragSetData(DragSourceEvent event){ - if (dndSelection == null || dndSelection.length == 0) return; - if (! FileTransfer.getInstance().isSupportedType(event.dataType)) return; - - sourceNames = new String[dndSelection.length]; - for (int i = 0; i < dndSelection.length; i++) { - File file = (File) dndSelection[i].getData(TREEITEMDATA_FILE); - sourceNames[i] = file.getAbsolutePath(); - } - event.data = sourceNames; - } - }); - return dragSource; - } - - /** - * Creates the Drag & Drop DropTarget for items being dropped onto the tree. - * - * @return the DropTarget for the tree - */ - private DropTarget createTreeDropTarget(final Tree tree) { - DropTarget dropTarget = new DropTarget(tree, DND.DROP_MOVE | DND.DROP_COPY); - dropTarget.setTransfer(new Transfer[] { FileTransfer.getInstance() }); - dropTarget.addDropListener(new DropTargetAdapter() { - public void dragEnter(DropTargetEvent event) { - isDropping = true; - } - public void dragLeave(DropTargetEvent event) { - isDropping = false; - handleDeferredRefresh(); - } - public void dragOver(DropTargetEvent event) { - dropTargetValidate(event, getTargetFile(event)); - event.feedback |= DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL; - } - public void drop(DropTargetEvent event) { - File targetFile = getTargetFile(event); - if (dropTargetValidate(event, targetFile)) - dropTargetHandleDrop(event, targetFile); - } - private File getTargetFile(DropTargetEvent event) { - // Determine the target File for the drop - TreeItem item = tree.getItem(tree.toControl(new Point(event.x, event.y))); - File targetFile = null; - if (item != null) { - // We are over a particular item in the tree, use the item's file - targetFile = (File) item.getData(TREEITEMDATA_FILE); - } - return targetFile; - } - }); - return dropTarget; - } - - /** - * Handles expand events on a tree item. - * - * @param item the TreeItem to fill in - */ - private void treeExpandItem(TreeItem item) { - shell.setCursor(iconCache.stockCursors[iconCache.cursorWait]); - final Object stub = item.getData(TREEITEMDATA_STUB); - if (stub == null) treeRefreshItem(item, true); - shell.setCursor(iconCache.stockCursors[iconCache.cursorDefault]); - } - - /** - * Traverse the entire tree and update only what has changed. - * - * @param roots the root directory listing - */ - private void treeRefresh(File[] masterFiles) { - TreeItem[] items = tree.getItems(); - int masterIndex = 0; - int itemIndex = 0; - for (int i = 0; i < items.length; ++i) { - final TreeItem item = items[i]; - final File itemFile = (File) item.getData(TREEITEMDATA_FILE); - if ((itemFile == null) || (masterIndex == masterFiles.length)) { - // remove bad item or placeholder - item.dispose(); - continue; - } - final File masterFile = masterFiles[masterIndex]; - int compare = compareFiles(masterFile, itemFile); - if (compare == 0) { - // same file, update it - treeRefreshItem(item, false); - ++itemIndex; - ++masterIndex; - } else if (compare < 0) { - // should appear before file, insert it - TreeItem newItem = new TreeItem(tree, SWT.NONE, itemIndex); - treeInitVolume(newItem, masterFile); - new TreeItem(newItem, SWT.NONE); // placeholder child item to get "expand" button - ++itemIndex; - ++masterIndex; - --i; - } else { - // should appear after file, delete stale item - item.dispose(); - } - } - for (;masterIndex < masterFiles.length; ++masterIndex) { - final File masterFile = masterFiles[masterIndex]; - TreeItem newItem = new TreeItem(tree, SWT.NONE); - treeInitVolume(newItem, masterFile); - new TreeItem(newItem, SWT.NONE); // placeholder child item to get "expand" button - } - } - - /** - * Traverse an item in the tree and update only what has changed. - * - * @param dirItem the tree item of the directory - * @param forcePopulate true iff we should populate non-expanded items as well - */ - private void treeRefreshItem(TreeItem dirItem, boolean forcePopulate) { - final File dir = (File) dirItem.getData(TREEITEMDATA_FILE); - - if (! forcePopulate && ! dirItem.getExpanded()) { - // Refresh non-expanded item - if (dirItem.getData(TREEITEMDATA_STUB) != null) { - treeItemRemoveAll(dirItem); - new TreeItem(dirItem, SWT.NONE); // placeholder child item to get "expand" button - dirItem.setData(TREEITEMDATA_STUB, null); - } - return; - } - // Refresh expanded item - dirItem.setData(TREEITEMDATA_STUB, this); // clear stub flag - - /* Get directory listing */ - File[] subFiles = (dir != null) ? FileViewer.getDirectoryList(dir) : null; - if (subFiles == null || subFiles.length == 0) { - /* Error or no contents */ - treeItemRemoveAll(dirItem); - dirItem.setExpanded(false); - return; - } - - /* Refresh sub-items */ - TreeItem[] items = dirItem.getItems(); - final File[] masterFiles = subFiles; - int masterIndex = 0; - int itemIndex = 0; - File masterFile = null; - for (int i = 0; i < items.length; ++i) { - while ((masterFile == null) && (masterIndex < masterFiles.length)) { - masterFile = masterFiles[masterIndex++]; - if (! masterFile.isDirectory()) masterFile = null; - } - - final TreeItem item = items[i]; - final File itemFile = (File) item.getData(TREEITEMDATA_FILE); - if ((itemFile == null) || (masterFile == null)) { - // remove bad item or placeholder - item.dispose(); - continue; - } - int compare = compareFiles(masterFile, itemFile); - if (compare == 0) { - // same file, update it - treeRefreshItem(item, false); - masterFile = null; - ++itemIndex; - } else if (compare < 0) { - // should appear before file, insert it - TreeItem newItem = new TreeItem(dirItem, SWT.NONE, itemIndex); - treeInitFolder(newItem, masterFile); - new TreeItem(newItem, SWT.NONE); // add a placeholder child item so we get the "expand" button - masterFile = null; - ++itemIndex; - --i; - } else { - // should appear after file, delete stale item - item.dispose(); - } - } - while ((masterFile != null) || (masterIndex < masterFiles.length)) { - if (masterFile != null) { - TreeItem newItem = new TreeItem(dirItem, SWT.NONE); - treeInitFolder(newItem, masterFile); - new TreeItem(newItem, SWT.NONE); // add a placeholder child item so we get the "expand" button - if (masterIndex == masterFiles.length) break; - } - masterFile = masterFiles[masterIndex++]; - if (! masterFile.isDirectory()) masterFile = null; - } - } - - /** - * Foreign method: removes all children of a TreeItem. - * @param treeItem the TreeItem - */ - private static void treeItemRemoveAll(TreeItem treeItem) { - final TreeItem[] children = treeItem.getItems(); - for (int i = 0; i < children.length; ++i) { - children[i].dispose(); - } - } - - /** - * Initializes a folder item. - * - * @param item the TreeItem to initialize - * @param folder the File associated with this TreeItem - */ - private void treeInitFolder(TreeItem item, File folder) { - item.setText(folder.getName()); - item.setImage(iconCache.stockImages[iconCache.iconClosedFolder]); - item.setData(TREEITEMDATA_FILE, folder); - item.setData(TREEITEMDATA_IMAGEEXPANDED, iconCache.stockImages[iconCache.iconOpenFolder]); - item.setData(TREEITEMDATA_IMAGECOLLAPSED, iconCache.stockImages[iconCache.iconClosedFolder]); - } - - /** - * Initializes a volume item. - * - * @param item the TreeItem to initialize - * @param volume the File associated with this TreeItem - */ - private void treeInitVolume(TreeItem item, File volume) { - item.setText(volume.getPath()); - item.setImage(iconCache.stockImages[iconCache.iconClosedDrive]); - item.setData(TREEITEMDATA_FILE, volume); - item.setData(TREEITEMDATA_IMAGEEXPANDED, iconCache.stockImages[iconCache.iconOpenDrive]); - item.setData(TREEITEMDATA_IMAGECOLLAPSED, iconCache.stockImages[iconCache.iconClosedDrive]); - } - - /** - * Creates the file details table. - * - * @param parent the parent control - */ - private void createTableView(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 1; - gridLayout.marginHeight = gridLayout.marginWidth = 2; - gridLayout.horizontalSpacing = gridLayout.verticalSpacing = 0; - composite.setLayout(gridLayout); - tableContentsOfLabel = new Label(composite, SWT.BORDER); - tableContentsOfLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL)); - - table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.FULL_SELECTION); - table.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL)); - - for (int i = 0; i < tableTitles.length; ++i) { - TableColumn column = new TableColumn(table, SWT.NONE); - column.setText(tableTitles[i]); - column.setWidth(tableWidths[i]); - } - table.setHeaderVisible(true); - table.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - notifySelectedFiles(getSelectedFiles()); - } - public void widgetDefaultSelected(SelectionEvent event) { - doDefaultFileAction(getSelectedFiles()); - } - private File[] getSelectedFiles() { - final TableItem[] items = table.getSelection(); - final File[] files = new File[items.length]; - - for (int i = 0; i < items.length; ++i) { - files[i] = (File) items[i].getData(TABLEITEMDATA_FILE); - } - return files; - } - }); - - createTableDragSource(table); - createTableDropTarget(table); - } - - /** - * Creates the Drag & Drop DragSource for items being dragged from the table. - * - * @return the DragSource for the table - */ - private DragSource createTableDragSource(final Table table) { - DragSource dragSource = new DragSource(table, DND.DROP_MOVE | DND.DROP_COPY); - dragSource.setTransfer(new Transfer[] { FileTransfer.getInstance() }); - dragSource.addDragListener(new DragSourceListener() { - TableItem[] dndSelection = null; - String[] sourceNames = null; - public void dragStart(DragSourceEvent event){ - dndSelection = table.getSelection(); - sourceNames = null; - event.doit = dndSelection.length > 0; - isDragging = true; - } - public void dragFinished(DragSourceEvent event){ - dragSourceHandleDragFinished(event, sourceNames); - dndSelection = null; - sourceNames = null; - isDragging = false; - handleDeferredRefresh(); - } - public void dragSetData(DragSourceEvent event){ - if (dndSelection == null || dndSelection.length == 0) return; - if (! FileTransfer.getInstance().isSupportedType(event.dataType)) return; - - sourceNames = new String[dndSelection.length]; - for (int i = 0; i < dndSelection.length; i++) { - File file = (File) dndSelection[i].getData(TABLEITEMDATA_FILE); - sourceNames[i] = file.getAbsolutePath(); - } - event.data = sourceNames; - } - }); - return dragSource; - } - - /** - * Creates the Drag & Drop DropTarget for items being dropped onto the table. - * - * @return the DropTarget for the table - */ - private DropTarget createTableDropTarget(final Table table){ - DropTarget dropTarget = new DropTarget(table, DND.DROP_MOVE | DND.DROP_COPY); - dropTarget.setTransfer(new Transfer[] { FileTransfer.getInstance() }); - dropTarget.addDropListener(new DropTargetAdapter() { - public void dragEnter(DropTargetEvent event) { - isDropping = true; - } - public void dragLeave(DropTargetEvent event) { - isDropping = false; - handleDeferredRefresh(); - } - public void dragOver(DropTargetEvent event) { - dropTargetValidate(event, getTargetFile(event)); - event.feedback |= DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL; - } - public void drop(DropTargetEvent event) { - File targetFile = getTargetFile(event); - if (dropTargetValidate(event, targetFile)) - dropTargetHandleDrop(event, targetFile); - } - private File getTargetFile(DropTargetEvent event) { - // Determine the target File for the drop - TableItem item = table.getItem(table.toControl(new Point(event.x, event.y))); - File targetFile = null; - if (item == null) { - // We are over an unoccupied area of the table. - // If it is a COPY, we can use the table's root file. - if (event.detail == DND.DROP_COPY) { - targetFile = (File) table.getData(TABLEDATA_DIR); - } - } else { - // We are over a particular item in the table, use the item's file - targetFile = (File) item.getData(TABLEITEMDATA_FILE); - } - return targetFile; - } - }); - return dropTarget; - } - - /** - * Notifies the application components that a new current directory has been selected - * - * @param dir the directory that was selected, null is ignored - */ - void notifySelectedDirectory(File dir) { - if (dir == null) return; - if (currentDirectory != null && dir.equals(currentDirectory)) return; - currentDirectory = dir; - notifySelectedFiles(null); - - /* Shell: - * Sets the title to indicate the selected directory - */ - shell.setText(getResourceString("Title", new Object[] { currentDirectory.getPath() })); - - /* Table view: - * Displays the contents of the selected directory. - */ - workerUpdate(dir, false); - - /* Combo view: - * Sets the combo box to point to the selected directory. - */ - final File[] comboRoots = (File[]) combo.getData(COMBODATA_ROOTS); - int comboEntry = -1; - if (comboRoots != null) { - for (int i = 0; i < comboRoots.length; ++i) { - if (dir.equals(comboRoots[i])) { - comboEntry = i; - break; - } - } - } - if (comboEntry == -1) combo.setText(dir.getPath()); - else combo.select(comboEntry); - - /* Tree view: - * If not already expanded, recursively expands the parents of the specified - * directory until it is visible. - */ - Vector /* of File */ path = new Vector(); - // Build a stack of paths from the root of the tree - while (dir != null) { - path.add(dir); - dir = dir.getParentFile(); - } - // Recursively expand the tree to get to the specified directory - TreeItem[] items = tree.getItems(); - TreeItem lastItem = null; - for (int i = path.size() - 1; i >= 0; --i) { - final File pathElement = (File) path.elementAt(i); - - // Search for a particular File in the array of tree items - // No guarantee that the items are sorted in any recognizable fashion, so we'll - // just sequential scan. There shouldn't be more than a few thousand entries. - TreeItem item = null; - for (int k = 0; k < items.length; ++k) { - item = items[k]; - if (item.isDisposed()) continue; - final File itemFile = (File) item.getData(TREEITEMDATA_FILE); - if (itemFile != null && itemFile.equals(pathElement)) break; - } - if (item == null) break; - lastItem = item; - if (i != 0 && !item.getExpanded()) { - treeExpandItem(item); - item.setExpanded(true); - } - items = item.getItems(); - } - tree.setSelection((lastItem != null) ? new TreeItem[] { lastItem } : new TreeItem[0]); - } - - /** - * Notifies the application components that files have been selected - * - * @param files the files that were selected, null or empty array indicates no active selection - */ - void notifySelectedFiles(File[] files) { - /* Details: - * Update the details that are visible on screen. - */ - if ((files != null) && (files.length != 0)) { - numObjectsLabel.setText(getResourceString("details.NumberOfSelectedFiles.text", - new Object[] { new Integer(files.length) })); - long fileSize = 0L; - for (int i = 0; i < files.length; ++i) { - fileSize += files[i].length(); - } - diskSpaceLabel.setText(getResourceString("details.FileSize.text", - new Object[] { new Long(fileSize) })); - } else { - // No files selected - diskSpaceLabel.setText(""); - if (currentDirectory != null) { - int numObjects = getDirectoryList(currentDirectory).length; - numObjectsLabel.setText(getResourceString("details.DirNumberOfObjects.text", - new Object[] { new Integer(numObjects) })); - } else { - numObjectsLabel.setText(""); - } - } - } - - /** - * Notifies the application components that files must be refreshed - * - * @param files the files that need refreshing, empty array is a no-op, null refreshes all - */ - void notifyRefreshFiles(File[] files) { - if (files != null && files.length == 0) return; - - if ((deferredRefreshRequested) && (deferredRefreshFiles != null) && (files != null)) { - // merge requests - File[] newRequest = new File[deferredRefreshFiles.length + files.length]; - System.arraycopy(deferredRefreshFiles, 0, newRequest, 0, deferredRefreshFiles.length); - System.arraycopy(files, 0, newRequest, deferredRefreshFiles.length, files.length); - deferredRefreshFiles = newRequest; - } else { - deferredRefreshFiles = files; - deferredRefreshRequested = true; - } - handleDeferredRefresh(); - } - - /** - * Handles deferred Refresh notifications (due to Drag & Drop) - */ - void handleDeferredRefresh() { - if (isDragging || isDropping || ! deferredRefreshRequested) return; - if (progressDialog != null) { - progressDialog.close(); - progressDialog = null; - } - - deferredRefreshRequested = false; - File[] files = deferredRefreshFiles; - deferredRefreshFiles = null; - - shell.setCursor(iconCache.stockCursors[iconCache.cursorWait]); - - /* Table view: - * Refreshes information about any files in the list and their children. - */ - boolean refreshTable = false; - if (files != null) { - for (int i = 0; i < files.length; ++i) { - final File file = files[i]; - if (file.equals(currentDirectory)) { - refreshTable = true; - break; - } - File parentFile = file.getParentFile(); - if ((parentFile != null) && (parentFile.equals(currentDirectory))) { - refreshTable = true; - break; - } - } - } else refreshTable = true; - if (refreshTable) workerUpdate(currentDirectory, true); - - /* Combo view: - * Refreshes the list of roots - */ - final File[] roots = getRoots(); - - if (files == null) { - boolean refreshCombo = false; - final File[] comboRoots = (File[]) combo.getData(COMBODATA_ROOTS); - - if ((comboRoots != null) && (comboRoots.length == roots.length)) { - for (int i = 0; i < roots.length; ++i) { - if (! roots[i].equals(comboRoots[i])) { - refreshCombo = true; - break; - } - } - } else refreshCombo = true; - - if (refreshCombo) { - combo.removeAll(); - combo.setData(COMBODATA_ROOTS, roots); - for (int i = 0; i < roots.length; ++i) { - final File file = roots[i]; - combo.add(file.getPath()); - } - } - } - - /* Tree view: - * Refreshes information about any files in the list and their children. - */ - treeRefresh(roots); - - // Remind everyone where we are in the filesystem - final File dir = currentDirectory; - currentDirectory = null; - notifySelectedDirectory(dir); - - shell.setCursor(iconCache.stockCursors[iconCache.cursorDefault]); - } - - /** - * Performs the default action on a set of files. - * - * @param files the array of files to process - */ - void doDefaultFileAction(File[] files) { - // only uses the 1st file (for now) - if (files.length == 0) return; - final File file = files[0]; - - if (file.isDirectory()) { - notifySelectedDirectory(file); - } else { - final String fileName = file.getAbsolutePath(); - if (! Program.launch(fileName)) { - MessageBox dialog = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK); - dialog.setMessage(getResourceString("error.FailedLaunch.message", new Object[] { fileName })); - dialog.setText(shell.getText ()); - dialog.open(); - } - } - } - - /** - * Navigates to the parent directory - */ - void doParent() { - if (currentDirectory == null) return; - File parentDirectory = currentDirectory.getParentFile(); - notifySelectedDirectory(parentDirectory); - } - - /** - * Performs a refresh - */ - void doRefresh() { - notifyRefreshFiles(null); - } - - /** - * Validates a drop target as a candidate for a drop operation. - * <p> - * Used in dragOver() and dropAccept().<br> - * Note event.detail is set to DND.DROP_NONE by this method if the target is not valid. - * </p> - * @param event the DropTargetEvent to validate - * @param targetFile the File representing the drop target location - * under inspection, or null if none - */ - private boolean dropTargetValidate(DropTargetEvent event, File targetFile) { - if (targetFile != null && targetFile.isDirectory()) { - if (event.detail != DND.DROP_COPY && event.detail != DND.DROP_MOVE) { - event.detail = DND.DROP_MOVE; - } - } else { - event.detail = DND.DROP_NONE; - } - return event.detail != DND.DROP_NONE; - } - - /** - * Handles a drop on a dropTarget. - * <p> - * Used in drop().<br> - * Note event.detail is modified by this method. - * </p> - * @param event the DropTargetEvent passed as parameter to the drop() method - * @param targetFile the File representing the drop target location - * under inspection, or null if none - */ - private void dropTargetHandleDrop(DropTargetEvent event, File targetFile) { - // Get dropped data (an array of filenames) - if (! dropTargetValidate(event, targetFile)) return; - final String[] sourceNames = (String[]) event.data; - if (sourceNames == null) event.detail = DND.DROP_NONE; - if (event.detail == DND.DROP_NONE) return; - - // Open progress dialog - progressDialog = new ProgressDialog(shell, - (event.detail == DND.DROP_MOVE) ? ProgressDialog.MOVE : ProgressDialog.COPY); - progressDialog.setTotalWorkUnits(sourceNames.length); - progressDialog.open(); - - // Copy each file - Vector /* of File */ processedFiles = new Vector(); - for (int i = 0; (i < sourceNames.length) && (! progressDialog.isCancelled()); i++){ - final File source = new File(sourceNames[i]); - final File dest = new File(targetFile, source.getName()); - if (source.equals(dest)) continue; // ignore if in same location - - progressDialog.setDetailFile(source, ProgressDialog.COPY); - while (! progressDialog.isCancelled()) { - if (copyFileStructure(source, dest)) { - processedFiles.add(source); - break; - } else if (! progressDialog.isCancelled()) { - if (event.detail == DND.DROP_MOVE && (!isDragging)) { - // It is not possible to notify an external drag source that a drop - // operation was only partially successful. This is particularly a - // problem for DROP_MOVE operations since unless the source gets - // DROP_NONE, it will delete the original data including bits that - // may not have been transferred successfully. - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.RETRY | SWT.CANCEL); - box.setText(getResourceString("dialog.FailedCopy.title")); - box.setMessage(getResourceString("dialog.FailedCopy.description", - new Object[] { source, dest })); - int button = box.open(); - if (button == SWT.CANCEL) { - i = sourceNames.length; - event.detail = DND.DROP_NONE; - break; - } - } else { - // We can recover gracefully from errors if the drag source belongs - // to this application since it will look at processedDropFiles. - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.ABORT | SWT.RETRY | SWT.IGNORE); - box.setText(getResourceString("dialog.FailedCopy.title")); - box.setMessage(getResourceString("dialog.FailedCopy.description", - new Object[] { source, dest })); - int button = box.open(); - if (button == SWT.ABORT) i = sourceNames.length; - if (button != SWT.RETRY) break; - } - } - progressDialog.addProgress(1); - } - } - if (isDragging) { - // Remember exactly which files we processed - processedDropFiles = ((File[]) processedFiles.toArray(new File[processedFiles.size()])); - } else { - progressDialog.close(); - progressDialog = null; - } - notifyRefreshFiles(new File[] { targetFile }); - } - - /** - * Handles the completion of a drag on a dragSource. - * <p> - * Used in dragFinished().<br> - * </p> - * @param event the DragSourceEvent passed as parameter to the dragFinished() method - * @param sourceNames the names of the files that were dragged (event.data is invalid) - */ - private void dragSourceHandleDragFinished(DragSourceEvent event, String[] sourceNames) { - if (sourceNames == null) return; - if (event.detail != DND.DROP_MOVE) return; - - // Get array of files that were actually transferred - final File[] sourceFiles; - if (processedDropFiles != null) { - sourceFiles = processedDropFiles; - } else { - sourceFiles = new File[sourceNames.length]; - for (int i = 0; i < sourceNames.length; ++i) - sourceFiles[i] = new File(sourceNames[i]); - } - if (progressDialog == null) - progressDialog = new ProgressDialog(shell, ProgressDialog.MOVE); - progressDialog.setTotalWorkUnits(sourceFiles.length); - progressDialog.setProgress(0); - progressDialog.open(); - - // Delete each file - for (int i = 0; (i < sourceFiles.length) && (! progressDialog.isCancelled()); i++){ - final File source = sourceFiles[i]; - progressDialog.setDetailFile(source, ProgressDialog.DELETE); - while (! progressDialog.isCancelled()) { - if (deleteFileStructure(source)) { - break; - } else if (! progressDialog.isCancelled()) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.ABORT | SWT.RETRY | SWT.IGNORE); - box.setText(getResourceString("dialog.FailedDelete.title")); - box.setMessage(getResourceString("dialog.FailedDelete.description", - new Object[] { source })); - int button = box.open(); - if (button == SWT.ABORT) i = sourceNames.length; - if (button == SWT.RETRY) break; - } - } - progressDialog.addProgress(1); - } - notifyRefreshFiles(sourceFiles); - progressDialog.close(); - progressDialog = null; - } - - /** - * Gets filesystem root entries - * - * @return an array of Files corresponding to the root directories on the platform, - * may be empty but not null - */ - File[] getRoots() { - /* - * On JDK 1.22 only... - */ - // return File.listRoots(); - - /* - * On JDK 1.1.7 and beyond... - * -- PORTABILITY ISSUES HERE -- - */ - if (System.getProperty ("os.name").indexOf ("Windows") != -1) { - Vector /* of File */ list = new Vector(); - list.add(new File(DRIVE_A)); - list.add(new File(DRIVE_B)); - for (char i = 'c'; i <= 'z'; ++i) { - File drive = new File(i + ":" + File.separator); - if (drive.isDirectory() && drive.exists()) { - list.add(drive); - if (initial && i == 'c') { - currentDirectory = drive; - initial = false; - } - } - } - File[] roots = (File[]) list.toArray(new File[list.size()]); - sortFiles(roots); - return roots; - } - File root = new File(File.separator); - if (initial) { - currentDirectory = root; - initial = false; - } - return new File[] { root }; - } - - /** - * Gets a directory listing - * - * @param file the directory to be listed - * @return an array of files this directory contains, may be empty but not null - */ - static File[] getDirectoryList(File file) { - File[] list = file.listFiles(); - if (list == null) return new File[0]; - sortFiles(list); - return list; - } - - /** - * Copies a file or entire directory structure. - * - * @param oldFile the location of the old file or directory - * @param newFile the location of the new file or directory - * @return true iff the operation succeeds without errors - */ - boolean copyFileStructure(File oldFile, File newFile) { - if (oldFile == null || newFile == null) return false; - - // ensure that newFile is not a child of oldFile or a dupe - File searchFile = newFile; - do { - if (oldFile.equals(searchFile)) return false; - searchFile = searchFile.getParentFile(); - } while (searchFile != null); - - if (oldFile.isDirectory()) { - /* - * Copy a directory - */ - if (progressDialog != null) { - progressDialog.setDetailFile(oldFile, ProgressDialog.COPY); - } - if (simulateOnly) { - //System.out.println(getResourceString("simulate.DirectoriesCreated.text", - // new Object[] { newFile.getPath() })); - } else { - if (! newFile.mkdirs()) return false; - } - File[] subFiles = oldFile.listFiles(); - if (subFiles != null) { - if (progressDialog != null) { - progressDialog.addWorkUnits(subFiles.length); - } - for (int i = 0; i < subFiles.length; i++) { - File oldSubFile = subFiles[i]; - File newSubFile = new File(newFile, oldSubFile.getName()); - if (! copyFileStructure(oldSubFile, newSubFile)) return false; - if (progressDialog != null) { - progressDialog.addProgress(1); - if (progressDialog.isCancelled()) return false; - } - } - } - } else { - /* - * Copy a file - */ - if (simulateOnly) { - //System.out.println(getResourceString("simulate.CopyFromTo.text", - // new Object[] { oldFile.getPath(), newFile.getPath() })); - } else { - FileReader in = null; - FileWriter out = null; - try { - in = new FileReader(oldFile); - out = new FileWriter(newFile); - - int count; - while ((count = in.read()) != -1) out.write(count); - } catch (FileNotFoundException e) { - return false; - } catch (IOException e) { - return false; - } finally { - try { - if (in != null) in.close(); - if (out != null) out.close(); - } catch (IOException e) { - return false; - } - } - } - } - return true; - } - - /** - * Deletes a file or entire directory structure. - * - * @param oldFile the location of the old file or directory - * @return true iff the operation succeeds without errors - */ - boolean deleteFileStructure(File oldFile) { - if (oldFile == null) return false; - if (oldFile.isDirectory()) { - /* - * Delete a directory - */ - if (progressDialog != null) { - progressDialog.setDetailFile(oldFile, ProgressDialog.DELETE); - } - File[] subFiles = oldFile.listFiles(); - if (subFiles != null) { - if (progressDialog != null) { - progressDialog.addWorkUnits(subFiles.length); - } - for (int i = 0; i < subFiles.length; i++) { - File oldSubFile = subFiles[i]; - if (! deleteFileStructure(oldSubFile)) return false; - if (progressDialog != null) { - progressDialog.addProgress(1); - if (progressDialog.isCancelled()) return false; - } - } - } - } - if (simulateOnly) { - //System.out.println(getResourceString("simulate.Delete.text", - // new Object[] { oldFile.getPath(), oldFile.getPath() })); - return true; - } - return oldFile.delete(); - } - - /** - * Sorts files lexicographically by name. - * - * @param files the array of Files to be sorted - */ - static void sortFiles(File[] files) { - /* Very lazy merge sort algorithm */ - sortBlock(files, 0, files.length - 1, new File[files.length]); - } - private static void sortBlock(File[] files, int start, int end, File[] mergeTemp) { - final int length = end - start + 1; - if (length < 8) { - for (int i = end; i > start; --i) { - for (int j = end; j > start; --j) { - if (compareFiles(files[j - 1], files[j]) > 0) { - final File temp = files[j]; - files[j] = files[j-1]; - files[j-1] = temp; - } - } - } - return; - } - final int mid = (start + end) / 2; - sortBlock(files, start, mid, mergeTemp); - sortBlock(files, mid + 1, end, mergeTemp); - int x = start; - int y = mid + 1; - for (int i = 0; i < length; ++i) { - if ((x > mid) || ((y <= end) && compareFiles(files[x], files[y]) > 0)) { - mergeTemp[i] = files[y++]; - } else { - mergeTemp[i] = files[x++]; - } - } - for (int i = 0; i < length; ++i) files[i + start] = mergeTemp[i]; - } - private static int compareFiles(File a, File b) { -// boolean aIsDir = a.isDirectory(); -// boolean bIsDir = b.isDirectory(); -// if (aIsDir && ! bIsDir) return -1; -// if (bIsDir && ! aIsDir) return 1; - - // sort case-sensitive files in a case-insensitive manner - int compare = a.getName().compareToIgnoreCase(b.getName()); - if (compare == 0) compare = a.getName().compareTo(b.getName()); - return compare; - } - - /* - * This worker updates the table with file information in the background. - * <p> - * Implementation notes: - * <ul> - * <li> It is designed such that it can be interrupted cleanly. - * <li> It uses asyncExec() in some places to ensure that SWT Widgets are manipulated in the - * right thread. Exclusive use of syncExec() would be inappropriate as it would require a pair - * of context switches between each table update operation. - * </ul> - * </p> - */ - - /** - * Stops the worker and waits for it to terminate. - */ - void workerStop() { - if (workerThread == null) return; - synchronized(workerLock) { - workerCancelled = true; - workerStopped = true; - workerLock.notifyAll(); - } - while (workerThread != null) { - if (! display.readAndDispatch()) display.sleep(); - } - } - - /** - * Notifies the worker that it should update itself with new data. - * Cancels any previous operation and begins a new one. - * - * @param dir the new base directory for the table, null is ignored - * @param force if true causes a refresh even if the data is the same - */ - void workerUpdate(File dir, boolean force) { - if (dir == null) return; - if ((!force) && (workerNextDir != null) && (workerNextDir.equals(dir))) return; - - synchronized(workerLock) { - workerNextDir = dir; - workerStopped = false; - workerCancelled = true; - workerLock.notifyAll(); - } - if (workerThread == null) { - workerThread = new Thread(workerRunnable); - workerThread.start(); - } - } - - /** - * Manages the worker's thread - */ - private final Runnable workerRunnable = new Runnable() { - public void run() { - while (! workerStopped) { - synchronized(workerLock) { - workerCancelled = false; - workerStateDir = workerNextDir; - } - workerExecute(); - synchronized(workerLock) { - try { - if ((!workerCancelled) && (workerStateDir == workerNextDir)) workerLock.wait(); - } catch (InterruptedException e) { - } - } - } - workerThread = null; - // wake up UI thread in case it is in a modal loop awaiting thread termination - // (see workerStop()) - display.wake(); - } - }; - - /** - * Updates the table's contents - */ - private void workerExecute() { - File[] dirList; - // Clear existing information - display.syncExec(new Runnable() { - public void run() { - tableContentsOfLabel.setText(FileViewer.getResourceString("details.ContentsOf.text", - new Object[] { workerStateDir.getPath() })); - table.removeAll(); - table.setData(TABLEDATA_DIR, workerStateDir); - } - }); - dirList = getDirectoryList(workerStateDir); - - for (int i = 0; (! workerCancelled) && (i < dirList.length); i++) { - workerAddFileDetails(dirList[i]); - } - - } - - /** - * Adds a file's detail information to the directory list - */ - private void workerAddFileDetails(final File file) { - final String nameString = file.getName(); - final String dateString = dateFormat.format(new Date(file.lastModified())); - final String sizeString; - final String typeString; - final Image iconImage; - - if (file.isDirectory()) { - typeString = getResourceString("filetype.Folder"); - sizeString = ""; - iconImage = iconCache.stockImages[iconCache.iconClosedFolder]; - } else { - sizeString = getResourceString("filesize.KB", - new Object[] { new Long((file.length() + 512) / 1024) }); - - int dot = nameString.lastIndexOf('.'); - if (dot != -1) { - String extension = nameString.substring(dot); - Program program = Program.findProgram(extension); - if (program != null) { - typeString = program.getName(); - iconImage = iconCache.getIconFromProgram(program); - } else { - typeString = getResourceString("filetype.Unknown", new Object[] { extension.toUpperCase() }); - iconImage = iconCache.stockImages[iconCache.iconFile]; - } - } else { - typeString = getResourceString("filetype.None"); - iconImage = iconCache.stockImages[iconCache.iconFile]; - } - } - final String[] strings = new String[] { nameString, sizeString, typeString, dateString }; - - display.syncExec(new Runnable() { - public void run () { - // guard against the shell being closed before this runs - if (shell.isDisposed()) return; - TableItem tableItem = new TableItem(table, 0); - tableItem.setText(strings); - tableItem.setImage(iconImage); - tableItem.setData(TABLEITEMDATA_FILE, file); - } - }); - } - - /** - * Instances of this class manage a progress dialog for file operations. - */ - class ProgressDialog { - public final static int COPY = 0; - public final static int DELETE = 1; - public final static int MOVE = 2; - - Shell shell; - Label messageLabel, detailLabel; - ProgressBar progressBar; - Button cancelButton; - boolean isCancelled = false; - - final String operationKeyName[] = { - "Copy", - "Delete", - "Move" - }; - - /** - * Creates a progress dialog but does not open it immediately. - * - * @param parent the parent Shell - * @param style one of COPY, MOVE - */ - public ProgressDialog(Shell parent, int style) { - shell = new Shell(parent, SWT.BORDER | SWT.TITLE | SWT.APPLICATION_MODAL); - GridLayout gridLayout = new GridLayout(); - shell.setLayout(gridLayout); - shell.setText(getResourceString("progressDialog." + operationKeyName[style] + ".title")); - shell.addShellListener(new ShellAdapter() { - public void shellClosed(ShellEvent e) { - isCancelled = true; - } - }); - - messageLabel = new Label(shell, SWT.HORIZONTAL); - messageLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL)); - messageLabel.setText(getResourceString("progressDialog." + operationKeyName[style] + ".description")); - - progressBar = new ProgressBar(shell, SWT.HORIZONTAL | SWT.WRAP); - progressBar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL)); - progressBar.setMinimum(0); - progressBar.setMaximum(0); - - detailLabel = new Label(shell, SWT.HORIZONTAL); - GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); - gridData.widthHint = 400; - detailLabel.setLayoutData(gridData); - - cancelButton = new Button(shell, SWT.PUSH); - cancelButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_FILL)); - cancelButton.setText(getResourceString("progressDialog.cancelButton.text")); - cancelButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - isCancelled = true; - cancelButton.setEnabled(false); - } - }); - } - /** - * Sets the detail text to show the filename along with a string - * representing the operation being performed on that file. - * - * @param file the file to be detailed - * @param operation one of COPY, DELETE - */ - public void setDetailFile(File file, int operation) { - detailLabel.setText(getResourceString("progressDialog." + operationKeyName[operation] + ".operation", - new Object[] { file })); - } - /** - * Returns true if the Cancel button was been clicked. - * - * @return true if the Cancel button was clicked. - */ - public boolean isCancelled() { - return isCancelled; - } - /** - * Sets the total number of work units to be performed. - * - * @param work the total number of work units - */ - public void setTotalWorkUnits(int work) { - progressBar.setMaximum(work); - } - /** - * Adds to the total number of work units to be performed. - * - * @param work the number of work units to add - */ - public void addWorkUnits(int work) { - setTotalWorkUnits(progressBar.getMaximum() + work); - } - /** - * Sets the progress of completion of the total work units. - * - * @param work the total number of work units completed - */ - public void setProgress(int work) { - progressBar.setSelection(work); - while (display.readAndDispatch()) {} // enable event processing - } - /** - * Adds to the progress of completion of the total work units. - * - * @param work the number of work units completed to add - */ - public void addProgress(int work) { - setProgress(progressBar.getSelection() + work); - } - /** - * Opens the dialog. - */ - public void open() { - shell.pack(); - final Shell parentShell = (Shell) shell.getParent(); - Rectangle rect = parentShell.getBounds(); - Rectangle bounds = shell.getBounds(); - bounds.x = rect.x + (rect.width - bounds.width) / 2; - bounds.y = rect.y + (rect.height - bounds.height) / 2; - shell.setBounds(bounds); - shell.open(); - } - /** - * Closes the dialog and disposes its resources. - */ - public void close() { - shell.close(); - shell.dispose(); - shell = null; - messageLabel = null; - detailLabel = null; - progressBar = null; - cancelButton = null; - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/IconCache.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/IconCache.java deleted file mode 100755 index 914dc96098..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/IconCache.java +++ /dev/null @@ -1,161 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.fileviewer; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.program.*; -import org.eclipse.swt.widgets.*; - -import java.io.*; -import java.util.*; - -/** - * Manages icons for the application. - * This is necessary as we could easily end up creating thousands of icons - * bearing the same image. - */ -class IconCache { - // Stock images - public final int - shellIcon = 0, - iconClosedDrive = 1, - iconClosedFolder = 2, - iconFile = 3, - iconOpenDrive = 4, - iconOpenFolder = 5, - cmdCopy = 6, - cmdCut = 7, - cmdDelete = 8, - cmdParent = 9, - cmdPaste = 10, - cmdPrint = 11, - cmdRefresh = 12, - cmdRename = 13, - cmdSearch = 14; - public final String[] stockImageLocations = { - "generic_example.gif", - "icon_ClosedDrive.gif", - "icon_ClosedFolder.gif", - "icon_File.gif", - "icon_OpenDrive.gif", - "icon_OpenFolder.gif", - "cmd_Copy.gif", - "cmd_Cut.gif", - "cmd_Delete.gif", - "cmd_Parent.gif", - "cmd_Paste.gif", - "cmd_Print.gif", - "cmd_Refresh.gif", - "cmd_Rename.gif", - "cmd_Search.gif" - }; - public Image stockImages[]; - - // Stock cursors - public final int - cursorDefault = 0, - cursorWait = 1; - public Cursor stockCursors[]; - // Cached icons - private Hashtable iconCache; /* map Program to Image */ - - public IconCache() { - } - /** - * Loads the resources - * - * @param display the display - */ - public void initResources(Display display) { - if (stockImages == null) { - stockImages = new Image[stockImageLocations.length]; - - for (int i = 0; i < stockImageLocations.length; ++i) { - Image image = createStockImage(display, stockImageLocations[i]); - if (image == null) { - freeResources(); - throw new IllegalStateException( - FileViewer.getResourceString("error.CouldNotLoadResources")); - } - stockImages[i] = image; - } - } - if (stockCursors == null) { - stockCursors = new Cursor[] { - null, - new Cursor(display, SWT.CURSOR_WAIT) - }; - } - iconCache = new Hashtable(); - } - /** - * Frees the resources - */ - public void freeResources() { - if (stockImages != null) { - for (int i = 0; i < stockImages.length; ++i) { - final Image image = stockImages[i]; - if (image != null) image.dispose(); - } - stockImages = null; - } - if (iconCache != null) { - for (Enumeration it = iconCache.elements(); it.hasMoreElements(); ) { - Image image = (Image) it.nextElement(); - image.dispose(); - } - } - if (stockCursors != null) { - for (int i = 0; i < stockCursors.length; ++i) { - final Cursor cursor = stockCursors[i]; - if (cursor != null) cursor.dispose(); - } - stockCursors = null; - } - } - /** - * Creates a stock image - * - * @param display the display - * @param path the relative path to the icon - */ - private Image createStockImage(Display display, String path) { - InputStream stream = IconCache.class.getResourceAsStream (path); - ImageData imageData = new ImageData (stream); - ImageData mask = imageData.getTransparencyMask (); - Image result = new Image (display, imageData, mask); - try { - stream.close (); - } catch (IOException e) { - e.printStackTrace (); - } - return result; - } - /** - * Gets an image for a file associated with a given program - * - * @param program the Program - */ - public Image getIconFromProgram(Program program) { - Image image = (Image) iconCache.get(program); - if (image == null) { - ImageData imageData = program.getImageData(); - if (imageData != null) { - image = new Image(null, imageData, imageData.getTransparencyMask()); - iconCache.put(program, image); - } else { - image = stockImages[iconFile]; - } - } - return image; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Copy.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Copy.gif Binary files differdeleted file mode 100755 index 4274b070ac..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Copy.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Cut.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Cut.gif Binary files differdeleted file mode 100755 index eb948b94b0..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Cut.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Delete.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Delete.gif Binary files differdeleted file mode 100755 index 6f647666d3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Delete.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Parent.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Parent.gif Binary files differdeleted file mode 100755 index 9b278e6fa8..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Parent.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Paste.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Paste.gif Binary files differdeleted file mode 100755 index 75e0ab2352..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Paste.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Print.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Print.gif Binary files differdeleted file mode 100755 index 4dfa8cd3fa..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Print.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Refresh.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Refresh.gif Binary files differdeleted file mode 100755 index a063c230ac..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Refresh.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Rename.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Rename.gif Binary files differdeleted file mode 100755 index 25b1325e52..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Rename.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Search.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Search.gif Binary files differdeleted file mode 100755 index 6dc3ebefc9..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/cmd_Search.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/generic_example.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/generic_example.gif Binary files differdeleted file mode 100755 index f9fb6b0cab..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/generic_example.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_ClosedDrive.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_ClosedDrive.gif Binary files differdeleted file mode 100755 index 04e530e37c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_ClosedDrive.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_ClosedFolder.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_ClosedFolder.gif Binary files differdeleted file mode 100755 index beb6ed134c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_ClosedFolder.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_File.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_File.gif Binary files differdeleted file mode 100755 index 6b86d07978..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_File.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_OpenDrive.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_OpenDrive.gif Binary files differdeleted file mode 100755 index 7b2b6334ca..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_OpenDrive.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_OpenFolder.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_OpenFolder.gif Binary files differdeleted file mode 100755 index a9c777343c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/fileviewer/icon_OpenFolder.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AdvancedGraphics.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AdvancedGraphics.java deleted file mode 100644 index 81ab1c1e9c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AdvancedGraphics.java +++ /dev/null @@ -1,104 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -/* - * Drawing with transformations, paths and alpha blending - * - * For a list of all SWT example snippets see - * http://www.eclipse.org/swt/snippets/ - */ -import java.io.*; -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -public class AdvancedGraphics { - - private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("examples_graphics"); - - static Image loadImage (Device device, Class clazz, String string) { - InputStream stream = clazz.getResourceAsStream (string); - if (stream == null) return null; - Image image = null; - try { - image = new Image (device, stream); - } catch (SWTException ex) { - } finally { - try { - stream.close (); - } catch (IOException ex) {} - } - return image; - } - - public Shell open(final Display display) { - final Shell shell = new Shell(display); - shell.setText(RESOURCE_BUNDLE.getString("AdvancedGraphics")); //$NON-NLS-1$ - try { - Path path = new Path(display); - path.dispose(); - } catch (SWTException e) { - MessageBox dialog = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK); - dialog.setText(RESOURCE_BUNDLE.getString("Warning")); //$NON-NLS-1$ - dialog.setMessage(RESOURCE_BUNDLE.getString("LibNotFound")); //$NON-NLS-1$ - dialog.open(); - shell.dispose(); - return null; - } - FontData fd = shell.getFont().getFontData()[0]; - final Font font = new Font(display, fd.getName(), 96, SWT.BOLD | SWT.ITALIC); - final Image image = loadImage(display, AdvancedGraphics.class, "irmaos.jpg"); - final Rectangle rect = image.getBounds(); - shell.addListener(SWT.Paint, new Listener() { - public void handleEvent(Event event) { - GC gc = event.gc; - Transform tr = new Transform(display); - tr.translate(rect.width / 4, rect.height / 2); - tr.rotate(-30); - if (image != null) { - gc.drawImage(image, 0, 0, rect.width, rect.height, 0, 0, rect.width, rect.height); - } - gc.setAlpha(100); - gc.setTransform(tr); - Path path = new Path(display); - path.addString("SWT", 0, 0, font); - gc.setBackground(display.getSystemColor(SWT.COLOR_GREEN)); - gc.setForeground(display.getSystemColor(SWT.COLOR_BLUE)); - gc.fillPath(path); - gc.drawPath(path); - tr.dispose(); - path.dispose(); - } - }); - shell.setSize(shell.computeSize(rect.width, rect.height)); - shell.open(); - shell.addListener(SWT.Dispose, new Listener() { - public void handleEvent(Event event) { - if (image != null) image.dispose(); - font.dispose(); - } - }); - return shell; - } - - public static void main(String[] args) { - Display display = new Display(); - Shell shell = new AdvancedGraphics().open(display); - while (shell != null && !shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - display.dispose(); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AlphaTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AlphaTab.java deleted file mode 100644 index f2908ad1b9..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AlphaTab.java +++ /dev/null @@ -1,234 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * This tab demonstrates alpha blending. It draws various shapes and images as - * alpha values change. - */ -public class AlphaTab extends AnimatedGraphicsTab { - /** - * Value used in setAlpha API call. Goes from 0 to 255 and then starts over. - */ - int alphaValue; - - /** - * Value used in setAlpha API call. Goes from 0 to 255, then from 255 to 0 - * and then starts over. - */ - int alphaValue2; - - boolean reachedMax = false; - int diameter; - - /** random numbers used for positioning "SWT" */ - int randX, randY; - Image alphaImg1, alphaImg2; - - public AlphaTab(GraphicsExample example) { - super(example); - } - - public String getCategory() { - return GraphicsExample.getResourceString("Alpha"); //$NON-NLS-1$ - } - - public String getText() { - return GraphicsExample.getResourceString("Alpha"); //$NON-NLS-1$ - } - - public String getDescription() { - return GraphicsExample.getResourceString("AlphaDescription"); //$NON-NLS-1$ - } - - public int getInitialAnimationTime() { - return 20; - } - - public void dispose() { - if (alphaImg1 != null) { - alphaImg1.dispose(); - alphaImg1 = null; - } - if (alphaImg2 != null) { - alphaImg2.dispose(); - alphaImg2 = null; - } - } - - public void next(int width, int height) { - alphaValue = (alphaValue+5)%255; - - alphaValue2 = reachedMax ? alphaValue2 - 5 : alphaValue2 + 5; - - if (alphaValue2 == 255) { - reachedMax = true; - } else if (alphaValue2 == 0) { - reachedMax = false; - } - - diameter = (diameter + 10)%(width > height ? width : height); - } - - /** - * Paint the receiver into the specified GC. - */ - public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - if (alphaImg1 == null) { - alphaImg1 = GraphicsExample.loadImage(device, GraphicsExample.class, "alpha_img1.png"); - alphaImg2 = GraphicsExample.loadImage(device, GraphicsExample.class, "alpha_img2.png"); - } - - Rectangle rect = alphaImg1.getBounds(); - - gc.setAlpha(alphaValue); - gc.drawImage(alphaImg1, rect.x, rect.y, rect.width, rect.height, - width/2, height/2, width/4, height/4); - - gc.drawImage(alphaImg1, rect.x, rect.y, rect.width, rect.height, - 0, 0, width/4, height/4); - - gc.setAlpha(255-alphaValue); - gc.drawImage(alphaImg2, rect.x, rect.y, rect.width, rect.height, - width/2, 0, width/4, height/4); - - gc.drawImage(alphaImg2, rect.x, rect.y, rect.width, rect.height, - 0, 3*height/4, width/4, height/4); - - // pentagon - gc.setBackground(device.getSystemColor(SWT.COLOR_DARK_MAGENTA)); - gc.fillPolygon(new int [] {width/10, height/2, 3*width/10, height/2-width/6, 5*width/10, height/2, - 4*width/10, height/2+width/6, 2*width/10, height/2+width/6}); - - gc.setBackground(device.getSystemColor(SWT.COLOR_RED)); - - // square - gc.setAlpha(alphaValue); - gc.fillRectangle(width/2, height-75, 75, 75); - - // triangle - gc.setAlpha(alphaValue + 15); - gc.fillPolygon(new int[]{width/2+75, height-(2*75), width/2+75, height-75, width/2+(2*75), height-75}); - - // triangle - gc.setAlpha(alphaValue + 30); - gc.fillPolygon(new int[]{width/2+80, height-(2*75), width/2+(2*75), height-(2*75), width/2+(2*75), height-80}); - - // triangle - gc.setAlpha(alphaValue + 45); - gc.fillPolygon(new int[]{width/2+(2*75), height-(2*75), width/2+(3*75), height-(2*75), width/2+(3*75), height-(3*75)}); - - // triangle - gc.setAlpha(alphaValue + 60); - gc.fillPolygon(new int[]{width/2+(2*75), height-((2*75)+5), width/2+(2*75), height-(3*75), width/2+((3*75)-5), height-(3*75)}); - - // square - gc.setAlpha(alphaValue + 75); - gc.fillRectangle(width/2+(3*75), height-(4*75), 75, 75); - - gc.setBackground(device.getSystemColor(SWT.COLOR_GREEN)); - - // circle in top right corner - gc.setAlpha(alphaValue2); - gc.fillOval(width-100, 0, 100, 100); - - // triangle - gc.setAlpha(alphaValue + 90); - gc.fillPolygon(new int[]{width-300, 10, width-100, 10, width-275, 50}); - - // triangle - gc.setAlpha(alphaValue + 105); - gc.fillPolygon(new int[]{width-10, 100, width-10, 300, width-50, 275}); - - // quadrilateral shape - gc.setAlpha(alphaValue + 120); - gc.fillPolygon(new int[]{width-100, 100, width-200, 150, width-200, 200, width-150, 200}); - - // blue circles - gc.setBackground(device.getSystemColor(SWT.COLOR_BLUE)); - int size = 50; - int alpha = 20; - for (int i = 0; i < 10; i++) { - gc.setAlpha(alphaValue + alpha); - if (i % 2 > 0) { - gc.fillOval(width-((i+1)*size), height-size, size, size); - } else { - gc.fillOval(width-((i+1)*size), height-(3*size/2), size, size); - } - alpha = alpha + 20; - } - - // SWT string appearing randomly - gc.setAlpha(alphaValue2); - String text = GraphicsExample.getResourceString("SWT"); - Font font = createFont(device, 100, SWT.NONE); - gc.setFont(font); - - Point textSize = gc.stringExtent(text); - int textWidth = textSize.x; - int textHeight = textSize.y; - - if (alphaValue2 == 0){ - randX = (int)(width*Math.random()); - randY = (int)(height*Math.random()); - randX = (randX > textWidth) ? randX - textWidth : randX; - randY = (randY > textHeight) ? randY - textHeight : randY; - } - - gc.drawString(text, randX, randY, true); - font.dispose(); - - // gray donut - gc.setAlpha(100); - Path path = new Path(device); - path.addArc((width-diameter)/2, (height-diameter)/2, diameter, diameter, 0, 360); - path.close(); - path.addArc((width-diameter+25)/2, (height-diameter+25)/2, diameter-25, diameter-25, 0, 360); - path.close(); - gc.setBackground(device.getSystemColor(SWT.COLOR_GRAY)); - gc.fillPath(path); - gc.drawPath(path); - path.dispose(); - } - - /** - * Creates a font using the specified arguments and returns it. - * This method takes into account the resident platform. - * - * @param face - * The name of the font - * @param points - * The size of the font in point - * @param style - * The style to be applied to the font - */ - static Font createFont(Device device, int points, int style) { - if(SWT.getPlatform() == "win32") { - return new Font(device, "Verdana", points, style); - } else if (SWT.getPlatform() == "motif") { - return new Font(device, "Times", points, style); - } else if (SWT.getPlatform() == "gtk") { - return new Font(device, "Baekmuk Batang", points, style); - } else if (SWT.getPlatform() == "carbon") { - return new Font(device, "Verdana", points, style); - } else { // photon - return new Font(device, "Verdana", points, style); - } - } -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AnimatedGraphicsTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AnimatedGraphicsTab.java deleted file mode 100644 index 6c442f3d93..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/AnimatedGraphicsTab.java +++ /dev/null @@ -1,156 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This class extends the GraphicsTab class to create animated graphics. - * */ -public abstract class AnimatedGraphicsTab extends GraphicsTab { - - ToolBar toolBar; - ToolItem playItem, pauseItem; - Spinner timerSpinner; // to input the speed of the animation - private boolean animate; // flag that indicates whether or not to animate the graphic - - public AnimatedGraphicsTab(GraphicsExample example) { - super(example); - animate = true; - } - - /** - * Sets the layout of the composite to RowLayout and creates the toolbar. - * - * @see org.eclipse.swt.examples.graphics.GraphicsTab#createControlPanel(org.eclipse.swt.widgets.Composite) - */ - public void createControlPanel(Composite parent) { - - // setup layout - RowLayout layout = new RowLayout(); - layout.wrap = true; - layout.spacing = 8; - parent.setLayout(layout); - - createToolBar(parent); - } - - /** - * Creates the toolbar controls: play, pause and animation timer. - * - * @param parent A composite - */ - void createToolBar(final Composite parent) { - final Display display = parent.getDisplay(); - - toolBar = new ToolBar(parent, SWT.FLAT); - Listener toolBarListener = new Listener() { - public void handleEvent(Event event) { - switch (event.type) { - case SWT.Selection: { - if (event.widget == playItem) { - animate = true; - playItem.setEnabled(!animate); - pauseItem.setEnabled(animate); - } else if (event.widget == pauseItem) { - animate = false; - playItem.setEnabled(!animate); - pauseItem.setEnabled(animate); - } - } - break; - } - } - }; - - // play tool item - playItem = new ToolItem(toolBar, SWT.PUSH); - playItem.setText(GraphicsExample.getResourceString("Play")); //$NON-NLS-1$ - playItem.setImage(example.loadImage(display, "play.gif")); //$NON-NLS-1$ - playItem.addListener(SWT.Selection, toolBarListener); - - // pause tool item - pauseItem = new ToolItem(toolBar, SWT.PUSH); - pauseItem.setText(GraphicsExample.getResourceString("Pause")); //$NON-NLS-1$ - pauseItem.setImage(example.loadImage(display, "pause.gif")); //$NON-NLS-1$ - pauseItem.addListener(SWT.Selection, toolBarListener); - - // timer spinner - Composite comp = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(2, false); - comp.setLayout(gridLayout); - - Label label = new Label(comp, SWT.CENTER); - label.setText(GraphicsExample.getResourceString("Animation")); //$NON-NLS-1$ - timerSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - timerSpinner.setMaximum(1000); - - playItem.setEnabled(false); - animate = true; - - timerSpinner.setSelection(getInitialAnimationTime()); - } - - /** - * Answer whether the receiver's drawing should be double bufferer. - */ - public boolean getDoubleBuffered() { - return true; - } - - /** - * Gets the initial animation time to be used by the tab. Animation time: - * number of milliseconds between the current drawing and the next (the time - * interval between calls to the next method). Should be overridden to - * return a value that is more appropriate for the tab. - */ - public int getInitialAnimationTime() { - return 30; - } - - /** - * Gets the animation time that is selected in the spinner. Animation time: - * number of milliseconds between the current drawing and the next (the time - * interval between calls to the next method). Should be overridden to - * return a value that is more appropriate for the tab. - */ - public int getAnimationTime() { - return timerSpinner.getSelection(); - } - - /** - * Returns the true if the tab is currently animated; false otherwise. - */ - public boolean getAnimation() { - return animate; - } - - /** - * Causes the animation to stop or start. - * - * @param flag - * true starts the animation; false stops the animation. - */ - public void setAnimation(boolean flag) { - animate = flag; - playItem.setEnabled(!flag); - pauseItem.setEnabled(flag); - } - - /** - * Advance the animation. - */ - public abstract void next(int width, int height); - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/BallTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/BallTab.java deleted file mode 100644 index 404be718cb..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/BallTab.java +++ /dev/null @@ -1,159 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import java.util.LinkedList; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Device; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Path; -import org.eclipse.swt.graphics.Transform; - -/** - * This tab uses alpha blending to simulate "ghosting" of a ball in movement. - */ -public class BallTab extends AnimatedGraphicsTab { - - BallCollection[] bc; - - /** - * This inner class serves as a container for the data needed to display a - * collection of balls. - */ - static class BallCollection { - float x, y; // position of ball - float incX, incY; // values by which to move the ball - int ball_size; // size (diameter) of the ball - int capacity; // number of balls in the collection - LinkedList prevx, prevy; // collection of previous x and y positions - // of ball - Color[] colors; // colors used for this ball collection - - public BallCollection(float x, float y, float incX, float incY, - int ball_size, int capacity, Color[] colors) { - this.x = x; - this.y = y; - this.incX = incX; - this.incY = incY; - this.ball_size = ball_size; - this.capacity = capacity; - prevx = new LinkedList(); - prevy = new LinkedList(); - this.colors = colors; - } - } - - public void dispose() { - bc[0] = bc[1] = bc[2] = bc[3] = bc[4] = null; - } - - public BallTab(GraphicsExample example) { - super(example); - bc = new BallCollection[5]; - } - - public String getCategory() { - return GraphicsExample.getResourceString("Alpha"); //$NON-NLS-1$ - } - - public String getText() { - return GraphicsExample.getResourceString("Ball"); //$NON-NLS-1$ - } - - public String getDescription() { - return GraphicsExample.getResourceString("BallDescription"); //$NON-NLS-1$ - } - - public int getInitialAnimationTime() { - return 10; - } - - public void next(int width, int height) { - for (int i = 0; i < bc.length; i++) { - if (bc[i] == null) return; - if (bc[i].prevx.size() == 0) { - bc[i].prevx.addLast(new Float(bc[i].x)); - bc[i].prevy.addLast(new Float(bc[i].y)); - } else if (bc[i].prevx.size() == bc[i].capacity) { - bc[i].prevx.removeFirst(); - bc[i].prevy.removeFirst(); - } - - bc[i].x += bc[i].incX; - bc[i].y += bc[i].incY; - - float random = (float) Math.random(); - - // right - if (bc[i].x + bc[i].ball_size > width) { - bc[i].x = width - bc[i].ball_size; - bc[i].incX = random * -width / 16 - 1; - } - // left - if (bc[i].x < 0) { - bc[i].x = 0; - bc[i].incX = random * width / 16 + 1; - } - // bottom - if (bc[i].y + bc[i].ball_size > height) { - bc[i].y = (height - bc[i].ball_size) - 2; - bc[i].incY = random * -height / 16 - 1; - } - // top - if (bc[i].y < 0) { - bc[i].y = 0; - bc[i].incY = random * height / 16 + 1; - } - bc[i].prevx.addLast(new Float(bc[i].x)); - bc[i].prevy.addLast(new Float(bc[i].y)); - } - } - - public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - if (bc[0] == null) { - bc[0] = new BallCollection(0, 0, 5, 5, 20, 20, new Color[] { device - .getSystemColor(SWT.COLOR_GREEN) }); - bc[1] = new BallCollection(50, 300, 10, -5, 50, 10, - new Color[] { device.getSystemColor(SWT.COLOR_BLUE) }); - bc[2] = new BallCollection(250, 100, -5, 8, 25, 12, - new Color[] { device.getSystemColor(SWT.COLOR_RED) }); - bc[3] = new BallCollection(150, 400, 5, 8, 35, 14, - new Color[] { device.getSystemColor(SWT.COLOR_BLACK) }); - bc[4] = new BallCollection(100, 250, -5, -18, 100, 5, - new Color[] { device.getSystemColor(SWT.COLOR_MAGENTA) }); - } - - for (int j = 0; j < bc.length; j++) { - for (int i = 0; i < bc[j].prevx.size(); i++) { - Transform transform = new Transform(device); - transform.translate(((Float) bc[j].prevx.get(bc[j].prevx.size() - - (i + 1))).floatValue(), ((Float) bc[j].prevy - .get(bc[j].prevy.size() - (i + 1))).floatValue()); - gc.setTransform(transform); - transform.dispose(); - - Path path = new Path(device); - path.addArc(0, 0, bc[j].ball_size, bc[j].ball_size, 0, 360); - gc.setAlpha(255 - i * (255 / bc[j].capacity)); - gc.setBackground(bc[j].colors[0]); - gc.fillPath(path); - gc.drawPath(path); - path.dispose(); - } - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/BlackHoleTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/BlackHoleTab.java deleted file mode 100644 index 4401a30ba3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/BlackHoleTab.java +++ /dev/null @@ -1,42 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -public class BlackHoleTab extends AnimatedGraphicsTab { - - int size = 1; - -public BlackHoleTab(GraphicsExample example) { - super(example); -} - -public String getText() { - return GraphicsExample.getResourceString("BlackHole"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("BlackHoleDescription"); //$NON-NLS-1$ -} - -public void next(int width, int height) { - if (size > width * 3 / 2) size = 0; - else size += 10; -} - -public void paint(GC gc, int width, int height) { - Device device = gc.getDevice(); - gc.setBackground(device.getSystemColor(SWT.COLOR_BLACK)); - gc.fillOval((width - size) / 2, (height - size) / 2, size, size); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CardsTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CardsTab.java deleted file mode 100644 index acf547d9a1..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CardsTab.java +++ /dev/null @@ -1,179 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.graphics.*; - -/** - * This tab demonstrates various transformations, such as scaling, rotation, and - * translation. - */ -public class CardsTab extends AnimatedGraphicsTab { - - float movClubX, movClubY, movDiamondX, movDiamondY, movHeart, movSpade; - float inc_club = 5.0f; - float inc_diamond = 5.0f; - float inc_hearts = 5.0f; - float inc_spade = 5.0f; - float scale, scaleWidth; - int rotationAngle = 0; - float scaleArg = 0; - float heartScale = 0.5f; - float spadeScale = 0.333f; - int clubWidth, diamondWidth, heartWidth, spadeHeight; - - Image ace_club, ace_spade, ace_diamond, ace_hearts; - -/** - * Constructor - * @param example A GraphicsExample - */ -public CardsTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Transform"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Cards"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("CardsDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (ace_club != null) { - ace_club.dispose(); - ace_club = null; - ace_spade.dispose(); - ace_spade = null; - ace_diamond.dispose(); - ace_diamond = null; - ace_hearts.dispose(); - ace_hearts = null; - } -} -public void next(int width, int height) { - rotationAngle = (rotationAngle+10)%360; - - // scaleVal goes from 0 to 1, then 1 to 0, then starts over - scaleArg = (float)((scaleArg == 1) ? scaleArg - 0.1 : scaleArg + 0.1); - scale = (float)Math.cos(scaleArg); - - movClubX += inc_club; - movDiamondX += inc_diamond; - movHeart += inc_hearts; - movSpade += inc_spade; - - scaleWidth = (float) ((movClubY/height)*0.35 + 0.15); - movClubY = 2*height/5 * (float)Math.sin(0.01*movClubX - 90) + 2*height/5; - movDiamondY = 2*height/5 * (float)Math.cos(0.01*movDiamondX) + 2*height/5; - - if (movClubX + clubWidth*scaleWidth > width) { - movClubX = width - clubWidth*scaleWidth; - inc_club = -inc_club; - } - if (movClubX < 0) { - movClubX = 0; - inc_club = -inc_club; - } - if (movDiamondX + diamondWidth*scaleWidth > width) { - movDiamondX = width - diamondWidth*scaleWidth; - inc_diamond = -inc_diamond; - } - if (movDiamondX < 0) { - movDiamondX = 0; - inc_diamond = -inc_diamond; - } - if (movHeart + heartWidth*heartScale > width) { - movHeart = width - heartWidth*heartScale; - inc_hearts = -inc_hearts; - } - if (movHeart < 0) { - movHeart = 0; - inc_hearts = -inc_hearts; - } - if (movSpade + spadeHeight*spadeScale > height) { - movSpade = height - spadeHeight*spadeScale; - inc_spade = -inc_spade; - } - if (movSpade < 0) { - movSpade = 0; - inc_spade = -inc_spade; - } -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - if (ace_club == null) { - ace_club = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_club.jpg"); - ace_spade = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_spade.jpg"); - ace_diamond = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_diamond.jpg"); - ace_hearts = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_hearts.jpg"); - } - - clubWidth = ace_club.getBounds().width; - diamondWidth = ace_diamond.getBounds().width; - heartWidth = ace_hearts.getBounds().width; - spadeHeight = ace_spade.getBounds().height; - - Transform transform; - - // ace of clubs - transform = new Transform(device); - transform.translate((int)movClubX, (int)movClubY); - transform.scale(scaleWidth, scaleWidth); - - // rotate on center of image - Rectangle rect = ace_club.getBounds(); - transform.translate(rect.width/2, rect.height/2); - transform.rotate(rotationAngle); - transform.translate(-rect.width/2, -rect.height/2); - - gc.setTransform(transform); - transform.dispose(); - gc.drawImage(ace_club, 0, 0); - - // ace of diamonds - transform = new Transform(device); - transform.translate((int)movDiamondX, (int)movDiamondY); - transform.scale(scaleWidth, scaleWidth); - gc.setTransform(transform); - transform.dispose(); - gc.drawImage(ace_diamond, 0, 0); - - // ace of hearts - transform = new Transform(device); - transform.translate(movHeart, height/2); - transform.scale(heartScale, 0.5f*scale); - gc.setTransform(transform); - transform.dispose(); - gc.drawImage(ace_hearts, 0, 0); - - // ace of spades - transform = new Transform(device); - transform.translate(movSpade, movSpade); - transform.scale(0.5f*scale, spadeScale); - gc.setTransform(transform); - transform.dispose(); - gc.drawImage(ace_spade, 0, 0); -} -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ColorListener.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ColorListener.java deleted file mode 100644 index a72d806350..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ColorListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -/** - * Used to perform an action after an item in a Menu has been selected. - * - * @see org.eclipse.swt.examples.graphics.ColorMenu.java - * @see org.eclipse.swt.examples.graphics.GraphicsBackground.java - */ -public interface ColorListener { - - public void setColor(GraphicsBackground gb); - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ColorMenu.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ColorMenu.java deleted file mode 100644 index 2ded07c93e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ColorMenu.java +++ /dev/null @@ -1,372 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * This class utilizes the factory design pattern to create menus that may - * contain color items, pattern items and gradient items. To create a menu: - * first set the menu items that you wish to have appear in the menu by calling - * the setters (setColorItems(), setPatternItems(), setGradientItems()), and - * then call createMenu() to get an instance of a menu. By default, the menu - * will contain color items. - */ -public class ColorMenu { - - boolean enableColorItems, enablePatternItems, enableGradientItems; - - public ColorMenu() { - enableColorItems = true; - } - - /** - * Method used to specify whether or not the color menu items will appear in - * the menu. - * - * @param enable - * A boolean flag - true to make the color menu items visible in - * the menu; false otherwise. - */ - public void setColorItems(boolean enable) { - enableColorItems = enable; - } - - /** - * @return true if color menu items are contained in the menu; false otherwise. - * */ - public boolean getColorItems() { - return enableColorItems; - } - - /** - * Method used to specify whether or not the pattern menu items will appear - * in the menu. - * - * @param enable - * A boolean flag - true to make the pattern menu items visible - * in the menu; false otherwise. - */ - public void setPatternItems(boolean enable) { - enablePatternItems = enable; - } - - /** - * @return true if pattern menu items are contained in the menu; false otherwise. - * */ - public boolean getPatternItems() { - return enablePatternItems; - } - - /** - * Method used to specify whether or not the gradient menu items will appear - * in the menu. - * - * @param enable - * A boolean flag - true to make the gradient menu items visible - * in the menu; false otherwise. - */ - public void setGradientItems(boolean enable) { - enableGradientItems = enable; - } - - /** - * @return true if gradient menu items are contained in the menu; false otherwise. - */ - public boolean getGradientItems() { - return enableGradientItems; - } - - /** - * Creates and returns the menu based on the settings provided via - * setColorItems(), setPatternItems() and setGradientItems() - * - * @return A menu based on the settings - */ - public Menu createMenu(Control parent, ColorListener cl) { - Menu menu = new Menu(parent); - - MenuItemListener menuItemListener = createMenuItemListener(parent); - menu.addListener(SWT.Selection, menuItemListener); - menu.addListener(SWT.Dispose, menuItemListener); - menuItemListener.setColorListener(cl); - - if (enableColorItems) { - addColorItems(menu, menuItemListener, menuItemListener.getMenuResources()); - } - if (enablePatternItems) { - addPatternItems(menu, menuItemListener, menuItemListener.getMenuResources()); - } - if (enableGradientItems) { - addGradientItems(menu, menuItemListener); - } - return menu; - } - - /** Adds the colors items to the menu. */ - private void addColorItems(Menu menu, MenuItemListener menuListener, - ArrayList menuResources) { - Display display = menu.getDisplay(); - - if (menu.getItemCount() != 0) { - new MenuItem(menu, SWT.SEPARATOR); - } - - // color names - String[] names = new String[]{ - GraphicsExample.getResourceString("White"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Black"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Red"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Green"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Blue"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Yellow"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Cyan"), //$NON-NLS-1$ - }; - - // colors needed for the background menu - Color[] colors = new Color[]{ - display.getSystemColor(SWT.COLOR_WHITE), - display.getSystemColor(SWT.COLOR_BLACK), - display.getSystemColor(SWT.COLOR_RED), - display.getSystemColor(SWT.COLOR_GREEN), - display.getSystemColor(SWT.COLOR_BLUE), - display.getSystemColor(SWT.COLOR_YELLOW), - display.getSystemColor(SWT.COLOR_CYAN), - }; - - // add standard color items to menu - for (int i = 0; i < names.length; i++) { - MenuItem item = new MenuItem(menu, SWT.NONE); - item.setText(names[i]); - item.addListener(SWT.Selection, menuListener); - Color color = colors[i]; - GraphicsBackground gb = new GraphicsBackground(); - Image image = GraphicsExample.createImage(display, color); - gb.setBgColor1(color); - gb.setBgImage(image); - gb.setThumbNail(image); - menuResources.add(image); - item.setImage(image); - item.setData(gb); - } - - // add custom color item to menu - menuListener.customColorMI = new MenuItem(menu, SWT.NONE); - menuListener.customColorMI.setText(GraphicsExample.getResourceString("CustomColor")); //$NON-NLS-1$ - menuListener.customColorMI.addListener(SWT.Selection, menuListener); - GraphicsBackground gb = new GraphicsBackground(); - menuListener.customColorMI.setData(gb); - } - - /** Adds the pattern items to the menu. */ - private void addPatternItems(Menu menu, MenuItemListener menuListener, - ArrayList menuResources) { - Display display = menu.getDisplay(); - - if (menu.getItemCount() != 0) { - new MenuItem(menu, SWT.SEPARATOR); - } - - // pattern names - String[] names = new String[]{ - GraphicsExample.getResourceString("Pattern1"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Pattern2"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Pattern3"), //$NON-NLS-1$ - }; - - // pattern images - Image[] images = new Image[]{ - loadImage(display, "pattern1.jpg", menuResources), - loadImage(display, "pattern2.jpg", menuResources), - loadImage(display, "pattern3.jpg", menuResources), - }; - - // add the pre-defined patterns to the menu - for (int i = 0; i < names.length; i++) { - MenuItem item = new MenuItem(menu, SWT.NONE); - item.setText(names[i]); - item.addListener(SWT.Selection, menuListener); - Image image = images[i]; - GraphicsBackground gb = new GraphicsBackground(); - gb.setBgImage(image); - gb.setThumbNail(image); - item.setImage(image); - item.setData(gb); - } - - // add the custom pattern item - menuListener.customPatternMI = new MenuItem(menu, SWT.NONE); - menuListener.customPatternMI.setText(GraphicsExample.getResourceString("CustomPattern")); //$NON-NLS-1$ - menuListener.customPatternMI.addListener(SWT.Selection, menuListener); - GraphicsBackground gb = new GraphicsBackground(); - menuListener.customPatternMI.setData(gb); - } - - /** Adds the gradient menu item. */ - private void addGradientItems(Menu menu, MenuItemListener menuListener) { - if (menu.getItemCount() != 0) { - new MenuItem(menu, SWT.SEPARATOR); - } - menuListener.customGradientMI = new MenuItem(menu, SWT.NONE); - menuListener.customGradientMI.setText(GraphicsExample.getResourceString("Gradient")); //$NON-NLS-1$ - menuListener.customGradientMI.addListener(SWT.Selection, menuListener); - GraphicsBackground gb = new GraphicsBackground(); - menuListener.customGradientMI.setData(gb); - } - - /** Creates and returns the listener for menu items. */ - private MenuItemListener createMenuItemListener(final Control parent) { - return new MenuItemListener(parent); - } - - /** - * Creates and returns an instance of Image using on the path of an image. - * - * @param display - * A Display - * @param name - * The path of the image file - * @param resources - * The list of resources of the menu - */ - private Image loadImage(Display display, String name, ArrayList resources) { - Image image = GraphicsExample.loadImage(display, GraphicsExample.class, name); - if (image != null) resources.add(image); - return image; - } - - /** - * An inner class used as a listener for MenuItems added to the menu. - */ - static class MenuItemListener implements Listener { - MenuItem customColorMI, customPatternMI, customGradientMI; // custom menu items - Control parent; - Image customImage, customImageThumb; - Color customColor; - GraphicsBackground background; // used to store information about the background - ColorListener colorListener; - ArrayList resources; - - public MenuItemListener(Control parent){ - this.parent = parent; - resources = new ArrayList(); - } - /** - * Method used to set the ColorListener - * - * @param cl - * A ColorListener - * @see org.eclipse.swt.examples.graphics.ColorListener.java - */ - public void setColorListener(ColorListener cl) { - this.colorListener = cl; - } - - public ArrayList getMenuResources() { - return resources; - } - - public void handleEvent(Event event) { - switch (event.type) { - - case SWT.Dispose: - for (int i = 0; i < resources.size(); i++) { - ((Resource) resources.get(i)).dispose(); - } - resources = new ArrayList(); - break; - case SWT.Selection: - Display display = event.display; - MenuItem item = (MenuItem) event.widget; - if (customColorMI == item) { - ColorDialog dialog = new ColorDialog(parent.getShell()); - if (customColor != null && !customColor.isDisposed()) { - dialog.setRGB(customColor.getRGB()); - } - RGB rgb = dialog.open(); - if (rgb == null) return; - if (customColor != null) customColor.dispose(); - customColor = new Color(display, rgb); - if (customPatternMI != null) customPatternMI.setImage(null); - if (customGradientMI != null) customGradientMI.setImage(null); - if (customImage != null) customImage.dispose(); - customImage = GraphicsExample.createImage(display, customColor); - GraphicsBackground gb = new GraphicsBackground(); - gb.setBgImage(customImage); - gb.setThumbNail(customImage); - gb.setBgColor1(customColor); - item.setData(gb); - item.setImage(customImage); - resources.add(customColor); - resources.add(customImage); - } else if (customPatternMI == item) { - FileDialog dialog = new FileDialog(parent.getShell()); - dialog.setFilterExtensions(new String[] { "*.jpg", "*.gif", "*.*" }); - String name = dialog.open(); - if (name == null) return; - if (customColorMI != null) customColorMI.setImage(null); - if (customGradientMI != null) customGradientMI.setImage(null); - if (customColor != null) customColor.dispose(); - if (customImage != null) customImage.dispose(); - if (customImageThumb != null) customImageThumb.dispose(); - customImage = new Image(display, name); - customImageThumb = GraphicsExample.createThumbnail(display, name); - GraphicsBackground gb = new GraphicsBackground(); - gb.setBgImage(customImage); - gb.setThumbNail(customImageThumb); - item.setData(gb); - item.setImage(customImageThumb); - resources.add(customImageThumb); - } else if (customGradientMI == item) { - GradientDialog dialog = new GradientDialog(parent.getShell()); - if (background != null) { - if (background.getBgColor1() != null) - dialog.setFirstRGB(background.getBgColor1().getRGB()); - if (background.getBgColor2() != null) - dialog.setSecondRGB(background.getBgColor2().getRGB()); - } - if (dialog.open() != SWT.OK) return; - Color colorA = new Color(display, dialog.getFirstRGB()); - Color colorB = new Color(display, dialog.getSecondRGB()); - if (colorA == null || colorB == null) return; - if (customColorMI != null) customColorMI.setImage(null); - if (customPatternMI != null) customPatternMI.setImage(null); - if (customColor != null) customColor.dispose(); - if (customImage != null) customImage.dispose(); - customImage = GraphicsExample.createImage(display, colorA, - colorB, 16, 16); - GraphicsBackground gb = new GraphicsBackground(); - gb.setBgImage(customImage); - gb.setThumbNail(customImage); - gb.setBgColor1(colorA); - gb.setBgColor2(colorB); - item.setData(gb); - item.setImage(customImage); - resources.add(colorA); - resources.add(colorB); - resources.add(customImage); - } else { - if (customColorMI != null) customColorMI.setImage(null); - if (customPatternMI != null) customPatternMI.setImage(null); - if (customGradientMI != null) customGradientMI.setImage(null); - } - background = (GraphicsBackground) item.getData(); - colorListener.setColor(background); - break; - } - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CountDownTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CountDownTab.java deleted file mode 100644 index d483539f30..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CountDownTab.java +++ /dev/null @@ -1,262 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab presents a count down from 5 to 1, then displays SWT. - * */ -public class CountDownTab extends AnimatedGraphicsTab { - - final int startNumber = 5; // number at which to start the countdown - int nextNumber = startNumber; // next number to be displayed - int angle = -90; // angle used to rotate the bar - - Spinner lineWidthSpinner; // spinner for line width - Combo aliasCombo, lineCapCombo; // combo for alias type and line cap - int antialias, lineCap; // antialias and linecap values - int[] capValues = { SWT.CAP_FLAT, SWT.CAP_SQUARE, SWT.CAP_ROUND }; - int[] aliasValues = { SWT.DEFAULT, SWT.OFF, SWT.ON }; - - /** - * Constructor - * - * @param example - * A GraphicsExample - */ - public CountDownTab(GraphicsExample example) { - super(example); - } - - /** - * This method creates the controls specific to the tab. The call to the - * createControlPanel method in the super class create the controls that are - * defined in the super class. - * - * @param parent - * The parent composite - */ - public void createControlPanel(Composite parent) { - super.createControlPanel(parent); - - if (nextNumber < 1) - nextNumber = startNumber; - - // add selection listener to reset nextNumber after - // the sequence has completed - playItem.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - if (nextNumber < 1) - nextNumber = startNumber; - } - }); - - Composite comp; - GridLayout gridLayout = new GridLayout(2, false); - - // create spinner for line width - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("LineWidth")); //$NON-NLS-1$ - lineWidthSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - lineWidthSpinner.setSelection(20); - lineWidthSpinner.setMinimum(1); - lineWidthSpinner.setMaximum(100); - lineWidthSpinner.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - if (!pauseItem.isEnabled()) { - example.redraw(); - } - } - }); - - // create drop down combo for antialiasing - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Antialiasing")); //$NON-NLS-1$ - aliasCombo = new Combo(comp, SWT.DROP_DOWN); - aliasCombo.add("DEFAULT"); - aliasCombo.add("OFF"); - aliasCombo.add("ON"); - aliasCombo.select(0); - antialias = aliasValues[0]; - aliasCombo.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - antialias = aliasValues[aliasCombo.getSelectionIndex()]; - if (!pauseItem.isEnabled()) { - example.redraw(); - } - } - }); - - // create drop down combo for line cap - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("LineCap")); //$NON-NLS-1$ - lineCapCombo = new Combo(comp, SWT.DROP_DOWN); - lineCapCombo.add("FLAT"); - lineCapCombo.add("SQUARE"); - lineCapCombo.add("ROUND"); - lineCapCombo.select(0); - lineCap = capValues[0]; - lineCapCombo.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - lineCap = capValues[lineCapCombo.getSelectionIndex()]; - if (!pauseItem.isEnabled()) { - example.redraw(); - } - } - }); - } - - public String getCategory() { - return GraphicsExample.getResourceString("Misc"); //$NON-NLS-1$ - } - - public String getText() { - return GraphicsExample.getResourceString("Countdown"); //$NON-NLS-1$ - } - - public String getDescription() { - return GraphicsExample.getResourceString("CountdownDescription"); //$NON-NLS-1$ - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#getAnimationTime() - */ - public int getInitialAnimationTime() { - return 28; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#next(int, int) - */ - public void next(int width, int height) { - - if (angle == 270) { - nextNumber--; - if (nextNumber < 1) { - // stop animation - setAnimation(false); - } - angle = -90; - } - angle += 10; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, - * int, int) - */ - public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - // diameter of the circle in pixels - int diameter = ((width < height) ? width - 25 : height - 25); - - if (!getAnimation() && nextNumber == 0) { - Font font = new Font(device, getPlatformFontFace(1), diameter/2, - SWT.NONE); - gc.setFont(font); - - // display "SWT" - gc.setForeground(device.getSystemColor(SWT.COLOR_DARK_BLUE)); - gc.setTextAntialias(SWT.ON); - - // determine the dimensions of the word - String text = GraphicsExample.getResourceString("SWT"); - Point point = gc.stringExtent(text); - int textWidth = point.x; - int textHeight = point.y; - gc.drawString(text, (width-textWidth)/2, - (height-textHeight)/2, true); - font.dispose(); - - } else { - - Font font = new Font(device, getPlatformFontFace(0), - 6*diameter/10, SWT.NONE); - gc.setFont(font); - - // set attributes from controls - gc.setLineWidth(lineWidthSpinner.getSelection()); - gc.setLineCap(lineCap); // round line ends - gc.setAntialias(antialias); // smooth jagged edges - gc.setTextAntialias(antialias); // smooth jagged edges - - // draw the circles - Path path = new Path(device); - path.addArc((width-diameter)/2, (height-diameter)/2, - diameter, diameter, 0, 360); - path.addArc((width-diameter+50)/2, - (height-diameter+50)/2, diameter-50, diameter-50, - 0, 360); - gc.drawPath(path); - gc.setBackground(device.getSystemColor(SWT.COLOR_RED)); - gc.fillPath(path); - path.dispose(); - - Point point = gc.stringExtent(new Integer(nextNumber).toString()); - int textWidth = point.x; - int textHeight = point.y; - - // draw the number - gc.drawString(new Integer(nextNumber).toString(), - (width-textWidth)/2, (height-textHeight)/2, true); - - // draw the rotating arm - Transform transform = new Transform(device); - transform.translate(width/2, height/2); - transform.rotate(angle); - gc.setTransform(transform); - gc.setForeground(device.getSystemColor(SWT.COLOR_RED)); - gc.drawLine(0, 0, diameter/2, 0); - transform.dispose(); - - font.dispose(); - } - } - - /** - * Returns the name of a valid font for the resident platform. - * - * @param index - * index is used to determine the appropriate font face - */ - static String getPlatformFontFace(int index) { - if (SWT.getPlatform() == "win32") { - return new String[] { "Courier", "Impact" }[index]; - } else if (SWT.getPlatform() == "motif") { - return new String[] { "Courier", "URW Gothic L" }[index]; - } else if (SWT.getPlatform() == "gtk") { - return new String[] { "Courier", "Baekmuk Headline" }[index]; - } else if (SWT.getPlatform() == "carbon") { - return new String[] { "Courier", "Impact" }[index]; - } else { // photon, etc ... - return new String[] { "Courier", "Verdana" }[index]; - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CurvesSWTTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CurvesSWTTab.java deleted file mode 100644 index 156e7aa93b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CurvesSWTTab.java +++ /dev/null @@ -1,389 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab presents cubic and quadratic curves that can be drawn. As a - * demonstration, cubic and quadratic curves are used to spell out "SWT". - * The user may reposition the cubic and quadratic handles. - */ -public class CurvesSWTTab extends GraphicsTab { - /** These rectangles represent the handles on the curves. */ - private Rectangle sRect1, sRect2, wRect1, wRect2, tTopRect1, tTopRect2, - tBottomRect1, tBottomRect2; - - /** These values represent the positions of the curves. */ - private float sXPos, sYPos, wXPos, wYPos, topTXPos, topTYPos, - botTXPos, botTYPos; - - /** These values represent the x and y displacement of each handle. */ - private float sDiffX1, sDiffY1, sDiffX2, sDiffY2; - private float wDiffX1, wDiffY1, wDiffX2, wDiffY2; - private float tTopDiffX1, tTopDiffY1, tTopDiffX2, tTopDiffY2; - private float tBotDiffX1, tBotDiffY1, tBotDiffX2, tBotDiffY2; - - /** These are flags that indicate whether or not a handle has been moved. */ - private boolean sLeftPtMoved, sRightPtMoved, wPt1Moved, wPt2Moved, - tTopPt1Moved, tTopPt2Moved, tBotPt1Moved, tBotPt2Moved; - - private MouseMoveListener mouseMoveListener; - private MouseListener mouseListener; - private Cursor cursor; - - /** true if hovering over a handle, false otherwise */ - private boolean hovering = false; - - /** true if left mouse button is held down, false otherwise */ - private boolean mouseDown = false; - - -public CurvesSWTTab(GraphicsExample example) { - super(example); - sRect1 = new Rectangle(-75, 50, 5, 5); - sRect2 = new Rectangle(75, 100, 5, 5); - sDiffX1 = sDiffY1 = 0; - sDiffX2 = sDiffY2 = 0; - wRect1 = new Rectangle(80, 300, 5, 5); - wRect2 = new Rectangle(120, 300, 5, 5); - wDiffX1 = wDiffY1 = wDiffX2 = wDiffY2 = 0; - tTopRect1 = new Rectangle(33, -20, 5, 5); - tTopRect2 = new Rectangle(66, 20, 5, 5); - tTopDiffX1 = tTopDiffY1 = tTopDiffX2 = tTopDiffY2 = 0; - tBottomRect1 = new Rectangle(-33, 50, 5, 5); - tBottomRect2 = new Rectangle(33, 100, 5, 5); - tBotDiffX1 = tBotDiffY1 = tBotDiffX2 = tBotDiffY2 = 0; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Curves"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("SWT"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("CurvesSWTDescription"); //$NON-NLS-1$ -} - -public boolean getDoubleBuffered() { - return true; -} - -public void dispose() { - if (mouseListener != null) - example.canvas.removeMouseListener(mouseListener); - - if (mouseMoveListener != null) - example.canvas.removeMouseMoveListener(mouseMoveListener); - - if (cursor != null) { - cursor.dispose(); - cursor = null; - } -} - - /** - * This helper method determines whether or not the cursor is positioned - * over a handle. - * - * @param e - * A MouseEvent - * @return true if cursor is positioned over a handle; false otherwise - */ -private boolean isHovering(MouseEvent e) { - Rectangle r1 = new Rectangle(sRect1.x + (int)sXPos - 1, sRect1.y + (int)sYPos - 1, sRect1.width+2, sRect1.height+2); - Rectangle r2 = new Rectangle(sRect2.x + (int)sXPos - 1, sRect2.y + (int)sYPos - 1, sRect2.width+2, sRect2.height+2); - Rectangle w1 = new Rectangle(wRect1.x + (int)wXPos - 1, wRect1.y + (int)wYPos - 1, wRect1.width+2, wRect1.height+2); - Rectangle w2 = new Rectangle(wRect2.x + (int)wXPos - 1, wRect2.y + (int)wYPos - 1, wRect2.width+2, wRect2.height+2); - Rectangle tTop1 = new Rectangle(tTopRect1.x + (int)topTXPos - 1, tTopRect1.y + (int)topTYPos - 1, tTopRect1.width+2, tTopRect1.height+2); - Rectangle tTop2 = new Rectangle(tTopRect2.x + (int)topTXPos - 1, tTopRect2.y + (int)topTYPos - 1, tTopRect2.width+2, tTopRect2.height+2); - Rectangle tBot1 = new Rectangle(tBottomRect1.x + (int)botTXPos - 1, tBottomRect1.y + (int)botTYPos - 1, tBottomRect1.width+2, tBottomRect1.height+2); - Rectangle tBot2 = new Rectangle(tBottomRect2.x + (int)botTXPos - 1, tBottomRect2.y + (int)botTYPos - 1, tBottomRect2.width+2, tBottomRect2.height+2); - - return ( r1.contains(e.x, e.y) || r2.contains(e.x, e.y) - || w1.contains(e.x, e.y) || w2.contains(e.x, e.y) - || tTop1.contains(e.x, e.y) || tTop2.contains(e.x, e.y) - || tBot1.contains(e.x, e.y) || tBot2.contains(e.x, e.y) ); -} -/** - * Creates the widgets used to control the drawing. - */ -public void createControlPanel(Composite parent) { - if (cursor == null) { - cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND); - } - - mouseMoveListener = new MouseMoveListener() { - - public void mouseMove(MouseEvent e) { - if (hovering && mouseDown) { - example.canvas.setCursor(cursor); - } else if (isHovering(e)) { - example.canvas.setCursor(cursor); - hovering = true; - } else { - example.canvas.setCursor(null); - hovering = false; - } - - if (sLeftPtMoved) { - sDiffX1 = sDiffX1 + e.x - (int)sXPos - sRect1.x; - sDiffY1 = sDiffY1 + e.y - (int)sYPos - sRect1.y; - sRect1.x = e.x - (int)sXPos; - sRect1.y = e.y - (int)sYPos; - } else if (sRightPtMoved) { - sDiffX2 = sDiffX2 + e.x - (int)sXPos - sRect2.x; - sDiffY2 = sDiffY2 + e.y - (int)sYPos - sRect2.y; - sRect2.x = e.x - (int)sXPos; - sRect2.y = e.y - (int)sYPos; - } else if (wPt1Moved) { - wDiffX1 = wDiffX1 + e.x - (int)wXPos - wRect1.x; - wDiffY1 = wDiffY1 + e.y - (int)wYPos - wRect1.y; - wRect1.x = e.x - (int)wXPos; - wRect1.y = e.y - (int)wYPos; - } else if (wPt2Moved) { - wDiffX2 = wDiffX2 + e.x - (int)wXPos - wRect2.x; - wDiffY2 = wDiffY2 + e.y - (int)wYPos - wRect2.y; - wRect2.x = e.x - (int)wXPos; - wRect2.y = e.y - (int)wYPos; - } else if (tTopPt1Moved) { - tTopDiffX1 = tTopDiffX1 + e.x - (int)topTXPos - tTopRect1.x; - tTopDiffY1 = tTopDiffY1 + e.y - (int)topTYPos - tTopRect1.y; - tTopRect1.x = e.x - (int)topTXPos; - tTopRect1.y = e.y - (int)topTYPos; - } else if (tTopPt2Moved) { - tTopDiffX2 = tTopDiffX2 + e.x - (int)topTXPos - tTopRect2.x; - tTopDiffY2 = tTopDiffY2 + e.y - (int)topTYPos - tTopRect2.y; - tTopRect2.x = e.x - (int)topTXPos; - tTopRect2.y = e.y - (int)topTYPos; - } else if (tBotPt1Moved) { - tBotDiffX1 = tBotDiffX1 + e.x - (int)botTXPos - tBottomRect1.x; - tBotDiffY1 = tBotDiffY1 + e.y - (int)botTYPos - tBottomRect1.y; - tBottomRect1.x = e.x - (int)botTXPos; - tBottomRect1.y = e.y - (int)botTYPos; - } else if (tBotPt2Moved) { - tBotDiffX2 = tBotDiffX2 + e.x - (int)botTXPos - tBottomRect2.x; - tBotDiffY2 = tBotDiffY2 + e.y - (int)botTYPos - tBottomRect2.y; - tBottomRect2.x = e.x - (int)botTXPos; - tBottomRect2.y = e.y - (int)botTYPos; - } - example.redraw(); - } - }; - - mouseListener = new MouseListener() { - - public void mouseDoubleClick(MouseEvent e) {} - - /** - * Sent when a mouse button is pressed. - * - * @param e an event containing information about the mouse button press - */ - public void mouseDown(MouseEvent e) { - Rectangle r1 = new Rectangle(sRect1.x + (int)sXPos - 1, sRect1.y + (int)sYPos - 1, sRect1.width+2, sRect1.height+2); - Rectangle r2 = new Rectangle(sRect2.x + (int)sXPos - 1, sRect2.y + (int)sYPos - 1, sRect2.width+2, sRect2.height+2); - Rectangle w1 = new Rectangle(wRect1.x + (int)wXPos - 1, wRect1.y + (int)wYPos - 1, wRect1.width+2, wRect1.height+2); - Rectangle w2 = new Rectangle(wRect2.x + (int)wXPos - 1, wRect2.y + (int)wYPos - 1, wRect2.width+2, wRect2.height+2); - Rectangle tTop1 = new Rectangle(tTopRect1.x + (int)topTXPos - 1, tTopRect1.y + (int)topTYPos - 1, tTopRect1.width+2, tTopRect1.height+2); - Rectangle tTop2 = new Rectangle(tTopRect2.x + (int)topTXPos - 1, tTopRect2.y + (int)topTYPos - 1, tTopRect2.width+2, tTopRect2.height+2); - Rectangle tBot1 = new Rectangle(tBottomRect1.x + (int)botTXPos - 1, tBottomRect1.y + (int)botTYPos - 1, tBottomRect1.width+2, tBottomRect1.height+2); - Rectangle tBot2 = new Rectangle(tBottomRect2.x + (int)botTXPos - 1, tBottomRect2.y + (int)botTYPos - 1, tBottomRect2.width+2, tBottomRect2.height+2); - - if (r1.contains(e.x, e.y)) { - sLeftPtMoved = true; - mouseDown = true; - } else if (r2.contains(e.x, e.y)) { - sRightPtMoved = true; - mouseDown = true; - } else if (w1.contains(e.x, e.y)) { - wPt1Moved = true; - mouseDown = true; - } else if (w2.contains(e.x, e.y)) { - wPt2Moved = true; - mouseDown = true; - } else if (tTop1.contains(e.x, e.y)) { - tTopPt1Moved = true; - mouseDown = true; - } else if (tTop2.contains(e.x, e.y)) { - tTopPt2Moved = true; - mouseDown = true; - } else if (tBot1.contains(e.x, e.y)) { - tBotPt1Moved = true; - mouseDown = true; - } else if (tBot2.contains(e.x, e.y)) { - tBotPt2Moved = true; - mouseDown = true; - } - } - - /** - * Sent when a mouse button is released. - * - * @param e an event containing information about the mouse button release - */ - public void mouseUp(MouseEvent e) { - mouseDown = false; - if (isHovering(e)) { - example.canvas.setCursor(cursor); - } else { - example.canvas.setCursor(null); - } - if (sLeftPtMoved) - sLeftPtMoved = false; - if (sRightPtMoved) - sRightPtMoved = false; - if (wPt1Moved) - wPt1Moved = false; - if (wPt2Moved) - wPt2Moved = false; - if (tTopPt1Moved) - tTopPt1Moved = false; - if (tTopPt2Moved) - tTopPt2Moved = false; - if (tBotPt1Moved) - tBotPt1Moved = false; - if (tBotPt2Moved) - tBotPt2Moved = false; - - example.redraw(); - } - }; - example.canvas.addMouseMoveListener(mouseMoveListener); - example.canvas.addMouseListener(mouseListener); -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Font font = new Font(device, getPlatformFont(), 16, SWT.ITALIC); - gc.setFont(font); - gc.setLineWidth(2); - - Transform transform; - - // ----- letter s ----- - sXPos = 4*width/16; - sYPos = (height-150)/2; - - transform = new Transform(device); - transform.translate(sXPos, sYPos); - gc.setTransform(transform); - transform.dispose(); - - gc.setForeground(device.getSystemColor(SWT.COLOR_DARK_BLUE)); - gc.drawString(GraphicsExample.getResourceString("Cubic"), 0, 175, true); - - Path path = new Path(device); - path.cubicTo(-200 + sDiffX1, 50 + sDiffY1, 200 + sDiffX2, 100 + sDiffY2, 0, 150); - gc.drawPath(path); - path.dispose(); - - // draw the spline points - gc.setTransform(null); - gc.drawRectangle(sRect1.x + (int)sXPos, sRect1.y + (int)sYPos, sRect1.width, sRect1.height); - gc.drawRectangle(sRect2.x + (int)sXPos, sRect2.y + (int)sYPos, sRect2.width, sRect2.height); - - // ----- letter w ----- - wXPos = 6*width/16; - wYPos = (height-150)/2; - - transform = new Transform(device); - transform.translate(wXPos, wYPos); - gc.setTransform(transform); - transform.dispose(); - - gc.setForeground(device.getSystemColor(SWT.COLOR_GRAY)); - gc.drawString(GraphicsExample.getResourceString("Quadratic"), 0, -50, true); - gc.drawString(GraphicsExample.getResourceString("Quadratic"), 110, -50, true); - - path = new Path(device); - path.quadTo(100 + wDiffX1, 300 + wDiffY1, 100, 0); - path.quadTo(100+wDiffX2, 300+wDiffY2, 200, 0); - gc.drawPath(path); - path.dispose(); - - gc.setTransform(null); - gc.drawRectangle(wRect1.x + (int)wXPos, wRect1.y + (int)wYPos, wRect1.width, wRect1.height); - gc.drawRectangle(wRect2.x + (int)wXPos, wRect2.y + (int)wYPos, wRect2.width, wRect2.height); - - - // ----- top of letter t ----- - topTXPos = 11*width/16; - topTYPos = (height-150)/2; - - transform = new Transform(device); - transform.translate(topTXPos, topTYPos); - gc.setTransform(transform); - transform.dispose(); - - gc.setForeground(device.getSystemColor(SWT.COLOR_YELLOW)); - gc.drawString(GraphicsExample.getResourceString("Cubic"), 25, -50, true); - - path = new Path(device); - path.cubicTo(33 + tTopDiffX1, -20 + tTopDiffY1, 66 + tTopDiffX2, 20 + tTopDiffY2, 100, 0); - gc.drawPath(path); - path.dispose(); - - gc.setTransform(null); - gc.drawRectangle(tTopRect1.x + (int)topTXPos, tTopRect1.y + (int)topTYPos, tTopRect1.width, tTopRect1.height); - gc.drawRectangle(tTopRect2.x + (int)topTXPos, tTopRect2.y + (int)topTYPos, tTopRect2.width, tTopRect2.height); - - - // ----- vertical bar of letter t ----- - botTXPos = 12*width/16; - botTYPos = (height-150)/2; - - transform = new Transform(device); - transform.translate(botTXPos, botTYPos); - gc.setTransform(transform); - transform.dispose(); - - gc.setForeground(device.getSystemColor(SWT.COLOR_RED)); - gc.drawString(GraphicsExample.getResourceString("Cubic"), 0, 175, true); - - path = new Path(device); - path.cubicTo(-33 + tBotDiffX1, 50 + tBotDiffY1, 33 + tBotDiffX2, 100 + tBotDiffY2, 0, 150); - gc.drawPath(path); - path.dispose(); - - gc.setTransform(null); - gc.drawRectangle(tBottomRect1.x + (int)botTXPos, tBottomRect1.y + (int)botTYPos, tBottomRect1.width, tBottomRect1.height); - gc.drawRectangle(tBottomRect2.x + (int)botTXPos, tBottomRect2.y + (int)botTYPos, tBottomRect2.width, tBottomRect2.height); - - font.dispose(); -} - -/** - * Returns the name of a valid font for the resident platform. - */ -static String getPlatformFont() { - if(SWT.getPlatform() == "win32") { - return "Arial"; - } else if (SWT.getPlatform() == "motif") { - return "Helvetica"; - } else if (SWT.getPlatform() == "gtk") { - return "Baekmuk Batang"; - } else if (SWT.getPlatform() == "carbon") { - return "Arial"; - } else { // photon, etc ... - return "Verdana"; - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CurvesTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CurvesTab.java deleted file mode 100644 index 9784154828..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CurvesTab.java +++ /dev/null @@ -1,300 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab presents cubic and quadratic curves that can be drawn. - * The user may reposition the cubic and quadratic handles. - */ -public class CurvesTab extends GraphicsTab { - /** These rectangles represent the handles on the curves. */ - private Rectangle quadHndl, quadEndHndl, cubHndl1, cubHndl2, cubEndHndl; - - /** These values represent the positions of the curves. */ - private float quadXPos, quadYPos, cubXPos, cubYPos; - - /** These values represent the x and y displacement of each handle. */ - private float quadDiffX, quadDiffY, quadEndDiffX, quadEndDiffY; - private float cubDiffX1, cubDiffY1, cubDiffX2, cubDiffY2, cubEndDiffX, cubEndDiffY; - - /** These are flags that indicate whether or not a handle has been moved. */ - private boolean quadPtMoved, quadEndPtMoved, cubPt1Moved, cubPt2Moved, cubEndPtMoved; - - private MouseMoveListener mouseMoveListener; - private MouseListener mouseListener; - private Cursor cursor; - - /** true if hovering over a handle, false otherwise */ - private boolean hovering = false; - - /** true if left mouse button is held down, false otherwise */ - private boolean mouseDown = false; - - -public CurvesTab(GraphicsExample example) { - super(example); - quadHndl = new Rectangle(200, 150, 5, 5); - quadEndHndl = new Rectangle(400, 0, 5, 5); - quadDiffX = quadDiffY = quadEndDiffX = quadEndDiffY = 0; - cubHndl1 = new Rectangle(133, -60, 5, 5); - cubHndl2 = new Rectangle(266, 60, 5, 5); - cubDiffX1 = cubDiffY1 = cubDiffX2 = cubDiffY2 = 0; - cubEndHndl = new Rectangle(400, 0, 5, 5); - cubEndDiffX = cubEndDiffY = 0; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Curves"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Curves"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("CurvesDescription"); //$NON-NLS-1$ -} - -public boolean getDoubleBuffered() { - return true; -} - -public void dispose() { - if (mouseListener != null) - example.canvas.removeMouseListener(mouseListener); - - if (mouseMoveListener != null) - example.canvas.removeMouseMoveListener(mouseMoveListener); - - if (cursor != null) { - cursor.dispose(); - cursor = null; - } -} - -/** - * This helper method determines whether or not the cursor is positioned - * over a handle. - * - * @param e - * A MouseEvent - * @return true if cursor is positioned over a handle; false otherwise - */ -private boolean isHovering(MouseEvent e) { - Rectangle quad = new Rectangle(quadHndl.x + (int)quadXPos - 1, quadHndl.y + (int)quadYPos - 1, quadHndl.width+2, quadHndl.height+2); - Rectangle quadEnd = new Rectangle(quadEndHndl.x + (int)quadXPos - 1, quadEndHndl.y + (int)quadYPos - 1, quadEndHndl.width+2, quadEndHndl.height+2); - Rectangle cub1 = new Rectangle(cubHndl1.x + (int)cubXPos - 1, cubHndl1.y + (int)cubYPos - 1, cubHndl1.width+2, cubHndl1.height+2); - Rectangle cub2 = new Rectangle(cubHndl2.x + (int)cubXPos - 1, cubHndl2.y + (int)cubYPos - 1, cubHndl2.width+2, cubHndl2.height+2); - Rectangle cubEnd = new Rectangle(cubEndHndl.x + (int)cubXPos - 1, cubEndHndl.y + (int)cubYPos - 1, cubEndHndl.width+2, cubEndHndl.height+2); - - return ( quad.contains(e.x, e.y) || quadEnd.contains(e.x, e.y) - || cub1.contains(e.x, e.y) || cub2.contains(e.x, e.y) - || cubEnd.contains(e.x, e.y)); -} -/** - * Creates the widgets used to control the drawing. - */ -public void createControlPanel(Composite parent) { - if (cursor == null) { - cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND); - } - - mouseMoveListener = new MouseMoveListener() { - - public void mouseMove(MouseEvent e) { - if (hovering && mouseDown) { - example.canvas.setCursor(cursor); - } else if (isHovering(e)) { - example.canvas.setCursor(cursor); - hovering = true; - } else { - example.canvas.setCursor(null); - hovering = false; - } - - if (quadPtMoved) { - quadDiffX = quadDiffX + e.x - (int)quadXPos - quadHndl.x; - quadDiffY = quadDiffY + e.y - (int)quadYPos - quadHndl.y; - quadHndl.x = e.x - (int)quadXPos; - quadHndl.y = e.y - (int)quadYPos; - } else if (quadEndPtMoved) { - quadEndDiffX = quadEndDiffX + e.x - (int)quadXPos - quadEndHndl.x; - quadEndDiffY = quadEndDiffY + e.y - (int)quadYPos - quadEndHndl.y; - quadEndHndl.x = e.x - (int)quadXPos; - quadEndHndl.y = e.y - (int)quadYPos; - } else if (cubPt1Moved) { - cubDiffX1 = cubDiffX1 + e.x - (int)cubXPos - cubHndl1.x; - cubDiffY1 = cubDiffY1 + e.y - (int)cubYPos - cubHndl1.y; - cubHndl1.x = e.x - (int)cubXPos; - cubHndl1.y = e.y - (int)cubYPos; - } else if (cubPt2Moved) { - cubDiffX2 = cubDiffX2 + e.x - (int)cubXPos - cubHndl2.x; - cubDiffY2 = cubDiffY2 + e.y - (int)cubYPos - cubHndl2.y; - cubHndl2.x = e.x - (int)cubXPos; - cubHndl2.y = e.y - (int)cubYPos; - } else if (cubEndPtMoved) { - cubEndDiffX = cubEndDiffX + e.x - (int)cubXPos - cubEndHndl.x; - cubEndDiffY = cubEndDiffY + e.y - (int)cubYPos - cubEndHndl.y; - cubEndHndl.x = e.x - (int)cubXPos; - cubEndHndl.y = e.y - (int)cubYPos; - } - example.redraw(); - } - }; - - mouseListener = new MouseListener() { - - public void mouseDoubleClick(MouseEvent e) {} - - /** - * Sent when a mouse button is pressed. - * - * @param e an event containing information about the mouse button press - */ - public void mouseDown(MouseEvent e) { - Rectangle quad = new Rectangle(quadHndl.x + (int)quadXPos - 1, quadHndl.y + (int)quadYPos - 1, quadHndl.width+2, quadHndl.height+2); - Rectangle quadEnd = new Rectangle(quadEndHndl.x + (int)quadXPos - 1, quadEndHndl.y + (int)quadYPos - 1, quadEndHndl.width+2, quadEndHndl.height+2); - Rectangle cub1 = new Rectangle(cubHndl1.x + (int)cubXPos - 1, cubHndl1.y + (int)cubYPos - 1, cubHndl1.width+2, cubHndl1.height+2); - Rectangle cub2 = new Rectangle(cubHndl2.x + (int)cubXPos - 1, cubHndl2.y + (int)cubYPos - 1, cubHndl2.width+2, cubHndl2.height+2); - Rectangle cubEnd = new Rectangle(cubEndHndl.x + (int)cubXPos - 1, cubEndHndl.y + (int)cubYPos - 1, cubEndHndl.width+2, cubEndHndl.height+2); - - if (quad.contains(e.x, e.y)) { - quadPtMoved = true; - mouseDown = true; - } else if (quadEnd.contains(e.x, e.y)) { - quadEndPtMoved = true; - mouseDown = true; - } else if (cub1.contains(e.x, e.y)) { - cubPt1Moved = true; - mouseDown = true; - } else if (cub2.contains(e.x, e.y)) { - cubPt2Moved = true; - mouseDown = true; - } else if (cubEnd.contains(e.x, e.y)) { - cubEndPtMoved = true; - mouseDown = true; - } - } - - /** - * Sent when a mouse button is released. - * - * @param e an event containing information about the mouse button release - */ - public void mouseUp(MouseEvent e) { - mouseDown = false; - if (isHovering(e)) { - example.canvas.setCursor(cursor); - } else { - example.canvas.setCursor(null); - } - - if (quadPtMoved) - quadPtMoved = false; - if (quadEndPtMoved) - quadEndPtMoved = false; - if (cubPt1Moved) - cubPt1Moved = false; - if (cubPt2Moved) - cubPt2Moved = false; - if (cubEndPtMoved) - cubEndPtMoved = false; - - example.redraw(); - } - }; - example.canvas.addMouseMoveListener(mouseMoveListener); - example.canvas.addMouseListener(mouseListener); -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Font font = new Font(device, getPlatformFont(), 16, SWT.ITALIC); - gc.setFont(font); - gc.setLineWidth(5); - - Transform transform; - - // ----- cubic curve ----- - cubXPos = width/5; - cubYPos = height/3; - - transform = new Transform(device); - transform.translate(cubXPos, cubYPos); - gc.setTransform(transform); - transform.dispose(); - - gc.setForeground(device.getSystemColor(SWT.COLOR_RED)); - gc.drawString(GraphicsExample.getResourceString("Cubic"), 25, -70, true); - - Path path = new Path(device); - path.cubicTo(133 + cubDiffX1, -60 + cubDiffY1, 266 + cubDiffX2, 60 + cubDiffY2, 400 + cubEndDiffX, 0 + cubEndDiffY); - gc.drawPath(path); - path.dispose(); - - gc.setTransform(null); - gc.setForeground(device.getSystemColor(SWT.COLOR_DARK_BLUE)); - gc.drawRectangle(cubHndl1.x + (int)cubXPos, cubHndl1.y + (int)cubYPos, cubHndl1.width, cubHndl1.height); - gc.drawRectangle(cubHndl2.x + (int)cubXPos, cubHndl2.y + (int)cubYPos, cubHndl2.width, cubHndl2.height); - gc.drawRectangle(cubEndHndl.x + (int)cubXPos, cubEndHndl.y + (int)cubYPos, cubEndHndl.width, cubEndHndl.height); - - // ----- quadratic curve ----- - quadXPos = width/5; - quadYPos = 2*height/3; - - transform = new Transform(device); - transform.translate(quadXPos, quadYPos); - gc.setTransform(transform); - transform.dispose(); - - gc.setForeground(device.getSystemColor(SWT.COLOR_GREEN)); - gc.drawString(GraphicsExample.getResourceString("Quadratic"), 0, -50, true); - - path = new Path(device); - path.quadTo(200 + quadDiffX, 150 + quadDiffY, 400 + quadEndDiffX, 0 + quadEndDiffY); - gc.drawPath(path); - path.dispose(); - - gc.setTransform(null); - gc.setForeground(device.getSystemColor(SWT.COLOR_GRAY)); - gc.drawRectangle(quadHndl.x + (int)quadXPos, quadHndl.y + (int)quadYPos, quadHndl.width, quadHndl.height); - gc.drawRectangle(quadEndHndl.x + (int)quadXPos, quadEndHndl.y + (int)quadYPos, quadEndHndl.width, quadEndHndl.height); - - font.dispose(); -} - -/** - * Returns the name of a valid font for the resident platform. - */ -static String getPlatformFont() { - if(SWT.getPlatform() == "win32") { - return "Arial"; - } else if (SWT.getPlatform() == "motif") { - return "Helvetica"; - } else if (SWT.getPlatform() == "gtk") { - return "Baekmuk Batang"; - } else if (SWT.getPlatform() == "carbon") { - return "Arial"; - } else { // photon, etc ... - return "Verdana"; - } -} - -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CustomAlphaTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CustomAlphaTab.java deleted file mode 100644 index 386fc5a896..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CustomAlphaTab.java +++ /dev/null @@ -1,159 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates the use of alpha blending. It allows a user to specify - * a custom alpha value. - */ -public class CustomAlphaTab extends AnimatedGraphicsTab { - - private Spinner alphaSpinner; - private Button colorButton; - private GraphicsBackground background; - private Menu menu; - private int angle; - -public CustomAlphaTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Alpha"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("CustomAlpha"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("CustomAlphaDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -/** - * Creates the widgets used to control the drawing. - */ -public void createControlPanel(Composite parent) { - super.createControlPanel(parent); - - // create drop down combo for choosing clipping - Composite comp; - - // create spinner for line width - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Alpha")); //$NON-NLS-1$ - alphaSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - alphaSpinner.setMinimum(0); - alphaSpinner.setMaximum(255); - alphaSpinner.setSelection(127); - alphaSpinner.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // color menu - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - background = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the background to the 5th item in the menu (blue) - background = (GraphicsBackground)menu.getItem(4).getData(); - - // color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample - .getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(background.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -public void next(int width, int height) { - - angle = (angle+1)%360; -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Pattern pattern = null; - if (background.getBgColor1() != null) { - gc.setBackground(background.getBgColor1()); - } else if (background.getBgImage() != null) { - pattern = new Pattern(device, background.getBgImage()); - gc.setBackgroundPattern(pattern); - } - - gc.setAntialias(SWT.ON); - gc.setAlpha(alphaSpinner.getSelection()); - - // rotate on center - Transform transform = new Transform(device); - transform.translate(width/2, height/2); - transform.rotate(-angle); - transform.translate(-width/2, -height/2); - gc.setTransform(transform); - transform.dispose(); - - // choose the smallest between height and width - int diameter = (height < width) ? height : width; - - Path path = new Path(device); - path.addArc((width-diameter/5)/2, (height-diameter/5)/2, diameter/5, diameter/5, 0, 360); - path.addArc(5*(width-diameter/8)/12, 4*(height-diameter/8)/12, diameter/8, diameter/8, 0, 360); - path.addArc(7*(width-diameter/8)/12, 8*(height-diameter/8)/12, diameter/8, diameter/8, 0, 360); - path.addArc(6*(width-diameter/12)/12, 3*(height-diameter/12)/12, diameter/12, diameter/12, 0, 360); - path.addArc(6*(width-diameter/12)/12, 9*(height-diameter/12)/12, diameter/12, diameter/12, 0, 360); - path.addArc(11.5f*(width-diameter/18)/20, 5*(height-diameter/18)/18, diameter/18, diameter/18, 0, 360); - path.addArc(8.5f*(width-diameter/18)/20, 13*(height-diameter/18)/18, diameter/18, diameter/18, 0, 360); - path.addArc(62f*(width-diameter/25)/100, 32*(height-diameter/25)/100, diameter/25, diameter/25, 0, 360); - path.addArc(39f*(width-diameter/25)/100, 67*(height-diameter/25)/100, diameter/25, diameter/25, 0, 360); - - gc.fillPath(path); - path.dispose(); - - if (pattern != null) pattern.dispose(); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CustomFontTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CustomFontTab.java deleted file mode 100644 index ff8d283674..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/CustomFontTab.java +++ /dev/null @@ -1,202 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates various text fonts. It allows the user to specify font - * parameters such as face, style and size. - */ -public class CustomFontTab extends GraphicsTab { - - String text = GraphicsExample.getResourceString("SWT"); - GraphicsBackground fontForeground; - Combo fontFaceCb, fontStyleCb; - Spinner fontPointSpinner; - Button colorButton; - ArrayList fontNames; - int [] styleValues; - String [] fontStyles; - Menu menu; - -public CustomFontTab(GraphicsExample example) { - super(example); - - // create list of fonts for this platform - FontData [] fontData = Display.getCurrent().getFontList(null, true); - fontNames = new ArrayList(); - for (int i=0; i < fontData.length; i++) { - // remove duplicates and sort - String nextName = fontData[i].getName(); - if (!fontNames.contains(nextName)) { - int j = 0; - while(j < fontNames.size() && nextName.compareTo((String)fontNames.get(j)) > 0) { - j++; - } - fontNames.add(j, nextName); - } - } - fontStyles = new String [] { - GraphicsExample.getResourceString("Regular"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Italic"), //$NON-NLS-1$ - GraphicsExample.getResourceString("Bold"), //$NON-NLS-1$ - GraphicsExample.getResourceString("BoldItalic") //$NON-NLS-1$ - }; - styleValues = new int [] {SWT.NORMAL, SWT.ITALIC, SWT.BOLD, SWT.BOLD | SWT.ITALIC}; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Font"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("CustomFont"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("CustomFontDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - Composite mainComp = new Composite(parent, SWT.NONE); - mainComp.setLayout(new RowLayout()); - - // create combo for font face - Composite comp = new Composite(mainComp, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.LEFT).setText(GraphicsExample.getResourceString("FontFace")); //$NON-NLS-1$ - fontFaceCb = new Combo(comp, SWT.DROP_DOWN); - for (int i=0; i < fontNames.size(); i++) { - String name = (String)fontNames.get(i); - fontFaceCb.add(name); - } - fontFaceCb.select(0); - fontFaceCb.addListener(SWT.Selection, new Listener() { - public void handleEvent (Event event) { - example.redraw(); - } - }); - - // create combo for font style - comp = new Composite(mainComp, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.LEFT).setText(GraphicsExample.getResourceString("FontStyle")); //$NON-NLS-1$ - fontStyleCb = new Combo(comp, SWT.DROP_DOWN); - for (int i=0; i < fontStyles.length; i++) { - fontStyleCb.add(fontStyles[i]); - } - fontStyleCb.select(0); - fontStyleCb.addListener(SWT.Selection, new Listener() { - public void handleEvent (Event event) { - example.redraw(); - } - }); - - // create spinner for font size (points) - comp = new Composite(mainComp, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.LEFT).setText(GraphicsExample.getResourceString("FontSize")); //$NON-NLS-1$ - fontPointSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - fontPointSpinner.setMinimum(1); - fontPointSpinner.setMaximum(1000); - fontPointSpinner.setSelection(200); - fontPointSpinner.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - ColorMenu cm = new ColorMenu(); - cm.setColorItems(true); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - fontForeground = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the background to the 2nd item in the menu (black) - fontForeground = (GraphicsBackground)menu.getItem(1).getData(); - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample.getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(fontForeground.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - String fontFace = (String)fontNames.get(fontFaceCb.getSelectionIndex()); - int points = fontPointSpinner.getSelection(); - int style = styleValues[fontStyleCb.getSelectionIndex()]; - - Font font = new Font(device, fontFace, points, style); - gc.setFont(font); - gc.setTextAntialias(SWT.ON); - - Point size = gc.stringExtent(text); - int textWidth = size.x; - int textHeight = size.y; - - Pattern pattern = null; - if (fontForeground.getBgColor1() != null) { - gc.setForeground(fontForeground.getBgColor1()); - } else if (fontForeground.getBgImage() != null) { - pattern = new Pattern(device, fontForeground.getBgImage()); - gc.setForegroundPattern(pattern); - } - - gc.drawString(text, (width-textWidth)/2, (height-textHeight)/2, true); - - font.dispose(); - if (pattern != null) pattern.dispose(); -} - -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/FontBounceTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/FontBounceTab.java deleted file mode 100644 index f7418cb1a7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/FontBounceTab.java +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * This tab is an animated graphic. It presents the word SWT in different fonts - * as it bounces around the screen. - */ -public class FontBounceTab extends AnimatedGraphicsTab { - - float x, y; - float incX = 10.0f; // units by which to move the word along X axis - float incY = 5.0f; // units by which to move the word along Y axis - int textWidth, textHeight; // width and height of the word SWT - String text = GraphicsExample.getResourceString("SWT"); - int fontSize = 100; - int fontFace = 0; - int foreGrdColor, fillColor; // font colors - int fontStyle; // represents various style attributes applicable to a Font - -public FontBounceTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Font"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Bounce"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("FontBounceDescription"); //$NON-NLS-1$ -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#next(int, int) - */ -public void next(int width, int height) { - x += incX; - y += incY; - float random = (float)Math.random(); - - // collision with right side of screen - if (x + textWidth > width) { - x = width - textWidth; - incX = random * -width / 16 - 1; - fontFace = 0; - fontSize = 125; - fillColor = SWT.COLOR_DARK_BLUE; - foreGrdColor = SWT.COLOR_YELLOW; - fontStyle = SWT.ITALIC; - } - // collision with left side of screen - if (x < 0) { - x = 0; - incX = random * width / 16 + 1; - fontFace = 1; - fontSize = 80; - fillColor = SWT.COLOR_DARK_MAGENTA; - foreGrdColor = SWT.COLOR_CYAN; - fontStyle = SWT.NONE; - } - // collision with bottom side of screen - if (y + textHeight > height) { - y = (height - textHeight)- 2; - incY = random * -height / 16 - 1; - fontFace = 2; - fontSize = 100; - fillColor = SWT.COLOR_YELLOW; - foreGrdColor = SWT.COLOR_BLACK; - fontStyle = SWT.BOLD; - } - // collision with top side of screen - if (y < 0) { - y = 0; - incY = random * height / 16 + 1; - fontFace = 3; - fontSize = 120; - fillColor = SWT.COLOR_GREEN; - foreGrdColor = SWT.COLOR_GRAY; - fontStyle = SWT.NONE; - } -} - - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Font font = new Font(device, getPlatformFontFace(fontFace), fontSize, fontStyle); - gc.setFont(font); - - Point size = gc.stringExtent(text); - textWidth = size.x; - textHeight = size.y; - - Path path = new Path(device); - path.addString(text, x, y, font); - - gc.setForeground(device.getSystemColor(foreGrdColor)); - gc.setBackground(device.getSystemColor(fillColor)); - - gc.fillPath(path); - gc.drawPath(path); - font.dispose(); - path.dispose(); -} - -/** - * Returns the name of the font using the specified index. - * This method takes into account the resident platform. - * - * @param index - * The index of the font to be used - */ -static String getPlatformFontFace(int index) { - if(SWT.getPlatform() == "win32") { - return new String [] {"Arial", "Impact", "Times", "Verdana"} [index]; - } else if (SWT.getPlatform() == "motif") { - return new String [] {"URW Chancery L", "URW Gothic L", "Times", "qub"} [index]; - } else if (SWT.getPlatform() == "gtk") { - return new String [] {"URW Chancery L", "Baekmuk Batang", "Baekmuk Headline", "KacsTitleL"} [index]; - } else if (SWT.getPlatform() == "carbon") { - return new String [] {"Arial", "Impact", "Times", "Verdana"} [index]; - } else { // photon, etc ... - return new String [] {"Arial", "Impact", "Times", "Verdana"} [index]; - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GradientDialog.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GradientDialog.java deleted file mode 100644 index af8a685590..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GradientDialog.java +++ /dev/null @@ -1,277 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This dialog is used for prompting the user to select two colors for the - * creation of a gradient. - */ -public class GradientDialog extends Dialog { - - Canvas canvas; - - Button colorButton1, colorButton2; // color buttons - - Button okButton, cancelButton; - - Menu menu1, menu2; - - RGB rgb1, rgb2; // first and second color used in gradient - int returnVal; // value to be returned by open(), set to SWT.OK - // if the ok button has been pressed - ArrayList resources; - - public GradientDialog(Shell parent) { - this (parent, SWT.PRIMARY_MODAL); - } - - public GradientDialog(Shell parent, int style) { - super(parent, style); - rgb1 = rgb2 = null; - returnVal = SWT.CANCEL; - resources = new ArrayList(); - } - - /** - * Sets up the dialog and opens it. - * */ - public int open() { - final Shell dialog = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.RESIZE | getStyle()); - dialog.setText(GraphicsExample.getResourceString("Gradient")); //$NON-NLS-1$ - - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 2; - gridLayout.marginHeight = 10; - gridLayout.marginWidth = 10; - dialog.setLayout(gridLayout); - - // create the controls in the dialog - createDialogControls(dialog); - - dialog.addListener(SWT.Close, new Listener() { - public void handleEvent(Event event) { - for (int i = 0; i < resources.size(); i++) { - Object obj = resources.get(i); - if (obj != null && obj instanceof Resource) { - ((Resource) obj).dispose(); - } - } - dialog.dispose(); - } - }); - - dialog.setDefaultButton (okButton); - dialog.pack (); - Rectangle rect = getParent().getMonitor().getBounds(); - Rectangle bounds = dialog.getBounds(); - dialog.setLocation(rect.x + (rect.width - bounds.width) / 2, rect.y + (rect.height - bounds.height) / 2); - dialog.setMinimumSize(bounds.width, bounds.height); - - dialog.open (); - - Display display = getParent().getDisplay(); - while (!dialog.isDisposed()) { - if (!display.readAndDispatch()) display.sleep(); - } - - if (menu1 != null) { - menu1.dispose(); - menu1 = null; - } - - if (menu2 != null) { - menu2.dispose(); - menu2 = null; - } - - return returnVal; - } - - /** - * Creates the controls of the dialog. - * */ - public void createDialogControls(final Shell parent) { - final Display display = parent.getDisplay(); - - // message - Label message = new Label(parent, SWT.NONE); - message.setText(GraphicsExample.getResourceString("GradientDlgMsg")); - GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gridData.horizontalSpan = 2; - message.setLayoutData(gridData); - - // default colors are white and black - if (rgb1 == null || rgb2 == null) { - rgb1 = display.getSystemColor(SWT.COLOR_WHITE).getRGB(); - rgb2 = display.getSystemColor(SWT.COLOR_BLACK).getRGB(); - } - - // canvas - canvas = new Canvas(parent, SWT.NONE); - gridData = new GridData(GridData.FILL_BOTH); - gridData.widthHint = 200; - gridData.heightHint = 100; - canvas.setLayoutData(gridData); - canvas.addListener (SWT.Paint, new Listener () { - public void handleEvent (Event e) { - Image preview = null; - Point size = canvas.getSize(); - Color color1 = new Color(display, rgb1); - Color color2 = new Color(display, rgb2); - preview = GraphicsExample.createImage(display, color1, color2, size.x, size.y); - if (preview != null) { - e.gc.drawImage (preview, 0, 0); - } - preview.dispose(); - color1.dispose(); - color2.dispose(); - } - }); - - // composite used for both color buttons - Composite colorButtonComp = new Composite(parent, SWT.NONE); - - // layout buttons - RowLayout layout = new RowLayout();; - layout.type = SWT.VERTICAL; - layout.pack = false; - colorButtonComp.setLayout(layout); - - // position composite - gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); - colorButtonComp.setLayoutData(gridData); - - ColorMenu colorMenu = new ColorMenu(); - - // color controls: first color - colorButton1 = new Button(colorButtonComp, SWT.PUSH); - colorButton1.setText(GraphicsExample.getResourceString("GradientDlgButton1")); - Color color1 = new Color(display, rgb1); - Image img1 = GraphicsExample.createImage(display, color1); - color1.dispose(); - colorButton1.setImage(img1); - resources.add(img1); - menu1 = colorMenu.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - rgb1 = gb.getBgColor1().getRGB(); - colorButton1.setImage(gb.getThumbNail()); - if (canvas != null) canvas.redraw(); - } - }); - colorButton1.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu1.setLocation(point.x, point.y + bounds.height); - menu1.setVisible(true); - } - }); - - // color controls: second color - colorButton2 = new Button(colorButtonComp, SWT.PUSH); - colorButton2.setText(GraphicsExample.getResourceString("GradientDlgButton2")); - Color color2 = new Color(display, rgb2); - Image img2 = GraphicsExample.createImage(display, color2); - color2.dispose(); - colorButton2.setImage(img2); - resources.add(img2); - menu2 = colorMenu.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - rgb2 = gb.getBgColor1().getRGB(); - colorButton2.setImage(gb.getThumbNail()); - if (canvas != null) canvas.redraw(); - } - }); - colorButton2.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu2.setLocation(point.x, point.y + bounds.height); - menu2.setVisible(true); - } - }); - - // composite used for ok and cancel buttons - Composite okCancelComp = new Composite(parent, SWT.NONE); - - // layout buttons - RowLayout rowLayout = new RowLayout(); - rowLayout.pack = false; - rowLayout.marginTop = 5; - okCancelComp.setLayout(rowLayout); - - // position composite - gridData = new GridData(GridData.HORIZONTAL_ALIGN_END); - gridData.horizontalSpan = 2; - okCancelComp.setLayoutData(gridData); - - // OK button - okButton = new Button (okCancelComp, SWT.PUSH); - okButton.setText("&OK"); - okButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - returnVal = SWT.OK; - parent.close(); - } - }); - - // cancel button - cancelButton = new Button (okCancelComp, SWT.PUSH); - cancelButton.setText("&Cancel"); - cancelButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - parent.close(); - } - }); - } - - /** - * Returns the first RGB selected by the user. - * */ - public RGB getFirstRGB() { - return rgb1; - } - - /** - * Sets the first RGB. - * @param rgb - */ - public void setFirstRGB(RGB rgb) { - this.rgb1 = rgb; - } - - /** - * Returns the second RGB selected by the user. - * */ - public RGB getSecondRGB() { - return rgb2; - } - - /** - * Sets the second RGB. - * @param rgb - */ - public void setSecondRGB(RGB rgb) { - this.rgb2 = rgb; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GradientTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GradientTab.java deleted file mode 100644 index 33034bb3d4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GradientTab.java +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab draws an image consisting of gradients of two colors. - * */ -public class GradientTab extends GraphicsTab { - - ToolBar toolBar; - ToolItem colorItem1, colorItem2; - Menu menu1, menu2; - GraphicsBackground colorGB1, colorGB2; - ArrayList resources; // resources to be disposed when the dipose() method is invoked - - -public GradientTab(GraphicsExample example) { - super(example); - resources = new ArrayList(); -} - -/** - * Dispose resources created by this tab. - * */ -public void dispose() { - for (int i = 0; i < resources.size(); i++) { - Object obj = resources.get(i); - if (obj != null && obj instanceof Resource) - ((Resource) obj).dispose(); - } - resources = new ArrayList(); - - if (menu1 != null) { - menu1.dispose(); - menu1 = null; - } - if (menu2 != null) { - menu2.dispose(); - menu2 = null; - } -} - -public String getCategory() { - return GraphicsExample.getResourceString("Gradient"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("GradImage"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("GradientImageDescription"); //$NON-NLS-1$ -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#createControlPanel(org.eclipse.swt.widgets.Composite) - */ -public void createControlPanel(final Composite parent) { - final Display display = parent.getDisplay(); - - toolBar = new ToolBar(parent, SWT.FLAT); - - ColorMenu colorMenu = new ColorMenu(); - - // menu for colorItem1 - menu1 = colorMenu.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - colorGB1 = gb; - colorItem1.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the background to the 5th item in the menu (blue) - colorGB1 = (GraphicsBackground)menu1.getItem(4).getData(); - - // toolbar item for color1 - colorItem1 = new ToolItem(toolBar, SWT.PUSH); - colorItem1.setText(GraphicsExample.getResourceString("GradientTabItem1")); - colorItem1.setImage(colorGB1.getThumbNail()); - colorItem1.addListener(SWT.Selection, new Listener(){ - public void handleEvent(Event event) { - final ToolItem toolItem = (ToolItem) event.widget; - final ToolBar toolBar = toolItem.getParent(); - Rectangle toolItemBounds = toolItem.getBounds(); - Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y)); - menu1.setLocation(point.x, point.y + toolItemBounds.height); - menu1.setVisible(true); - } - }); - - // menu for colorItem2 - menu2 = colorMenu.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - colorGB2 = gb; - colorItem2.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the background to the 3rd item in the menu (red) - colorGB2 = (GraphicsBackground)menu2.getItem(2).getData(); - - // toolbar item for color2 - colorItem2 = new ToolItem(toolBar, SWT.PUSH); - colorItem2.setText(GraphicsExample.getResourceString("GradientTabItem2")); - colorItem2.setImage(colorGB2.getThumbNail()); - colorItem2.addListener(SWT.Selection, new Listener(){ - public void handleEvent(Event event) { - final ToolItem toolItem = (ToolItem) event.widget; - final ToolBar toolBar = toolItem.getParent(); - Rectangle toolItemBounds = toolItem.getBounds(); - Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y)); - menu2.setLocation(point.x, point.y + toolItemBounds.height); - menu2.setVisible(true); - } - }); - - // toolbar item for swapping colors - ToolItem swapItem = new ToolItem(toolBar, SWT.PUSH); - swapItem.setText(GraphicsExample.getResourceString("SwapColors")); //$NON-NLS-1$ - swapItem.setImage(example.loadImage(display, "swap.gif")); - swapItem.addListener(SWT.Selection, new Listener(){ - public void handleEvent(Event event) { - GraphicsBackground tmp = colorGB1; - colorGB1 = colorGB2; - colorGB2 = tmp; - colorItem1.setImage(colorGB1.getThumbNail()); - colorItem2.setImage(colorGB2.getThumbNail()); - example.redraw(); - } - }); -} - -/** - * This method draws the gradient patterns that make up the image. The image - * consists of 4 rows, each consisting of 4 gradient patterns (total of 16). - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Image image = createImage(device, colorGB1.getBgColor1(), colorGB2.getBgColor1(), width, height); - Pattern p = new Pattern(device, image); - gc.setBackgroundPattern(p); - gc.fillRectangle(0, 0, width, height); - - p.dispose(); - image.dispose(); -} - - -/** - * Creates and returns an image made up of gradient patterns. The image takes up - * a quarter of the area of the total drawing surface. - * - * @param device - * A Device - * @param color1 - * A Color - * @param color2 - * A Color - * @param width - * Width of the drawing surface - * @param height - * Height of the drawing surface - */ -Image createImage(Device device, Color color1, Color color2, int width, int height) { - Image image = new Image(device, width/2, height/2); - GC gc = new GC(image); - Rectangle rect = image.getBounds(); - - Pattern pattern1 = new Pattern(device, rect.x, rect.y, rect.width/2f, rect.height/2f, color1, color2); - gc.setBackgroundPattern(pattern1); - Path path = new Path(device); - path.addRectangle(0, 0, width/4f, height/4f); - path.addRectangle(width/4f, height/4f, width/4f, height/4f); - gc.fillPath(path); - path.dispose(); - - Pattern pattern2 = new Pattern(device, rect.width, 0, rect.width/2f, rect.height/2f, color1, color2); - gc.setBackgroundPattern(pattern2); - path = new Path(device); - path.addRectangle(width/4f, 0, width/4f, height/4f); - path.addRectangle(0, height/4f, width/4f, height/4f); - gc.fillPath(path); - path.dispose(); - - gc.dispose(); - pattern1.dispose(); - pattern2.dispose(); - return image; -} - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicAntialiasTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicAntialiasTab.java deleted file mode 100644 index 482f700df5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicAntialiasTab.java +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates antialiasing for graphics. Antialiasing is used for - * smoothing jagged edges in graphics. This tab allows the user to see the - * effects of different antialiasing values. - */ -public class GraphicAntialiasTab extends GraphicsTab { - - Combo aliasCombo; - int[] aliasValues = { SWT.OFF, SWT.DEFAULT, SWT.ON }; - - Button colorButton; - Menu menu; - GraphicsBackground ovalColorGB; - - -public GraphicAntialiasTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Antialiasing"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Graphics"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("AntialiasingGraphicsDesc"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - Composite comp; - - // create drop down combo for antialiasing - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Antialiasing")); //$NON-NLS-1$ - aliasCombo = new Combo(comp, SWT.DROP_DOWN); - aliasCombo.add("OFF"); - aliasCombo.add("DEFAULT"); - aliasCombo.add("ON"); - aliasCombo.select(0); - aliasCombo.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - ColorMenu cm = new ColorMenu(); - cm.setColorItems(true); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - ovalColorGB = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - // initialize the background to the 5th item in the menu (blue) - ovalColorGB = (GraphicsBackground)menu.getItem(4).getData(); - - // color button - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample.getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(ovalColorGB.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - if (ovalColorGB != null && ovalColorGB.getBgColor1() != null) - gc.setBackground(ovalColorGB.getBgColor1()); - - gc.setAntialias(aliasValues[aliasCombo.getSelectionIndex()]); - - Path path = new Path(device); - float offsetX = 2*width/3f, offsetY = height/3f; - for(int i=0; i < 25; i++) { - path.addArc(offsetX-(50*i), offsetY-(25*i), 50+(100*i), 25+(50*i), 0, 360); - } - gc.fillPath(path); - path.dispose(); -} -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsBackground.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsBackground.java deleted file mode 100644 index f699fec320..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsBackground.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; - -/** - * This class is used for storing data relevant to a background. - */ -public class GraphicsBackground { - - private Image bgImage; - private Image thumbNail; - private Color bgColor1; - private Color bgColor2; - - public GraphicsBackground() { - bgImage = null; - thumbNail = null; - bgColor1 = null; - bgColor2 = null; - } - - public Image getBgImage() { - return bgImage; - } - - public void setBgImage(Image bgImage) { - this.bgImage = bgImage; - } - - public Color getBgColor1() { - return bgColor1; - } - - public void setBgColor1(Color bgColor1) { - this.bgColor1 = bgColor1; - } - - public Color getBgColor2() { - return bgColor2; - } - - public void setBgColor2(Color bgColor2) { - this.bgColor2 = bgColor2; - } - - public Image getThumbNail() { - return thumbNail; - } - - public void setThumbNail(Image thumbNail) { - this.thumbNail = thumbNail; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java deleted file mode 100644 index 5a61878859..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java +++ /dev/null @@ -1,648 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -import java.io.*; -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This class is the main class of the graphics application. Various "tabs" are - * created and made visible by this class. - */ -public class GraphicsExample { - - Composite parent; - GraphicsTab[] tabs; // tabs to be found in the application - GraphicsTab tab; // the current tab - GraphicsBackground background; // used to store information about the background - - ToolBar toolBar; // toolbar that contains backItem and dbItem - Tree tabList; // tree structure of tabs - Text tabDesc; // multi-line text widget that displays a tab description - Sash hSash, vSash; - Canvas canvas; - Composite tabControlPanel; - ToolItem backItem, dbItem; // background, double buffer items - Menu backMenu; // background menu item - - ArrayList resources; // stores resources that will be disposed - ArrayList tabs_in_order; // stores GraphicsTabs in the order that they appear in the tree - boolean animate = true; // whether animation should happen - - static boolean advanceGraphics, advanceGraphicsInit; - - static final int MARGIN = 5; - static final int SASH_SPACING = 1; - static final int TIMER = 30; - static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("examples_graphics"); //$NON-NLS-1$ - -/* - * Default constructor is needed so that example launcher can create an instance. - */ -public GraphicsExample() { - super(); -} - -public GraphicsExample(final Composite parent) { - this.parent = parent; - resources = new ArrayList(); - createControls(parent); - setTab(tab); - startAnimationTimer(); -} - -boolean checkAdvancedGraphics() { - if (advanceGraphicsInit) return advanceGraphics; - advanceGraphicsInit = true; - Display display = parent.getDisplay(); - try { - Path path = new Path(display); - path.dispose(); - } catch (SWTException e) { - Shell shell = display.getActiveShell(), newShell = null; - if (shell == null) shell = newShell = new Shell(display); - MessageBox dialog = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK); - dialog.setText(RESOURCE_BUNDLE.getString("Warning")); //$NON-NLS-1$ - dialog.setMessage(RESOURCE_BUNDLE.getString("LibNotFound")); //$NON-NLS-1$ - dialog.open(); - if (newShell != null) newShell.dispose(); - return false; - } - return advanceGraphics = true; -} - -void createControls(final Composite parent) { - tabs = createTabs(); - createToolBar(parent); - createTabList(parent); - hSash = new Sash(parent, SWT.HORIZONTAL); - createTabDesc(parent); - vSash = new Sash(parent, SWT.VERTICAL); - createCanvas(parent); - createControlPanel(parent); - - FormData data; - FormLayout layout = new FormLayout(); - parent.setLayout(layout); - - data = new FormData(); - data.left = new FormAttachment(0, MARGIN); - data.top = new FormAttachment(0, MARGIN); - data.right = new FormAttachment(100, -MARGIN); - toolBar.setLayoutData(data); - - data = new FormData(); - data.left = new FormAttachment(0, MARGIN); - data.top = new FormAttachment(toolBar, MARGIN); - data.right = new FormAttachment(vSash, -SASH_SPACING); - data.bottom = new FormAttachment(hSash, -SASH_SPACING); - tabList.setLayoutData(data); - - data = new FormData(); - data.left = new FormAttachment(0, MARGIN); - int offset = parent.getBounds().height - tabDesc.computeSize(SWT.DEFAULT, tabDesc.getLineHeight() * 10).y; - data.top = new FormAttachment(null, offset); - data.right = new FormAttachment(vSash, -SASH_SPACING); - hSash.setLayoutData(data); - - data = new FormData(); - data.left = new FormAttachment(0, MARGIN); - data.top = new FormAttachment(hSash, SASH_SPACING); - data.right = new FormAttachment(vSash, -SASH_SPACING); - data.bottom = new FormAttachment(100, -MARGIN); - tabDesc.setLayoutData(data); - - data = new FormData(); - data.left = new FormAttachment(null, tabList.computeSize(SWT.DEFAULT, SWT.DEFAULT).x + 50); - data.top = new FormAttachment(toolBar, MARGIN); - data.bottom = new FormAttachment(100, -MARGIN); - vSash.setLayoutData(data); - - data = new FormData(); - data.left = new FormAttachment(vSash, SASH_SPACING); - data.top = new FormAttachment(toolBar, MARGIN); - data.right = new FormAttachment(100, -MARGIN); - data.bottom = new FormAttachment(tabControlPanel); - canvas.setLayoutData(data); - - data = new FormData(); - data.left = new FormAttachment(vSash, SASH_SPACING); - data.right = new FormAttachment(100, -MARGIN); - data.bottom = new FormAttachment(100, -MARGIN); - tabControlPanel.setLayoutData(data); - - vSash.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - Rectangle rect = hSash.getParent().getClientArea(); - event.x = Math.min (Math.max (event.x, 60), rect.width - 60); - if (event.detail != SWT.DRAG) { - FormData data = (FormData)vSash.getLayoutData(); - data.left.offset = event.x; - parent.layout(true); - animate = true; - } else { - animate = false; - } - } - }); - hSash.addListener (SWT.Selection, new Listener () { - public void handleEvent (Event event) { - Rectangle rect = vSash.getParent().getClientArea(); - event.y = Math.min (Math.max (event.y, tabList.getLocation().y + 60), rect.height - 60); - if (event.detail != SWT.DRAG) { - FormData data = (FormData)hSash.getLayoutData(); - data.top.offset = event.y; - parent.layout(true); - } - } - }); -} - -void createCanvas(Composite parent) { - int style = SWT.NO_BACKGROUND; - if (dbItem.getSelection()) style |= SWT.DOUBLE_BUFFERED; - canvas = new Canvas(parent, style); - canvas.addListener(SWT.Paint, new Listener() { - public void handleEvent(Event event) { - GC gc = event.gc; - Rectangle rect = canvas.getClientArea(); - Device device = gc.getDevice(); - Pattern pattern = null; - if (background.getBgColor1() != null) { - if (background.getBgColor2() != null) { // gradient - pattern = new Pattern(device, 0, 0, rect.width, - rect.height, - background.getBgColor1(), - background.getBgColor2()); - gc.setBackgroundPattern(pattern); - } else { // solid color - gc.setBackground(background.getBgColor1()); - } - } else if (background.getBgImage() != null) { // image - pattern = new Pattern(device, background.getBgImage()); - gc.setBackgroundPattern(pattern); - } - gc.fillRectangle(rect); - GraphicsTab tab = getTab(); - if (tab != null) tab.paint(gc, rect.width, rect.height); - if (pattern != null) pattern.dispose(); - } - }); -} - -void recreateCanvas() { - if (dbItem.getSelection() == ((canvas.getStyle() & SWT.DOUBLE_BUFFERED) != 0)) return; - Object data = canvas.getLayoutData(); - if (canvas != null) canvas.dispose(); - createCanvas(parent); - canvas.setLayoutData(data); - parent.layout(true, true); -} - -/** - * Creates the control panel - * @param parent - */ -void createControlPanel(Composite parent) { - Group group; - tabControlPanel = group = new Group(parent, SWT.NONE); - group.setText(getResourceString("Settings")); //$NON-NLS-1$ - tabControlPanel.setLayout(new RowLayout()); -} - -void createToolBar(final Composite parent) { - final Display display = parent.getDisplay(); - - toolBar = new ToolBar(parent, SWT.FLAT); - - ToolItem back = new ToolItem(toolBar, SWT.PUSH); - back.setText(getResourceString("Back")); //$NON-NLS-1$ - back.setImage(loadImage(display, "back.gif")); //$NON-NLS-1$ - - back.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - int index = tabs_in_order.indexOf(tab) - 1; - if (index < 0) - index = tabs_in_order.size() - 1; - setTab((GraphicsTab)tabs_in_order.get(index)); - } - }); - - ToolItem next = new ToolItem(toolBar, SWT.PUSH); - next.setText(getResourceString("Next")); //$NON-NLS-1$ - next.setImage(loadImage(display, "next.gif")); //$NON-NLS-1$ - next.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - int index = (tabs_in_order.indexOf(tab) + 1)%tabs_in_order.size(); - setTab((GraphicsTab)tabs_in_order.get(index)); - } - }); - - ColorMenu colorMenu = new ColorMenu(); - - // setup items to be contained in the background menu - colorMenu.setColorItems(true); - colorMenu.setPatternItems(checkAdvancedGraphics()); - colorMenu.setGradientItems(checkAdvancedGraphics()); - - // create the background menu - backMenu = colorMenu.createMenu(parent, new ColorListener() { - public void setColor(GraphicsBackground gb) { - background = gb; - backItem.setImage(gb.getThumbNail()); - if (canvas != null) canvas.redraw(); - } - }); - - // initialize the background to the first item in the menu - background = (GraphicsBackground)backMenu.getItem(0).getData(); - - // background tool item - backItem = new ToolItem(toolBar, SWT.PUSH); - backItem.setText(getResourceString("Background")); //$NON-NLS-1$ - backItem.setImage(background.getThumbNail()); - backItem.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - if (event.widget == backItem) { - final ToolItem toolItem = (ToolItem) event.widget; - final ToolBar toolBar = toolItem.getParent(); - Rectangle toolItemBounds = toolItem.getBounds(); - Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y)); - backMenu.setLocation(point.x, point.y + toolItemBounds.height); - backMenu.setVisible(true); - } - } - }); - - // double buffer tool item - dbItem = new ToolItem(toolBar, SWT.CHECK); - dbItem.setText(getResourceString("DoubleBuffer")); //$NON-NLS-1$ - dbItem.setImage(loadImage(display, "db.gif")); //$NON-NLS-1$ - dbItem.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - setDoubleBuffered(dbItem.getSelection()); - } - }); -} - -/** - * Creates and returns a thumbnail image. - * - * @param device - * a device - * @param name - * filename of the image - */ -static Image createThumbnail(Device device, String name) { - Image image = new Image(device, name); - Rectangle src = image.getBounds(); - Image result = null; - if (src.width != 16 || src.height != 16) { - result = new Image(device, 16, 16); - GC gc = new GC(result); - Rectangle dest = result.getBounds(); - gc.drawImage(image, src.x, src.y, src.width, src.height, dest.x, dest.y, dest.width, dest.height); - gc.dispose(); - } - if (result != null) { - image.dispose(); - return result; - } - return image; -} - -/** - * Creates an image based on a gradient pattern made up of two colors. - * - * @param device - The Device - * @param color1 - The first color used to create the image - * @param color2 - The second color used to create the image - * - * */ -static Image createImage(Device device, Color color1, Color color2, int width, int height) { - Image image = new Image(device, width, height); - GC gc = new GC(image); - Rectangle rect = image.getBounds(); - Pattern pattern = new Pattern(device, rect.x, rect.y, rect.width - 1, - rect.height - 1, color1, color2); - gc.setBackgroundPattern(pattern); - gc.fillRectangle(rect); - gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height - 1); - gc.dispose(); - pattern.dispose(); - return image; -} - -/** - * Creates an image based on the color provided and returns it. - * - * @param device - The Device - * @param color - The color used to create the image - * - * */ -static Image createImage(Device device, Color color) { - Image image = new Image(device, 16, 16); - GC gc = new GC(image); - gc.setBackground(color); - Rectangle rect = image.getBounds(); - gc.fillRectangle(rect); - if (color.equals(device.getSystemColor(SWT.COLOR_BLACK))) { - gc.setForeground(device.getSystemColor(SWT.COLOR_WHITE)); - } - gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height - 1); - gc.dispose(); - return image; -} - -void createTabList(Composite parent) { - tabList = new Tree(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); - Arrays.sort(tabs, new Comparator() { - public int compare(Object tab0, Object tab1) { - return ((GraphicsTab)tab0).getText().compareTo(((GraphicsTab)tab1).getText()); - } - }); - HashSet set = new HashSet(); - for (int i = 0; i < tabs.length; i++) { - GraphicsTab tab = tabs[i]; - set.add(tab.getCategory()); - } - String[] categories = new String[set.size()]; - set.toArray(categories); - Arrays.sort(categories); - for (int i = 0; i < categories.length; i++) { - String text = categories[i]; - TreeItem item = new TreeItem(tabList, SWT.NONE); - item.setText(text); - } - tabs_in_order = new ArrayList(); - TreeItem[] items = tabList.getItems(); - for (int i = 0; i < items.length; i++) { - TreeItem item = items[i]; - for (int j = 0; j < tabs.length; j++) { - GraphicsTab tab = tabs[j]; - if (item.getText().equals(tab.getCategory())) { - TreeItem item1 = new TreeItem(item, SWT.NONE); - item1.setText(tab.getText()); - item1.setData(tab); - tabs_in_order.add(tab); - } - } - } - tabList.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - TreeItem item = (TreeItem)event.item; - if (item != null) { - GraphicsTab gt = (GraphicsTab)item.getData(); - if (gt == tab) return; - setTab((GraphicsTab)item.getData()); - } - } - }); -} - -/** - * Creates the multi-line text widget that will contain the tab description. - * */ -void createTabDesc(Composite parent) { - tabDesc = new Text(parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP | SWT.BORDER); - tabDesc.setEditable(false); - tabDesc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); -} - -/** - * Initializes the GraphicsTab instances that will be contained in GraphicsExample. - * */ -GraphicsTab[] createTabs() { - return new GraphicsTab[] { - new LineTab(this), - new StarPolyTab(this), - tab = new IntroTab(this), - new BlackHoleTab(this), - new AlphaTab(this), - new BallTab(this), - new CountDownTab(this), - new CurvesSWTTab(this), - new CurvesTab(this), - new CustomFontTab(this), - new FontBounceTab(this), - new GradientTab(this), - new ImageTransformTab(this), - new ShapesTab(this), - new MazeTab(this), - new RGBTab(this), - new SpiralTab(this), - new CardsTab(this), - new LineCapTab(this), - new InterpolationTab(this), - new PathClippingTab(this), - new PathClippingAnimTab(this), - new LineStyleTab(this), - new LineJoinTab(this), - new RegionClippingTab(this), - new CustomAlphaTab(this), - new TextAntialiasTab(this), - new GraphicAntialiasTab(this), - new ImageFlipTab(this), - new ImageScaleTab(this), - new PathTab(this), - }; -} - -/** - * Disposes all resources created by the receiver. - */ -public void dispose() { - if (tabs != null) { - for (int i = 0; i < tabs.length; i++) { - GraphicsTab tab = tabs[i]; - tab.dispose(); - } - } - tabs = null; - if (resources != null) { - for (int i = 0; i < resources.size(); i++) { - if (resources.get(i) instanceof Resource) { - ((Resource)resources.get(i)).dispose(); - } - } - } - resources = null; - - if (backMenu != null) { - backMenu.dispose(); - backMenu = null; - } -} - -TreeItem findItemByData(TreeItem[] items, Object data) { - for (int i = 0; i < items.length; i++) { - TreeItem item = items[i]; - if (item.getData() == data) return item; - item = findItemByData(item.getItems(), data); - if (item != null) return item; - } - return null; -} - -/** - * Gets the current tab. - */ -public GraphicsTab getTab() { - return tab; -} - -/** - * 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 String getResourceString(String key) { - try { - return RESOURCE_BUNDLE.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ - } -} - -static Image loadImage (Device device, Class clazz, String string) { - InputStream stream = clazz.getResourceAsStream (string); - if (stream == null) return null; - Image image = null; - try { - image = new Image (device, stream); - } catch (SWTException ex) { - } finally { - try { - stream.close (); - } catch (IOException ex) {} - } - return image; -} - -Image loadImage(Device device, String name) { - Image image = loadImage(device, GraphicsExample.class, name); - if (image != null) resources.add(image); - return image; -} - -public Shell open(final Display display) { - Shell shell = new Shell(display); - shell.setText(getResourceString("GraphicsExample")); //$NON-NLS-1$ - final GraphicsExample example = new GraphicsExample(shell); - shell.addListener(SWT.Close, new Listener() { - public void handleEvent(Event event) { - example.dispose(); - } - }); - shell.open(); - return shell; -} - -/** - * Redraws the current tab. - */ -public void redraw() { - canvas.redraw(); -} - -/** - * Sets wheter the canvas is double buffered or not. - */ -public void setDoubleBuffered(boolean doubleBuffered) { - dbItem.setSelection(doubleBuffered); - recreateCanvas(); -} - -/** - * Grabs input focus. - */ -public void setFocus() { - tabList.setFocus(); -} - -/** - * Sets the current tab. - */ -public void setTab(GraphicsTab tab) { - Control[] children = tabControlPanel.getChildren(); - for (int i = 0; i < children.length; i++) { - Control control = children[i]; - control.dispose(); - } - if (this.tab != null) this.tab.dispose(); - this.tab = tab; - if (tab != null) { - setDoubleBuffered(tab.getDoubleBuffered()); - tab.createControlPanel(tabControlPanel); - tabDesc.setText(tab.getDescription()); - } else { - tabDesc.setText(""); - } - FormData data = (FormData)tabControlPanel.getLayoutData(); - children = tabControlPanel.getChildren(); - if (children.length != 0) { - data.top = null; - } else { - data.top = new FormAttachment(100, -MARGIN); - } - parent.layout(true, true); - if (tab != null) { - TreeItem[] selection = tabList.getSelection(); - if (selection.length == 0 || selection[0].getData() != tab) { - TreeItem item = findItemByData(tabList.getItems(), tab); - if (item != null) tabList.setSelection(new TreeItem[]{item}); - } - } - canvas.redraw(); -} - -/** - * Starts the animation if the animate flag is set. - */ -void startAnimationTimer() { - final Display display = parent.getDisplay(); - display.timerExec(TIMER, new Runnable() { - public void run() { - if (canvas.isDisposed()) return; - int timeout = TIMER; - GraphicsTab tab = getTab(); - if (tab instanceof AnimatedGraphicsTab) { - AnimatedGraphicsTab animTab = (AnimatedGraphicsTab) tab; - if (animate && animTab.getAnimation()) { - Rectangle rect = canvas.getClientArea(); - animTab.next(rect.width, rect.height); - canvas.redraw(); - canvas.update(); - } - timeout = animTab.getAnimationTime(); - } - display.timerExec(timeout, this); - } - }); -} - -public static void main(String[] args) { - Display display = new Display(); - Shell shell = new GraphicsExample().open(display); - while (shell != null && !shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - display.dispose(); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsTab.java deleted file mode 100644 index 422dadf8f5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsTab.java +++ /dev/null @@ -1,73 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * This class is the one used for creating a graphic. Override the paint() - * method to create the drawing. To create an animated graphic, use the - * AnimatedGraphicsTab class. - */ -public abstract class GraphicsTab { - -GraphicsExample example; - -public GraphicsTab(GraphicsExample example) { - this.example = example; -} - -/** - * Creates the widgets used to control the drawing. - */ -public void createControlPanel(Composite parent) { -} - -/** - * Disposes resources created by the receiver. - */ -public void dispose() { -} - -/** - * Answer the receiver's name. - */ -public abstract String getText(); - -/** - * Answer the receiver's category. - */ -public String getCategory() { - return GraphicsExample.getResourceString("Misc"); //$NON-NLS-1$ -} - -/** - * Answer the receiver's description. - * */ -public String getDescription() { - return ""; -} - -/** - * Answer whether the receiver's drawing should be double bufferer. - */ -public boolean getDoubleBuffered() { - return false; -} - -/** - * Paint the receiver into the specified GC. - */ -public void paint(GC gc, int width, int height) { -} - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageFlipTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageFlipTab.java deleted file mode 100644 index ff9579b7aa..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageFlipTab.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * This tab demonstrates how an image can be flipped in various fashions. - */ -public class ImageFlipTab extends GraphicsTab { - -public ImageFlipTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Image"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Flip"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("FlipDescription"); //$NON-NLS-1$ -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Image image = GraphicsExample.loadImage(device, GraphicsExample.class, "houses.png"); - Rectangle bounds = image.getBounds(); - - // top - Transform transform = new Transform(device); - transform.translate((width-bounds.width)/2, (height-bounds.height)/2); - transform.scale(1, -1); - gc.setTransform(transform); - - // draw the original image - gc.drawImage(image, 0, 0); - - transform.dispose(); - - // bottom - transform = new Transform(device); - transform.translate((width-bounds.width)/2, 2*bounds.height + (height-bounds.height)/2); - transform.scale(1, -1); - gc.setTransform(transform); - - // draw the original image - gc.drawImage(image, 0, 0); - - transform.dispose(); - - // left - transform = new Transform(device); - transform.translate((width-bounds.width)/2, (height-bounds.height)/2); - transform.scale(-1, 1); - gc.setTransform(transform); - - // draw the original image - gc.drawImage(image, 0, 0); - - transform.dispose(); - - // right - transform = new Transform(device); - transform.translate(2*bounds.width + (width-bounds.width)/2, (height-bounds.height)/2); - transform.scale(-1, 1); - gc.setTransform(transform); - - // draw the original image - gc.drawImage(image, 0, 0); - - transform.dispose(); - - gc.setTransform(null); - gc.drawImage(image, (width-bounds.width)/2, (height-bounds.height)/2); - image.dispose(); -} - -/** - * Returns the name of a valid font for the host platform. - */ -static String getPlatformFont() { - if(SWT.getPlatform() == "win32") { - return "Arial"; - } else if (SWT.getPlatform() == "motif") { - return "Helvetica"; - } else if (SWT.getPlatform() == "gtk") { - return "Baekmuk Batang"; - } else if (SWT.getPlatform() == "carbon") { - return "Arial"; - } else { // photon, etc ... - return "Verdana"; - } -} -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageScaleTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageScaleTab.java deleted file mode 100644 index 545f8cf0d9..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageScaleTab.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.graphics.*; - -/** - * This tab demonstrates how an image can be scaled. - */ -public class ImageScaleTab extends GraphicsTab { - -public ImageScaleTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Image"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Scale"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("ScaleDescription"); //$NON-NLS-1$ -} - -public void paint(GC gc, int width, int height) { - Device device = gc.getDevice(); - Image image = GraphicsExample.loadImage(device, GraphicsExample.class, "houses.png"); - - Rectangle bounds = image.getBounds(); - Rectangle canvasBounds = example.canvas.getBounds(); - gc.drawImage(image, 0, 0, bounds.width, bounds.height, 0, 0, canvasBounds.width, canvasBounds.height); - - image.dispose(); -} -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageTransformTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageTransformTab.java deleted file mode 100644 index f19774eed1..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ImageTransformTab.java +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates transformations, such as scaling, rotation, and - * invert. It allows the user to specify values for scaling and rotation. - */ -public class ImageTransformTab extends GraphicsTab { - - private Spinner rotateSpinner, scaleSpinnerX, scaleSpinnerY; - private Button invertButton; - -/** - * Constructor - * @param example A GraphicsExample - */ -public ImageTransformTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Transform"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Image"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("TransformImgDescription"); //$NON-NLS-1$ -} - -/** - * This method creates the controls specific to the tab. The call to the - * createControlPanel method in the super class create the controls that are - * defined in the super class. - * - * @param parent The parent composite - */ -public void createControlPanel(Composite parent) { - - Composite comp; - GridLayout gridLayout = new GridLayout(2, false); - - // create spinner for the rotation angle - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - - new Label(comp, SWT.CENTER).setText(GraphicsExample.getResourceString("Rotate")); //$NON-NLS-1$ - rotateSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - rotateSpinner.setSelection(0); - rotateSpinner.setMinimum(0); - rotateSpinner.setMaximum(360); - rotateSpinner.setIncrement(10); - rotateSpinner.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // create a slider for scaling along the x axis - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - - new Label(comp, SWT.CENTER).setText(GraphicsExample.getResourceString("xscale")); //$NON-NLS-1$ - scaleSpinnerX = new Spinner(comp, SWT.BORDER | SWT.WRAP); - scaleSpinnerX.setDigits(2); - scaleSpinnerX.setMinimum(1); - scaleSpinnerX.setMaximum(500); - scaleSpinnerX.setSelection(75); - scaleSpinnerX.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // create a slider for scaling along the y axis - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - - new Label(comp, SWT.CENTER).setText(GraphicsExample.getResourceString("yscale")); //$NON-NLS-1$ - scaleSpinnerY = new Spinner(comp, SWT.BORDER | SWT.WRAP); - scaleSpinnerY.setDigits(2); - scaleSpinnerY.setMinimum(1); - scaleSpinnerY.setMaximum(500); - scaleSpinnerY.setSelection(75); - scaleSpinnerY.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // create a button for "invert" - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - invertButton = new Button(comp, SWT.TOGGLE); - invertButton.setText(GraphicsExample.getResourceString("Invert")); //$NON-NLS-1$ - invertButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Image image = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_club.jpg"); - - Transform transform = new Transform(device); - - // scale image - transform.scale(scaleSpinnerX.getSelection()/100f, scaleSpinnerY.getSelection()/100f); - - // rotate on center of image - Rectangle rect = image.getBounds(); - transform.translate(rect.width/2, rect.height/2); - transform.rotate(rotateSpinner.getSelection()); - transform.translate(-rect.width/2, -rect.height/2); - - if(invertButton.getSelection()){ - transform.invert(); - } - - gc.setTransform(transform); - - gc.drawImage(image, 0, 0); - gc.drawRoundRectangle(0, 0, image.getBounds().width, - image.getBounds().height, 22, 22); - transform.dispose(); - image.dispose(); -} - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/InterpolationTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/InterpolationTab.java deleted file mode 100644 index d9eef86ca3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/InterpolationTab.java +++ /dev/null @@ -1,196 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab shows the effects of applying various interpolation algorithms to - * images that have been stretched or shrunk. - */ -public class InterpolationTab extends GraphicsTab { - - Combo imageCb; // combo for selecting images - -public InterpolationTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Image"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Interpolation"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("ImageInterpolationDesc"); //$NON-NLS-1$ -} - -public void createControlPanel(Composite parent) { - - Composite comp; - GridLayout gridLayout = new GridLayout(2, false); - - // create drop down combo - comp = new Composite(parent, SWT.NONE); - comp.setLayout(gridLayout); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Image")); //$NON-NLS-1$ - imageCb = new Combo(comp, SWT.DROP_DOWN); - imageCb.add(GraphicsExample.getResourceString("House")); //$NON-NLS-1$ - imageCb.add(GraphicsExample.getResourceString("Question")); //$NON-NLS-1$ - imageCb.add(GraphicsExample.getResourceString("Task")); //$NON-NLS-1$ - imageCb.add(GraphicsExample.getResourceString("Font")); //$NON-NLS-1$ - imageCb.add(GraphicsExample.getResourceString("Cube")); //$NON-NLS-1$ - imageCb.add(GraphicsExample.getResourceString("SWT")); //$NON-NLS-1$ - imageCb.add(GraphicsExample.getResourceString("Ovals")); //$NON-NLS-1$ - imageCb.select(0); - imageCb.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - float scaleX = 10f; - float scaleY = 10f; - Image image = null; - switch (imageCb.getSelectionIndex()) { - - case 0: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "home_nav.gif"); - break; - case 1: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "help.gif"); - break; - case 2: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "task.gif"); - break; - case 3: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "font.gif"); - break; - case 4: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "cube.png"); - scaleX = 0.75f; - scaleY = 0.5f; - break; - case 5: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "swt.png"); - scaleX = 0.4f; - scaleY = 0.8f; - break; - case 6: - image = GraphicsExample.loadImage(device, GraphicsExample.class, "ovals.png"); - scaleX = 1.1f; - scaleY = 0.5f; - break; - } - - Rectangle bounds = image.getBounds(); - - // draw the original image - gc.drawImage(image, (width-bounds.width)/2, 20); - - Font font = new Font(device, getPlatformFont(), 20, SWT.NORMAL); - gc.setFont(font); - - // write some text below the original image - String text = GraphicsExample.getResourceString("OriginalImg"); //$NON-NLS-1$ - Point size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 25 + bounds.height, true); - - Transform transform = new Transform(device); - transform.translate((width - (bounds.width * scaleX + 10) * 4) / 2, 25 + bounds.height + size.y + - (height - (25 + bounds.height + size.y + bounds.height*scaleY)) / 2); - transform.scale(scaleX, scaleY); - - // --- draw strings --- - float[] point = new float[2]; - text = GraphicsExample.getResourceString("None"); //$NON-NLS-1$ - size = gc.stringExtent(text); - point[0] = (scaleX*bounds.width + 5 - size.x)/(2*scaleX); - point[1] = bounds.height; - transform.transform(point); - gc.drawString(text, (int)point[0], (int)point[1], true); - - text = GraphicsExample.getResourceString("Low"); //$NON-NLS-1$ - size = gc.stringExtent(text); - point[0] = (scaleX*bounds.width + 5 - size.x)/(2*scaleX) + bounds.width; - point[1] = bounds.height; - transform.transform(point); - gc.drawString(text, (int)point[0], (int)point[1], true); - - text = GraphicsExample.getResourceString("Default"); //$NON-NLS-1$ - size = gc.stringExtent(text); - point[0] = (scaleX*bounds.width + 5 - size.x)/(2*scaleX) + 2*bounds.width; - point[1] = bounds.height; - transform.transform(point); - gc.drawString(text, (int)point[0], (int)point[1], true); - - text = GraphicsExample.getResourceString("High"); //$NON-NLS-1$ - size = gc.stringExtent(text); - point[0] = (scaleX*bounds.width + 5 - size.x)/(2*scaleX) + 3*bounds.width; - point[1] = bounds.height; - transform.transform(point); - gc.drawString(text, (int)point[0], (int)point[1], true); - - gc.setTransform(transform); - transform.dispose(); - - // --- draw images --- - - // no interpolation - gc.setInterpolation(SWT.NONE); - gc.drawImage(image, 0, 0); - - // low interpolation - gc.setInterpolation(SWT.LOW); - gc.drawImage(image, bounds.width, 0); - - // default interpolation - gc.setInterpolation(SWT.DEFAULT); - gc.drawImage(image, 2*bounds.width, 0); - - // high interpolation - gc.setInterpolation(SWT.HIGH); - gc.drawImage(image, 3*bounds.width, 0); - - font.dispose(); - if (image != null) image.dispose(); -} - -/** - * Returns the name of a valid font for the host platform. - */ -static String getPlatformFont() { - if(SWT.getPlatform() == "win32") { - return "Arial"; - } else if (SWT.getPlatform() == "motif") { - return "Helvetica"; - } else if (SWT.getPlatform() == "gtk") { - return "Baekmuk Batang"; - } else if (SWT.getPlatform() == "carbon") { - return "Arial"; - } else { // photon, etc ... - return "Verdana"; - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/IntroTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/IntroTab.java deleted file mode 100644 index 9316effe1b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/IntroTab.java +++ /dev/null @@ -1,97 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -public class IntroTab extends AnimatedGraphicsTab { - - Font font; - Image image; - Random random = new Random(); - float x, y; - float incX = 10.0f; - float incY = 5.0f; - int textWidth, textHeight; - String text = GraphicsExample.getResourceString("SWT"); - -public IntroTab(GraphicsExample example) { - super(example); -} - -public void dispose() { - if (image != null) image.dispose(); - image = null; - if (font != null) font.dispose(); - font = null; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Introduction"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("SWT"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("IntroductionDescription"); //$NON-NLS-1$ -} - -public void next(int width, int height) { - x += incX; - y += incY; - float random = (float)Math.random(); - if (x + textWidth > width) { - x = width - textWidth; - incX = random * -width / 16 - 1; - } - if (x < 0) { - x = 0; - incX = random * width / 16 + 1; - } - if (y + textHeight > height) { - y = (height - textHeight)- 2; - incY = random * -height / 16 - 1; - } - if (y < 0) { - y = 0; - incY = random * height / 16 + 1; - } -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - if (image == null) { - image = example.loadImage(device, "irmaos.jpg"); - Rectangle rect = image.getBounds(); - FontData fd = device.getSystemFont().getFontData()[0]; - font = new Font(device, fd.getName(), rect.height / 4, SWT.BOLD); - gc.setFont(font); - Point size = gc.stringExtent(text); - textWidth = size.x; - textHeight = size.y; - } - Path path = new Path(device); - path.addString(text, x, y, font); - gc.setClipping(path); - Rectangle rect = image.getBounds(); - gc.drawImage(image, 0, 0, rect.width, rect.height, 0, 0, width, height); - gc.setClipping((Rectangle)null); - gc.setForeground(device.getSystemColor(SWT.COLOR_BLUE)); - gc.drawPath(path); - path.dispose(); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineCapTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineCapTab.java deleted file mode 100644 index e28ffa303f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineCapTab.java +++ /dev/null @@ -1,151 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates various line caps applicable to a line. - */ -public class LineCapTab extends GraphicsTab { - - Button colorButton; - GraphicsBackground foreground; - Menu menu; - -public LineCapTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Lines"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("LineCap"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("LineCapDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - Composite comp; - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - foreground = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the foreground to the 3rd item in the menu (red) - foreground = (GraphicsBackground)menu.getItem(2).getData(); - - // color button - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample - .getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(foreground.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -public void paint(GC gc, int width, int height) { - Device device = gc.getDevice(); - - // draw side lines - gc.setLineWidth(1); - gc.setLineStyle(SWT.LINE_DOT); - gc.setForeground(device.getSystemColor(SWT.COLOR_BLACK)); - gc.drawLine(3*width/16, height/6, 3*width/16, 5*height/6); - gc.drawLine(13*width/16, height/6, 13*width/16, 5*height/6); - gc.setLineStyle(SWT.LINE_SOLID); - - // draw labels - Font font = new Font(device, getPlatformFont(), 20, SWT.NORMAL); - gc.setFont(font); - - String text = GraphicsExample.getResourceString("Flat"); //$NON-NLS-1$ - Point size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 3*height/12, true); - text = GraphicsExample.getResourceString("Square"); //$NON-NLS-1$ - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 5*height/12, true); - text = GraphicsExample.getResourceString("Round"); //$NON-NLS-1$ - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 7*height/12, true); - font.dispose(); - - Pattern pattern = null; - if (foreground.getBgColor1() != null) { - gc.setForeground(foreground.getBgColor1()); - } else if (foreground.getBgImage() != null) { - pattern = new Pattern(device, foreground.getBgImage()); - gc.setForegroundPattern(pattern); - } - - // draw lines with caps - gc.setLineWidth(20); - gc.setLineCap(SWT.CAP_FLAT); - gc.drawLine(3*width/16, 2*height/6, 13*width/16, 2*height/6); - gc.setLineCap(SWT.CAP_SQUARE); - gc.drawLine(3*width/16, 3*height/6, 13*width/16, 3*height/6); - gc.setLineCap(SWT.CAP_ROUND); - gc.drawLine(3*width/16, 4*height/6, 13*width/16, 4*height/6); - - if (pattern != null) pattern.dispose(); -} - -/** - * Returns the name of a valid font for the resident platform. - */ -static String getPlatformFont() { - if(SWT.getPlatform() == "win32") { - return "Arial"; - } else if (SWT.getPlatform() == "motif") { - return "Helvetica"; - } else if (SWT.getPlatform() == "gtk") { - return "Baekmuk Batang"; - } else if (SWT.getPlatform() == "carbon") { - return "Arial"; - } else { // photon, etc ... - return "Verdana"; - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineJoinTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineJoinTab.java deleted file mode 100644 index 06dc8cf285..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineJoinTab.java +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates various line joins. It allows a user to choose from - * bevel, miter and round. - */ -public class LineJoinTab extends GraphicsTab { - - private Combo joinCb; - private Button colorButton; - private GraphicsBackground shapeColor; - private Menu menu; - private int [] joinValues = new int [] {SWT.JOIN_BEVEL, SWT.JOIN_MITER, SWT.JOIN_ROUND}; - -public LineJoinTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Lines"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("LineJoin"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("LineJoinDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - // create drop down combo for choosing clipping - Composite comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("LineJoin")); //$NON-NLS-1$ - joinCb = new Combo(comp, SWT.DROP_DOWN); - joinCb.add(GraphicsExample - .getResourceString("bevel")); //$NON-NLS-1$ - joinCb.add(GraphicsExample - .getResourceString("miter")); //$NON-NLS-1$ - joinCb.add(GraphicsExample - .getResourceString("round")); //$NON-NLS-1$ - joinCb.select(1); - joinCb.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // color menu - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - shapeColor = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the shape color to the 4th item in the menu (green) - shapeColor =(GraphicsBackground)menu.getItem(3).getData(); - - // color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample - .getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(shapeColor.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); - -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - gc.setLineWidth(20); - gc.setLineJoin(joinValues[joinCb.getSelectionIndex()]); - - // set the foreground color or pattern - Pattern pattern = null; - if (shapeColor.getBgColor1() != null) { - gc.setForeground(shapeColor.getBgColor1()); - } else if (shapeColor.getBgImage() != null) { - pattern = new Pattern(device, shapeColor.getBgImage()); - gc.setForegroundPattern(pattern); - } - - // draw the shape - Path path = new Path(device); - path.moveTo(width/2, 25); - path.lineTo(2*width/3, height/3); - path.lineTo(width-25, height/2); - path.lineTo(2*width/3, 2*height/3); - path.lineTo(width/2, height-25); - path.lineTo(width/3, 2*height/3); - path.lineTo(25, height/2); - path.lineTo(width/3, height/3); - path.lineTo(width/2, 25); - path.close(); - gc.drawPath(path); - path.dispose(); - - if (pattern != null) pattern.dispose(); -} - -} - - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineStyleTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineStyleTab.java deleted file mode 100644 index 698c7a295d..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineStyleTab.java +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates line styles applicable to a line. It shows the use of the - * <code>GC.setLineStyle()</code> method. - */ -public class LineStyleTab extends GraphicsTab { - - Button colorButton; - GraphicsBackground lineColor; - Menu menu; - Spinner lineWidthSpinner; - -public LineStyleTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Lines"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("LineStyles"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("LineStylesDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - Composite comp; - - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("LineWidth")); //$NON-NLS-1$ - lineWidthSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - lineWidthSpinner.setSelection(10); - lineWidthSpinner.setMinimum(1); - lineWidthSpinner.setMaximum(30); - lineWidthSpinner.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - lineColor = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - // initialize the foreground to the 5th item in the menu (blue) - lineColor = (GraphicsBackground)menu.getItem(4).getData(); - - // color button - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample - .getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(lineColor.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -public void paint(GC gc, int width, int height) { - Device device = gc.getDevice(); - - Pattern pattern = null; - if (lineColor.getBgColor1() != null) { - gc.setForeground(lineColor.getBgColor1()); - } else if (lineColor.getBgImage() != null) { - pattern = new Pattern(device, lineColor.getBgImage()); - gc.setForegroundPattern(pattern); - } - - // set line width - gc.setLineWidth(lineWidthSpinner.getSelection()); - - // draw lines with caps - gc.drawLine(3*width/16, 1*height/6, 13*width/16, 1*height/6); - gc.setLineStyle(SWT.LINE_DASH); - gc.drawLine(3*width/16, 2*height/6, 13*width/16, 2*height/6); - gc.setLineStyle(SWT.LINE_DOT); - gc.drawLine(3*width/16, 3*height/6, 13*width/16, 3*height/6); - gc.setLineStyle(SWT.LINE_DASHDOT); - gc.drawLine(3*width/16, 4*height/6, 13*width/16, 4*height/6); - gc.setLineStyle(SWT.LINE_DASHDOTDOT); - gc.drawLine(3*width/16, 5*height/6, 13*width/16, 5*height/6); - - // draw labels - Font font = new Font(device, getPlatformFont(), 20, SWT.NORMAL); - gc.setFont(font); - - gc.setForeground(device.getSystemColor(SWT.COLOR_BLACK)); - - String text = GraphicsExample.getResourceString("Solid"); //$NON-NLS-1$ - Point size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 1*height/12, true); - text = GraphicsExample.getResourceString("Dash"); //$NON-NLS-1$ - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 3*height/12, true); - text = GraphicsExample.getResourceString("Dot"); //$NON-NLS-1$ - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 5*height/12, true); - text = GraphicsExample.getResourceString("DashDot"); //$NON-NLS-1$ - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 7*height/12, true); - text = GraphicsExample.getResourceString("DashDotDot"); //$NON-NLS-1$ - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 9*height/12, true); - font.dispose(); -} - -/** - * Returns the name of a valid font for the resident platform. - */ -static String getPlatformFont() { - if(SWT.getPlatform() == "win32") { - return "Arial"; - } else if (SWT.getPlatform() == "motif") { - return "Helvetica"; - } else if (SWT.getPlatform() == "gtk") { - return "Baekmuk Batang"; - } else if (SWT.getPlatform() == "carbon") { - return "Arial"; - } else { // photon, etc ... - return "Verdana"; - } -} -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineTab.java deleted file mode 100644 index 725f857429..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/LineTab.java +++ /dev/null @@ -1,37 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.graphics.*; - -public class LineTab extends GraphicsTab { - -public LineTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Lines"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Line"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("LineDescription"); //$NON-NLS-1$ -} - -public void paint(GC gc, int width, int height) { - gc.drawLine(0, 0, width, height); - gc.drawLine(width, 0, 0, height); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/MazeTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/MazeTab.java deleted file mode 100644 index 674e145f4e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/MazeTab.java +++ /dev/null @@ -1,328 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab shows three circles, each following a different path in a maze. - * Only one of the three circles follows the correct path. - */ -public class MazeTab extends AnimatedGraphicsTab { - - int nextIndex, nextIndex2, nextIndex3; - int xcoord, ycoord, xcoord2, ycoord2, xcoord3, ycoord3; - ArrayList nextCoord, nextCoord2, nextCoord3; - boolean isDone, isDone2, isDone3; - Image image; - -/** - * Constructor - * @param example A GraphicsExample - */ -public MazeTab(GraphicsExample example) { - super(example); - - // correct path - nextCoord = new ArrayList(); - nextCoord.addAll(moveDown(20, -50, 20, 110, 10)); - nextCoord.addAll(moveRight(30, 110, 130, 110, 10)); - nextCoord.addAll(moveUp(135, 100, 135, 15, 10)); - nextCoord.addAll(moveRight(140, 15, 210, 15, 10)); - nextCoord.addAll(moveDown(210, 25, 210, 75, 10)); - nextCoord.addAll(moveRight(220, 75, 320, 75, 10)); - nextCoord.addAll(moveUp(320, 65, 320, 55, 10)); - nextCoord.addAll(moveRight(330, 50, 475, 50, 10)); - nextCoord.addAll(moveDown(475, 60, 475, 225, 10)); - nextCoord.addAll(moveLeft(465, 225, 200, 225, 10)); - nextCoord.addAll(moveUp(200, 215, 200, 180, 10)); - nextCoord.addAll(moveLeft(190, 180, 120, 180, 10)); - nextCoord.addAll(moveDown(120, 190, 120, 320, 10)); - nextCoord.addAll(moveRight(130, 320, 475, 320, 10)); - nextCoord.addAll(moveDown(475, 330, 475, 435, 10)); - nextCoord.addAll(moveLeft(465, 435, 20, 435, 10)); - nextCoord.addAll(moveDown(20, 445, 20, 495, 10)); - - nextIndex = 0; - xcoord = ((Integer)nextCoord.get(nextIndex)).intValue(); - ycoord = ((Integer)nextCoord.get(nextIndex+1)).intValue(); - - // wrong path 1 - nextCoord2 = new ArrayList(); - nextCoord2.addAll(moveDown(20, -25, 20, 110, 10)); - nextCoord2.addAll(moveRight(30, 110, 130, 110, 10)); - nextCoord2.addAll(moveUp(135, 100, 135, 15, 10)); - nextCoord2.addAll(moveRight(140, 15, 520, 15, 10)); - nextCoord2.addAll(moveDown(525, 15, 525, 480, 10)); - nextCoord2.addAll(moveLeft(515, 480, 70, 480, 10)); - - nextIndex2 = 0; - xcoord2 = ((Integer)nextCoord2.get(nextIndex2)).intValue(); - ycoord2 = ((Integer)nextCoord2.get(nextIndex2+1)).intValue(); - - // wrong path 2 - nextCoord3 = new ArrayList(); - nextCoord3.addAll(moveDown(20, 0, 20, 110, 10)); - nextCoord3.addAll(moveRight(30, 110, 130, 110, 10)); - nextCoord3.addAll(moveUp(135, 100, 135, 15, 10)); - nextCoord3.addAll(moveRight(140, 15, 210, 15, 10)); - nextCoord3.addAll(moveDown(210, 25, 210, 75, 10)); - nextCoord3.addAll(moveRight(220, 75, 320, 75, 10)); - nextCoord3.addAll(moveUp(320, 65, 320, 55, 10)); - nextCoord3.addAll(moveRight(330, 50, 475, 50, 10)); - nextCoord3.addAll(moveDown(475, 60, 475, 225, 10)); - nextCoord3.addAll(moveLeft(465, 225, 425, 225, 10)); - nextCoord3.addAll(moveUp(420, 225, 420, 150, 10)); - nextCoord3.addAll(moveLeft(420, 145, 70, 145, 10)); - nextCoord3.addAll(moveDown(70, 150, 70, 320, 10)); - - nextIndex3 = 0; - xcoord3 = ((Integer)nextCoord3.get(nextIndex3)).intValue(); - ycoord3 = ((Integer)nextCoord3.get(nextIndex3+1)).intValue(); - - isDone = isDone2 = isDone3 = false; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Misc"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Maze"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("MazeDescription"); //$NON-NLS-1$ -} - -public int getInitialAnimationTime() { - return 50; -} - -public void dispose() { - if (image != null) { - image.dispose(); - image = null; - } -} - -public void createControlPanel(Composite parent) { - super.createControlPanel(parent); - - // add selection listener to reset nextNumber after - // the sequence has completed - playItem.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - if (isDone){ - nextIndex = nextIndex2 = nextIndex3 = 0; - isDone = isDone2 = isDone3 = false; - } - } - }); -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#next(int, int) - */ -public void next(int width, int height) { - - if (nextIndex+2 < nextCoord.size()) { - nextIndex = (nextIndex+2)%nextCoord.size(); - xcoord = ((Integer)nextCoord.get(nextIndex)).intValue(); - ycoord = ((Integer)nextCoord.get(nextIndex+1)).intValue(); - } else { - // stop animation - setAnimation(false); - isDone = true; - } - - if (nextIndex2+2 < nextCoord2.size()) { - nextIndex2 = (nextIndex2+2)%nextCoord2.size(); - xcoord2 = ((Integer)nextCoord2.get(nextIndex2)).intValue(); - ycoord2 = ((Integer)nextCoord2.get(nextIndex2+1)).intValue(); - } else { - isDone2 = true; - } - - if (nextIndex3+2 < nextCoord3.size()) { - nextIndex3 = (nextIndex3+2)%nextCoord3.size(); - xcoord3 = ((Integer)nextCoord3.get(nextIndex3)).intValue(); - ycoord3 = ((Integer)nextCoord3.get(nextIndex3+1)).intValue(); - } else { - isDone3 = true; - } -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - Device device = gc.getDevice(); - - if (image == null) { - image = example.loadImage(device, "maze.bmp"); - } - // draw maze - Rectangle bounds = image.getBounds(); - int x = (width - bounds.width) / 2; - int y = (height - bounds.height) / 2; - gc.drawImage(image, x, y); - - // draw correct oval - gc.setBackground(device.getSystemColor(SWT.COLOR_RED)); - gc.fillOval(x + xcoord, y + ycoord, 16, 16); - gc.drawOval(x + xcoord, y + ycoord, 15, 15); - - // draw wrong oval 1 - gc.setBackground(device.getSystemColor(SWT.COLOR_BLUE)); - gc.fillOval(x + xcoord2, y + ycoord2, 16, 16); - gc.drawOval(x + xcoord2, y + ycoord2, 15, 15); - - // draw wrong oval 2 - gc.setBackground(device.getSystemColor(SWT.COLOR_GREEN)); - gc.fillOval(x + xcoord3, y + ycoord3, 16, 16); - gc.drawOval(x + xcoord3, y + ycoord3, 15, 15); - - if (isDone2) { - Image helpImg = example.loadImage(device, "help.gif"); - gc.drawImage(helpImg, x + xcoord2 + 16, y + ycoord2 - 16); - helpImg.dispose(); - } - - if (isDone3) { - Image helpImg = example.loadImage(device, "help.gif"); - gc.drawImage(helpImg, x + xcoord3 + 16, y + ycoord3 - 16); - helpImg.dispose(); - } -} - -/** - * Returns a list of coordinates moving in a "left-moving" fashion from the start - * point to the end point inclusively. - * - * @param x1 - * X component of the start point - * @param y1 - * Y component of the start point - * @param x2 - * X component of the end point - * @param y2 - * Y component of the end point - * @param stepsize - * The number of pixels that separate each coordinate - */ -private ArrayList moveLeft(int x1, int y1, int x2, int y2, int stepsize) { - ArrayList coords = new ArrayList(); - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - while(x1 - stepsize > x2) { - x1 = x1 - stepsize; - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - } - coords.add(new Integer(x2)); - coords.add(new Integer(y2)); - return coords; -} - -/** - * Returns a list of coordinates moving in a "right-moving" fashion from the start - * point to the end point inclusively. - * - * @param x1 - * X component of the start point - * @param y1 - * Y component of the start point - * @param x2 - * X component of the end point - * @param y2 - * Y component of the end point - * @param stepsize - * The number of pixels that separate each coordinate - */ -private ArrayList moveRight(int x1, int y1, int x2, int y2, int stepsize) { - ArrayList coords = new ArrayList(); - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - while(x1 + stepsize < x2) { - x1 = x1 + stepsize; - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - } - coords.add(new Integer(x2)); - coords.add(new Integer(y2)); - return coords; -} - -/** - * Returns a list of coordinates moving in an upward fashion from the start - * point to the end point inclusively. - * - * @param x1 - * X component of the start point - * @param y1 - * Y component of the start point - * @param x2 - * X component of the end point - * @param y2 - * Y component of the end point - * @param stepsize - * The number of pixels that separate each coordinate - */ -private ArrayList moveUp(int x1, int y1, int x2, int y2, int stepsize) { - ArrayList coords = new ArrayList(); - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - while(y1 - stepsize > y2) { - y1 = y1 - stepsize; - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - } - coords.add(new Integer(x2)); - coords.add(new Integer(y2)); - return coords; -} - -/** - * Returns a list of coordinates moving in a downward fashion from the start - * point to the end point inclusively. - * - * @param x1 - * X component of the start point - * @param y1 - * Y component of the start point - * @param x2 - * X component of the end point - * @param y2 - * Y component of the end point - * @param stepsize - * The number of pixels that separate each coordinate - */ -private ArrayList moveDown(int x1, int y1, int x2, int y2, int stepsize) { - ArrayList coords = new ArrayList(); - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - while(y1 + stepsize < y2) { - y1 = y1 + stepsize; - coords.add(new Integer(x1)); - coords.add(new Integer(y1)); - } - coords.add(new Integer(x2)); - coords.add(new Integer(y2)); - return coords; -} - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathClippingAnimTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathClippingAnimTab.java deleted file mode 100644 index 343c4ef90b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathClippingAnimTab.java +++ /dev/null @@ -1,207 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This is another tab that demonstrates the use of a path clipping. - */ -public class PathClippingAnimTab extends AnimatedGraphicsTab { - - private Button colorButton; - private GraphicsBackground background; - private Menu menu; - private int rectWidth = 300; - private int rectHeight = 300; - private int incWidth = 5; - private int incHeight = 5; - private boolean vertical = false; - private int angle; - - public PathClippingAnimTab(GraphicsExample example) { - super(example); - } - - public String getCategory() { - return GraphicsExample.getResourceString("Clipping"); //$NON-NLS-1$ - } - - public String getText() { - return GraphicsExample.getResourceString("AnimPathClipping"); //$NON-NLS-1$ - } - - public String getDescription() { - return GraphicsExample.getResourceString("AnimPathClippingDesc"); //$NON-NLS-1$ - } - - public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } - } - - /** - * Creates the widgets used to control the drawing. - */ - public void createControlPanel(Composite parent) { - super.createControlPanel(parent); - - // color menu - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - background = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the background to the 5th item in the menu (blue) - background = (GraphicsBackground) menu.getItem(4).getData(); - - // color button - Composite comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample.getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(background.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); - } - - public void next(int width, int height) { - angle = (angle + 5)%360; - if (vertical) { - if (rectHeight <= 0) { - incHeight = -incHeight; - } - if (rectHeight >= height) { - incHeight = -incHeight; - vertical = false; - } - rectHeight = rectHeight + incHeight; - } else { - if (rectWidth <= 0) { - incWidth = -incWidth; - } - if (rectWidth >= width) { - incWidth = -incWidth; - vertical = true; - } - rectWidth = rectWidth + incWidth; - } - } - - public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - // top triangle - Path path = new Path(device); - path.moveTo(width/2, 0); - path.lineTo(width/2+100, 173); - path.lineTo(width/2-100, 173); - path.lineTo(width/2, 0); - - // bottom triangle - Path path2 = new Path(device); - path2.moveTo(width/2, height); - path2.lineTo(width/2+100, height-173); - path2.lineTo(width/2-100, height-173); - path2.lineTo(width/2, height); - - // left triangle - Path path3 = new Path(device); - path3.moveTo(0, height/2); - path3.lineTo(173, height/2-100); - path3.lineTo(173, height/2+100); - path3.lineTo(0, height/2); - - // right triangle - Path path4 = new Path(device); - path4.moveTo(width, height/2); - path4.lineTo(width-173, height/2-100); - path4.lineTo(width-173, height/2+100); - path4.lineTo(width, height/2); - - // circle - Path path5 = new Path(device); - path5.moveTo((width-200)/2, (height-200)/2); - path5.addArc((width-200)/2, (height-200)/2, 200, 200, 0, 360); - - // top rectangle - Path path6 = new Path(device); - path6.addRectangle((width-40)/2, 175, 40, ((height-200)/2)-177); - - // bottom rectangle - Path path7 = new Path(device); - path7.addRectangle((width-40)/2, ((height-200)/2)+202, 40, (height-175)-(((height-200)/2)+202)); - - // left rectangle - Path path8 = new Path(device); - path8.addRectangle(175, (height-40)/2, ((width-200)/2)-177, 40); - - // right rectangle - Path path9 = new Path(device); - path9.addRectangle((width-200)/2+202, (height-40)/2, (width-175)-((width-200)/2+202), 40); - - path.addPath(path2); - path.addPath(path3); - path.addPath(path4); - path.addPath(path5); - path.addPath(path6); - path.addPath(path7); - path.addPath(path8); - path.addPath(path9); - gc.setClipping(path); - - Pattern pattern = null; - if (background.getBgColor1() != null) { - gc.setBackground(background.getBgColor1()); - } else if (background.getBgImage() != null) { - pattern = new Pattern(device, background.getBgImage()); - gc.setBackgroundPattern(pattern); - } - - gc.setLineWidth(2); - gc.fillRectangle((width-rectWidth)/2, (height-rectHeight)/2, rectWidth, rectHeight); - gc.drawPath(path); - - if (pattern != null) - pattern.dispose(); - - path9.dispose(); - path8.dispose(); - path7.dispose(); - path6.dispose(); - path5.dispose(); - path4.dispose(); - path3.dispose(); - path2.dispose(); - path.dispose(); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathClippingTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathClippingTab.java deleted file mode 100644 index 30870295df..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathClippingTab.java +++ /dev/null @@ -1,244 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates how to apply a path clipping and the effects of - * applying one. - */ -public class PathClippingTab extends GraphicsTab { - - private Combo clippingCb; - private Button colorButton; - private GraphicsBackground background; - private Menu menu; - -public PathClippingTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Clipping"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("PathClipping"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("PathClippingDesc"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -/** - * Creates the widgets used to control the drawing. - */ -public void createControlPanel(Composite parent) { - - // create drop down combo for choosing clipping - Composite comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Clipping")); //$NON-NLS-1$ - clippingCb = new Combo(comp, SWT.DROP_DOWN); - clippingCb.add(GraphicsExample.getResourceString("Circles")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Rectangle")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Oval")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Word")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Star")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Triangles")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Default")); //$NON-NLS-1$ - clippingCb.select(0); - clippingCb.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // color menu - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - background = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the background to the 5th item in the menu (blue) - background =(GraphicsBackground)menu.getItem(4).getData(); - - // color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample - .getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(background.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - int clipping = clippingCb.getSelectionIndex(); - switch (clipping) { - - case 0: // circles - Path path = new Path(device); - path.addArc((width-width/5)/2, (height-height/5)/2, width/5, height/5, 0, 360); - path.addArc(5*(width-width/8)/12, 4*(height-height/8)/12, width/8, height/8, 0, 360); - path.addArc(7*(width-width/8)/12, 8*(height-height/8)/12, width/8, height/8, 0, 360); - path.addArc(6*(width-width/12)/12, 3*(height-height/12)/12, width/12, height/12, 0, 360); - path.addArc(6*(width-width/12)/12, 9*(height-height/12)/12, width/12, height/12, 0, 360); - path.addArc(11.5f*(width-width/18)/20, 5*(height-height/18)/18, width/18, height/18, 0, 360); - path.addArc(8.5f*(width-width/18)/20, 13*(height-height/18)/18, width/18, height/18, 0, 360); - gc.setClipping(path); - path.dispose(); - break; - case 1: // rectangle - path = new Path(device); - path.addRectangle(100, 100, width-200, height-200); - path.addRectangle(120, 120, width-240, height-240); - path.addRectangle(140, 140, width-280, height-280); - gc.setClipping(path); - path.dispose(); - break; - case 2: // circle - path = new Path(device); - path.addArc(100, 100, width-200, height-200, 0, 360); - path.addArc((width-width/5)/2, (height-height/5)/2, width/5, height/5, 0, 360); - path.addArc(5*(width-width/8)/12, 4*(height-height/8)/12, width/8, height/8, 0, 360); - path.addArc(7*(width-width/8)/12, 8*(height-height/8)/12, width/8, height/8, 0, 360); - path.addArc(6*(width-width/12)/12, 3*(height-height/12)/12, width/12, height/12, 0, 360); - path.addArc(6*(width-width/12)/12, 9*(height-height/12)/12, width/12, height/12, 0, 360); - path.addArc(11.5f*(width-width/18)/20, 5*(height-height/18)/18, width/18, height/18, 0, 360); - path.addArc(8.5f*(width-width/18)/20, 13*(height-height/18)/18, width/18, height/18, 0, 360); - gc.setClipping(path); - path.dispose(); - break; - case 3: // word - path = new Path(device); - String text = GraphicsExample.getResourceString("SWT"); //$NON-NLS-1$ - Font font = new Font(device, "Times", 200, SWT.NORMAL); - gc.setFont(font); - Point size = gc.stringExtent(text); - path.addString(text, (width-size.x)/2, (height-size.y)/2, font); - font.dispose(); - gc.setClipping(path); - path.dispose(); - break; - case 4: // star - path = new Path(device); - path.lineTo(width/2, 0); - path.lineTo(5*width/8, height/3); - path.lineTo(width, height/3); - path.lineTo(3*width/4, 10*height/16); - path.lineTo(7*width/8, height); - path.lineTo(width/2, 3*height/4); - path.lineTo(width/8, height); - path.lineTo(width/4, 10*height/16); - path.lineTo(0, height/3); - path.lineTo(3*width/8, height/3); - path.lineTo(width/2, 0); - - Path ovalPath = new Path(device); - ovalPath.addArc(90, 90, width-180, height-180, 0, 360); - - path.addPath(ovalPath); - gc.setClipping(path); - ovalPath.dispose(); - path.dispose(); - break; - case 5: // triangles - path = new Path(device); - path.addRectangle(0, 0, width, height); - path.lineTo(width/4, 0); - path.lineTo(width/4, height/2); - path.lineTo(0, height/2); - path.lineTo(width/4, 0); - - Path path2 = new Path(device); - path2.lineTo(width/2, 0); - path2.lineTo(width/4, height/2); - path2.lineTo(3*width/4, height/2); - path2.lineTo(width/2, 0); - - Path path3 = new Path(device); - path3.lineTo(3*width/4, 0); - path3.lineTo(3*width/4, height/2); - path3.lineTo(width, height/2); - path3.lineTo(3*width/4, 0); - - Path path4 = new Path(device); - path4.lineTo(0, height); - path4.lineTo(width/4, height/2); - path4.lineTo(width/2, height); - path4.lineTo(0, height); - - Path path5 = new Path(device); - path5.lineTo(width/2, height); - path5.lineTo(3*width/4, height/2); - path5.lineTo(width, height); - path5.lineTo(width/2, height); - - path.addPath(path2); - path.addPath(path3); - path.addPath(path4); - path.addPath(path5); - gc.setClipping(path); - - path5.dispose(); - path4.dispose(); - path3.dispose(); - path2.dispose(); - path.dispose(); - break; - case 6: // default - gc.setClipping(0, 0, width, height); - break; - } - - Pattern pattern = null; - if (background.getBgColor1() != null) { - gc.setBackground(background.getBgColor1()); - } else if (background.getBgImage() != null) { - pattern = new Pattern(device, background.getBgImage()); - gc.setBackgroundPattern(pattern); - } - gc.fillRectangle(0, 0, width, height); - if (pattern != null) pattern.dispose(); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathTab.java deleted file mode 100644 index deaaaed315..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/PathTab.java +++ /dev/null @@ -1,178 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates the use of paths. It allows the user to see the - * differences between filling, drawing and closing paths. - */ -public class PathTab extends GraphicsTab { - - Button colorButton, fillButton, drawButton, closeButton; - GraphicsBackground fillColor; - Menu menu; - -public PathTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Path"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("PathOper"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("PathOperDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - Composite comp; - - // create draw button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - drawButton = new Button(comp, SWT.TOGGLE); - drawButton.setText(GraphicsExample.getResourceString("DrawPath")); //$NON-NLS-1$ - drawButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - drawButton.setSelection(true); - - // create fill button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - fillButton = new Button(comp, SWT.TOGGLE); - fillButton.setText(GraphicsExample.getResourceString("FillPath")); //$NON-NLS-1$ - fillButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // create close button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - closeButton = new Button(comp, SWT.TOGGLE); - closeButton.setText(GraphicsExample.getResourceString("ClosePath")); //$NON-NLS-1$ - closeButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - fillColor = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the foreground to the 5th item in the menu (green) - fillColor = (GraphicsBackground)menu.getItem(3).getData(); - - // color button - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample.getResourceString("FillColor")); //$NON-NLS-1$ - colorButton.setImage(fillColor.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - Pattern pattern = null; - if (fillColor.getBgColor1() != null) { - gc.setBackground(fillColor.getBgColor1()); - } else if (fillColor.getBgImage() != null) { - pattern = new Pattern(device, fillColor.getBgImage()); - gc.setBackgroundPattern(pattern); - } - - gc.setLineWidth(5); - gc.setForeground(device.getSystemColor(SWT.COLOR_BLACK)); - - // arc - Path path = new Path(device); - path.addArc((width-250)/2, (height-400)/2, 500, 400, 90, 180); - if (closeButton.getSelection()) path.close(); - if (fillButton.getSelection()) gc.fillPath(path); - if (drawButton.getSelection()) gc.drawPath(path); - path.dispose(); - - // shape on left - Transform transform = new Transform(device); - transform.translate((width-250)/4, height/2-150); - gc.setTransform(transform); - transform.dispose(); - path = new Path(device); - path.cubicTo(-150, 100, 150, 200, 0, 300); - if (closeButton.getSelection()) path.close(); - if (fillButton.getSelection()) gc.fillPath(path); - if (drawButton.getSelection()) gc.drawPath(path); - path.dispose(); - gc.setTransform(null); - - // shape on right - path = new Path(device); - path.moveTo(3*(width-250)/4 - 25 + 250, height/2); - path.lineTo(3*(width-250)/4 + 50 + 250, height/2 - 200); - path.lineTo(3*(width-250)/4 + 50 + 250, height/2 + 50); - path.lineTo(3*(width-250)/4 - 25 + 250, height/2 + 150); - path.lineTo(3*(width-250)/4 + 25 + 250, height/2 + 50); - if (closeButton.getSelection()) path.close(); - if (fillButton.getSelection()) gc.fillPath(path); - if (drawButton.getSelection()) gc.drawPath(path); - path.dispose(); - - if (pattern != null) pattern.dispose(); -} -} - - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/RGBTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/RGBTab.java deleted file mode 100644 index 830b3e0a1a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/RGBTab.java +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * Miscellaneous tab that demonstrates emerging colors from layering other - * colors. - */ -public class RGBTab extends AnimatedGraphicsTab { - - int translateX, translateY; - float diagTranslateX1, diagTranslateX2, diagTranslateY1, diagTranslateY2; - -/** - * Constructor - * @param example A GraphicsExample - */ -public RGBTab(GraphicsExample example) { - super(example); - translateX = translateY = 0; - diagTranslateX1 = diagTranslateX2 = diagTranslateY1 = diagTranslateY2 = 0; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Misc"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("rgb"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("rgbDescription"); //$NON-NLS-1$ -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#next(int, int) - */ -public void next(int width, int height) { - - float h = height; - float w = width; - - translateX = (translateX+3)%width; - translateY = (translateY+5)%height; - - diagTranslateX1 = (diagTranslateX1+6)%width; - diagTranslateY1 = diagTranslateX1*(h/w); - - diagTranslateX2 = (diagTranslateX2+8)%width; - diagTranslateY2 = -diagTranslateX2*(h/w) + h; -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - // horizontal rectangle - Transform transform = new Transform(device); - transform.translate(0, translateY); - gc.setTransform(transform); - transform.dispose(); - - Path path = new Path(device); - path.addRectangle(0, 0, width, 50); - Pattern pattern = new Pattern(device, 0, 0, width, 50, - device.getSystemColor(SWT.COLOR_BLUE), 0x7f, - device.getSystemColor(SWT.COLOR_RED), 0x7f); - gc.setBackgroundPattern(pattern); - gc.fillPath(path); - gc.drawPath(path); - path.dispose(); - - // vertical rectangle - transform = new Transform(device); - transform.translate(translateX, 0); - gc.setTransform(transform); - transform.dispose(); - - path = new Path(device); - path.addRectangle(0, 0, 50, height); - pattern.dispose(); - pattern = new Pattern(device, 0, 0, 50, height, - device.getSystemColor(SWT.COLOR_DARK_CYAN), 0x7f, - device.getSystemColor(SWT.COLOR_WHITE), 0x7f); - gc.setBackgroundPattern(pattern); - gc.fillPath(path); - gc.drawPath(path); - path.dispose(); - - // diagonal rectangle from bottom right corner - Rectangle rect = new Rectangle(0, 0, 50, height); - transform = new Transform(device); - transform.translate(width-diagTranslateX1, (height/2)-diagTranslateY1); - - // rotate on center of rectangle - transform.translate(rect.width/2, rect.height/2); - transform.rotate(45); - transform.translate(-rect.width/2, -rect.height/2); - gc.setTransform(transform); - transform.dispose(); - - path = new Path(device); - path.addRectangle(rect.x, rect.y, rect.width, rect.height); - pattern.dispose(); - pattern = new Pattern(device, rect.x, rect.y, rect.width, rect.height, - device.getSystemColor(SWT.COLOR_DARK_GREEN), 0x7f, - device.getSystemColor(SWT.COLOR_DARK_MAGENTA), 0x7f); - gc.setBackgroundPattern(pattern); - gc.fillPath(path); - gc.drawPath(path); - path.dispose(); - - // diagonal rectangle from top right corner - transform = new Transform(device); - transform.translate(width-diagTranslateX2, (height/2)-diagTranslateY2); - - // rotate on center of rectangle - transform.translate(rect.width/2, rect.height/2); - transform.rotate(-45); - transform.translate(-rect.width/2, -rect.height/2); - gc.setTransform(transform); - transform.dispose(); - - path = new Path(device); - path.addRectangle(rect.x, rect.y, rect.width, rect.height); - pattern.dispose(); - pattern = new Pattern(device, rect.x, rect.y, rect.width, rect.height, - device.getSystemColor(SWT.COLOR_DARK_RED), 0x7f, - device.getSystemColor(SWT.COLOR_YELLOW), 0x7f); - gc.setBackgroundPattern(pattern); - gc.fillPath(path); - gc.drawPath(path); - pattern.dispose(); - path.dispose(); -} - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/RegionClippingTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/RegionClippingTab.java deleted file mode 100644 index 6b536f02b8..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/RegionClippingTab.java +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates how to apply a region clipping and the effects of - * applying one. - */ -public class RegionClippingTab extends GraphicsTab { - - private Combo clippingCb; - private Button colorButton1, colorButton2; - private Menu menu1, menu2; - private GraphicsBackground colorGB1, colorGB2; - -public RegionClippingTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Clipping"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("RegionClipping"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("RegionClippingDescription"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu1 != null) { - menu1.dispose(); - menu1 = null; - } - if (menu2 != null) { - menu2.dispose(); - menu2 = null; - } -} - -/** - * Creates the widgets used to control the drawing. - */ -public void createControlPanel(Composite parent) { - // create drop down combo for choosing clipping - Composite comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Clipping")); //$NON-NLS-1$ - clippingCb = new Combo(comp, SWT.DROP_DOWN); - clippingCb.add(GraphicsExample.getResourceString("Region1")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Region2")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Add")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Sub")); //$NON-NLS-1$ - clippingCb.add(GraphicsExample.getResourceString("Inter")); //$NON-NLS-1$ - clippingCb.select(0); - clippingCb.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - // color menu - ColorMenu cm = new ColorMenu(); - menu1 = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - colorGB1 = gb; - colorButton1.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - menu2 = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - colorGB2 = gb; - colorButton2.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the color to blue - colorGB1 = (GraphicsBackground)menu1.getItem(4).getData(); - // initialize the color to red - colorGB2 = (GraphicsBackground)menu2.getItem(2).getData(); - - // color button 1 - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - colorButton1 = new Button(comp, SWT.PUSH); - colorButton1.setText(GraphicsExample - .getResourceString("Color1")); //$NON-NLS-1$ - colorButton1.setImage(colorGB1.getThumbNail()); - colorButton1.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu1.setLocation(point.x, point.y + bounds.height); - menu1.setVisible(true); - } - }); - - // color button 2 - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - colorButton2 = new Button(comp, SWT.PUSH); - colorButton2.setText(GraphicsExample - .getResourceString("Color2")); //$NON-NLS-1$ - colorButton2.setImage(colorGB2.getThumbNail()); - colorButton2.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu2.setLocation(point.x, point.y + bounds.height); - menu2.setVisible(true); - } - }); -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - // array of coordinate points of polygon 1 (region 1) - int [] polygon1 = new int [] {10, height/2, 9*width/16, 10, 9*width/16, height-10}; - Region region1 = new Region(device); - region1.add(polygon1); - - // array of coordinate points of polygon 2 (region 2) - int [] polygon2 = new int [] { - 9*width/16, 10, - 9*width/16, height/8, - 7*width/16, 2*height/8, - 9*width/16, 3*height/8, - 7*width/16, 4*height/8, - 9*width/16, 5*height/8, - 7*width/16, 6*height/8, - 9*width/16, 7*height/8, - 9*width/16, height-10, - width-10, height/2 - }; - Region region2 = new Region(device); - region2.add(polygon2); - - gc.setAlpha(127); - - int clippingIndex = clippingCb.getSelectionIndex(); - - switch (clippingIndex) { - case 0: - // region 1 - gc.setClipping(region1); - gc.setBackground(colorGB1.getBgColor1()); - gc.fillPolygon(polygon1); - break; - case 1: - // region 2 - gc.setClipping(region2); - gc.setBackground(colorGB2.getBgColor1()); - gc.fillPolygon(polygon2); - break; - case 2: - // add - region1.add(region2); - break; - case 3: - // sub - region1.subtract(region2); - break; - case 4: - // intersect - region1.intersect(region2); - break; - } - - if (clippingIndex > 1) { - gc.setClipping(region1); - - gc.setBackground(colorGB1.getBgColor1()); - gc.fillPolygon(polygon1); - - gc.setBackground(colorGB2.getBgColor1()); - gc.fillPolygon(polygon2); - } - - region1.dispose(); - region2.dispose(); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ShapesTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ShapesTab.java deleted file mode 100644 index 8cebcdb321..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ShapesTab.java +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * This tab draws 3D shapes (in 2D) using various line styles. - */ -public class ShapesTab extends AnimatedGraphicsTab { - - int upDownValue; - int inc = 1; - -public ShapesTab(GraphicsExample example) { - super(example); - upDownValue = 0; -} - -public String getCategory() { - return GraphicsExample.getResourceString("Lines"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Shapes"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("ShapesDescription"); //$NON-NLS-1$ -} - -public void next(int width, int height) { - upDownValue += inc; - - if (upDownValue > 5) inc = -1; - if (upDownValue < -5) inc = 1; -} - -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - int size = 100; - - gc.setLineWidth(2); - - // ----- cube ----- - - Transform transform = new Transform(device); - transform.translate(width/4 - size, height/4 + -upDownValue); - gc.setTransform(transform); - - gc.setLineStyle(SWT.LINE_DOT); - - // fill in left face - gc.setBackground(device.getSystemColor(SWT.COLOR_RED)); - gc.fillPolygon(new int [] {0, 0, size/3, -size/2, size/3, size/2, 0, size}); - - gc.setLineStyle(SWT.LINE_SOLID); - - // square - gc.drawRectangle(0, 0, size, size); - - // next 3 solid lines - gc.drawLine(0, 0, size/3, -size/2); // left - gc.drawLine(size, 0, 4*size/3, -size/2); // middle - gc.drawLine(size, size, 4*size/3, size/2); // right - - // 2 furthest solid lines - gc.drawLine(size/3, -size/2, 4*size/3, -size/2); // horizontal - gc.drawLine(4*size/3, size/2, 4*size/3, -size/2); // vertical - - // 3 dotted lines - gc.setLineStyle(SWT.LINE_DOT); - gc.drawLine(0, size, size/3, size/2); - gc.drawLine(size/3, -size/2, size/3, size/2); - gc.drawLine(4*size/3, size/2, size/3, size/2); - - // fill right side of cube - gc.setBackground(device.getSystemColor(SWT.COLOR_GRAY)); - gc.fillPolygon(new int [] {size, 0, 4*size/3, -size/2, 4*size/3, size/2, size, size}); - - transform.dispose(); - - // ----- pyramid ----- - - transform = new Transform(device); - transform.translate(width/2 + size/2, height/4 + size + upDownValue); - gc.setTransform(transform); - - // fill back of pyramid - gc.fillPolygon(new int [] {size/3, -size/2, 6*size/10, -5*size/4, 4*size/3, -size/2}); - - // fill left side of pyramid - gc.setBackground(device.getSystemColor(SWT.COLOR_GREEN)); - gc.fillPolygon(new int [] {0, 0, 6*size/10, -5*size/4, size/3, -size/2}); - - // select solid line style - gc.setLineStyle(SWT.LINE_SOLID); - - // 2 solid lines of base - gc.drawLine(0, 0, size, 0); - gc.drawLine(size, 0, 4*size/3, -size/2); - - // 3 solid lines of pyramid - gc.drawLine(0, 0, 6*size/10, -5*size/4); - gc.drawLine(size, 0, 6*size/10, -5*size/4); - gc.drawLine(4*size/3, -size/2, 6*size/10, -5*size/4); - - // select dot line style - gc.setLineStyle(SWT.LINE_DOT); - - // 3 dotted lines - gc.drawLine(0, 0, size/3, -size/2); // left - gc.drawLine(size/3, -size/2, 6*size/10, -5*size/4); // to top of pyramid - gc.drawLine(4*size/3, -size/2, size/3, -size/2); // right - - transform.dispose(); - - // ----- rectangular prism ----- - - transform = new Transform(device); - transform.translate(width/2 + upDownValue, height/2 + size); - gc.setTransform(transform); - - // fill bottom - gc.setBackground(device.getSystemColor(SWT.COLOR_BLUE)); - gc.fillPolygon(new int [] {0, size, size/3, size/2, 7*size/3, size/2, 2*size, size}); - - // select solid line style - gc.setLineStyle(SWT.LINE_SOLID); - - gc.drawRectangle(0, 0, 2*size, size); - - // next 3 solid lines - gc.drawLine(0, 0, size/3, -size/2); // left - gc.drawLine(2*size, 0, 7*size/3, -size/2); // middle - gc.drawLine(2*size, size, 7*size/3, size/2); // right - - // 2 furthest solid lines - gc.drawLine(size/3, -size/2, 7*size/3, -size/2); // horizontal - gc.drawLine(7*size/3, size/2, 7*size/3, -size/2); // vertical - - // 3 dotted lines - gc.setLineStyle(SWT.LINE_DASHDOTDOT); - gc.drawLine(0, size, size/3, size/2); - gc.drawLine(size/3, -size/2, size/3, size/2); - gc.drawLine(7*size/3, size/2, size/3, size/2); - - // fill top - gc.setBackground(device.getSystemColor(SWT.COLOR_GRAY)); - gc.fillPolygon(new int [] {0, 0, size/3, -size/2, 7*size/3, -size/2, 2*size, 0}); - - transform.dispose(); - - // ----- triangular shape ----- - transform = new Transform(device); - transform.translate(width/4 - size - upDownValue, height/2 + size + upDownValue); - gc.setTransform(transform); - - // fill back of shape (top left) - gc.setBackground(device.getSystemColor(SWT.COLOR_YELLOW)); - gc.fillPolygon(new int [] {0, 0, size/2, -size, size/2, -size/3}); - - // fill back of shape (bottom right) - gc.fillPolygon(new int [] {size, 0, size/2, size, size/2, -size/3}); - - // select solid line style - gc.setLineStyle(SWT.LINE_SOLID); - - // solid lines of bottom triangle - gc.drawLine(0, 0, size/2, size); - gc.drawLine(size, 0, size/2, size); - - // solid lines of top triangle - gc.drawLine(0, 0, size/2, -size); - gc.drawLine(size, 0, size/2, -size); - - // solid lines on top - gc.drawLine(0, 0, size/2, -size/3); - gc.drawLine(size, 0, size/2, -size/3); - gc.drawLine(size/2, -size/3, size/2, size); - gc.drawLine(size/2, -size/3, size/2, -size); - - transform.dispose(); -} - -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/SpiralTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/SpiralTab.java deleted file mode 100644 index 59122ef728..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/SpiralTab.java +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab presents a spiral consisting of the number of petals specified. - * */ -public class SpiralTab extends AnimatedGraphicsTab { - - int angle; // angle by which to rotate the petals - Spinner petalSpinner; // spinner to control number of petals - Button colorButton; - GraphicsBackground foreground; - Menu menu; - -public SpiralTab(GraphicsExample example) { - super(example); - angle = -90; -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} -/** - * This method creates a spinner for specifying the number of petals. The call to the - * createControlPanel method in the super class create the controls that are - * defined in the super class. - * - * @param parent The parent composite - */ -public void createControlPanel(Composite parent) { - super.createControlPanel(parent); - - // create spinner number of petals - Composite comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Petals")); //$NON-NLS-1$ - petalSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP); - petalSpinner.setSelection(8); - petalSpinner.setMinimum(3); - petalSpinner.setMaximum(20); - petalSpinner.addListener(SWT.Selection, new Listener() { - public void handleEvent (Event event) { - example.redraw(); - } - }); - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - ColorMenu cm = new ColorMenu(); - cm.setPatternItems(example.checkAdvancedGraphics()); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - foreground = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // initialize the foreground to the 2nd item in the menu - foreground = (GraphicsBackground)menu.getItem(1).getData(); - - // color button - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample - .getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(foreground.getThumbNail()); - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Misc"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Spiral"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("SpiralDescription"); //$NON-NLS-1$ -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#getAnimationTime() - */ -public int getInitialAnimationTime() { - return 150; -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#next(int, int) - */ -public void next(int width, int height) { - if (angle == 270) { - angle = -90; - } - angle += 10; -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - // set line attributes - gc.setLineWidth(20); - gc.setLineCap(SWT.CAP_ROUND); // round line ends - gc.setAntialias(SWT.ON); // smooth jagged edges - - Pattern pattern = null; - if (foreground.getBgColor1() != null) { - gc.setForeground(foreground.getBgColor1()); - } else if (foreground.getBgImage() != null) { - pattern = new Pattern(device, foreground.getBgImage()); - gc.setForegroundPattern(pattern); - } - - // draw petals for the spiral - Transform transform; - int n = petalSpinner.getSelection(); - for (int i=0; i < n; i++) { - transform = new Transform(device); - transform.translate(width/2, height/2); - transform.rotate(-(angle + 360/n * i)); - gc.setTransform(transform); - gc.drawArc(0, 0, width/3, height/6, 0, 180); - transform.dispose(); - } - - if (pattern != null) pattern.dispose(); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/StarPolyTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/StarPolyTab.java deleted file mode 100644 index e6ea151471..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/StarPolyTab.java +++ /dev/null @@ -1,68 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -public class StarPolyTab extends GraphicsTab { - int[] radial; - static final int POINTS = 11; - - Combo fillRuleCb; - -public StarPolyTab(GraphicsExample example) { - super(example); - radial = new int[POINTS * 2]; -} - -public void createControlPanel(Composite parent) { - new Label(parent, SWT.NONE).setText(GraphicsExample.getResourceString("FillRule")); //$NON-NLS-1$ - fillRuleCb = new Combo(parent, SWT.DROP_DOWN); - fillRuleCb.add("FILL_EVEN_ODD"); - fillRuleCb.add("FILL_WINDING"); - fillRuleCb.select(0); - fillRuleCb.addListener(SWT.Selection, new Listener() { - public void handleEvent (Event event) { - example.redraw(); - } - }); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Polygons"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("StarPolygon"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("StarPolygonDescription"); //$NON-NLS-1$ -} - -public void paint(GC gc, int width, int height) { - int centerX = width / 2; - int centerY = height / 2; - int pos = 0; - for (int i = 0; i < POINTS; ++i) { - double r = Math.PI*2 * pos/POINTS; - radial[i*2] = (int)((1+Math.cos(r))*centerX); - radial[i*2+1] = (int)((1+Math.sin(r))*centerY); - pos = (pos + POINTS/2) % POINTS; - } - gc.setFillRule(fillRuleCb.getSelectionIndex() != 0 ? SWT.FILL_WINDING : SWT.FILL_EVEN_ODD); - gc.setBackground(gc.getDevice().getSystemColor(SWT.COLOR_WHITE)); - gc.fillPolygon(radial); - gc.drawPolygon(radial); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/TextAntialiasTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/TextAntialiasTab.java deleted file mode 100644 index 89ba22ce0c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/TextAntialiasTab.java +++ /dev/null @@ -1,192 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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 - *******************************************************************************/ - -package org.eclipse.swt.examples.graphics; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * This tab demonstrates antialiasing for text. Antialiasing is used for - * smoothing jagged edges in graphics. This tab allows the user to see the - * effects of different antialiasing values. - */ -public class TextAntialiasTab extends GraphicsTab { - - Combo aliasCombo; - static int[] aliasValues = { SWT.OFF, SWT.DEFAULT, SWT.ON }; - - Button colorButton; - Menu menu; - GraphicsBackground textColor; - String text = GraphicsExample.getResourceString("SWT"); - - -public TextAntialiasTab(GraphicsExample example) { - super(example); -} - -public String getCategory() { - return GraphicsExample.getResourceString("Antialiasing"); //$NON-NLS-1$ -} - -public String getText() { - return GraphicsExample.getResourceString("Text"); //$NON-NLS-1$ -} - -public String getDescription() { - return GraphicsExample.getResourceString("AntialiasingTextDesc"); //$NON-NLS-1$ -} - -public void dispose() { - if (menu != null) { - menu.dispose(); - menu = null; - } -} - -public void createControlPanel(Composite parent) { - - Composite comp; - - // create drop down combo for antialiasing - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout(2, false)); - new Label(comp, SWT.CENTER).setText(GraphicsExample - .getResourceString("Antialiasing")); //$NON-NLS-1$ - aliasCombo = new Combo(comp, SWT.DROP_DOWN); - aliasCombo.add("OFF"); - aliasCombo.add("DEFAULT"); - aliasCombo.add("ON"); - aliasCombo.select(0); - aliasCombo.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - example.redraw(); - } - }); - - ColorMenu cm = new ColorMenu(); - cm.setColorItems(true); - menu = cm.createMenu(parent.getParent(), new ColorListener() { - public void setColor(GraphicsBackground gb) { - textColor = gb; - colorButton.setImage(gb.getThumbNail()); - example.redraw(); - } - }); - - // create color button - comp = new Composite(parent, SWT.NONE); - comp.setLayout(new GridLayout()); - - // initialize the color to black - textColor = (GraphicsBackground)menu.getItem(1).getData(); - - colorButton = new Button(comp, SWT.PUSH); - colorButton.setText(GraphicsExample.getResourceString("Color")); //$NON-NLS-1$ - colorButton.setImage(textColor.getThumbNail()); - - colorButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - final Button button = (Button) event.widget; - final Composite parent = button.getParent(); - Rectangle bounds = button.getBounds(); - Point point = parent.toDisplay(new Point(bounds.x, bounds.y)); - menu.setLocation(point.x, point.y + bounds.height); - menu.setVisible(true); - } - }); -} - -/* (non-Javadoc) - * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) - */ -public void paint(GC gc, int width, int height) { - if (!example.checkAdvancedGraphics()) return; - Device device = gc.getDevice(); - - if (textColor != null && textColor.getBgColor1() != null) - gc.setForeground(textColor.getBgColor1()); - - gc.setTextAntialias(aliasValues[aliasCombo.getSelectionIndex()]); - - // column 1, row 1 - Font font = new Font(device, getPlatformFontFace(0), 100, SWT.NORMAL); - gc.setFont(font); - Point size = gc.stringExtent(text); - gc.drawString(text, width/4 - size.x/2, height/4 - size.y/2, true); - font.dispose(); - - // column 1, row 2 - font = new Font(device, getPlatformFontFace(1), 100, SWT.NORMAL); - gc.setFont(font); - size = gc.stringExtent(text); - gc.drawString(text, width/4 - size.x/2, 3*height/4 - size.y/2, true); - font.dispose(); - - // column 2, row 1 - font = new Font(device, getPlatformFontFace(2), 50, SWT.NORMAL); - gc.setFont(font); - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, 0, true); - font.dispose(); - - // column 2, row 2 - font = new Font(device, getPlatformFontFace(3), 100, SWT.ITALIC); - gc.setFont(font); - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, (height-size.y)/2, true); - font.dispose(); - - // column 2, row 3 - font = new Font(device, getPlatformFontFace(4), 50, SWT.NORMAL); - gc.setFont(font); - size = gc.stringExtent(text); - gc.drawString(text, (width-size.x)/2, height-size.y, true); - font.dispose(); - - // column 3, row 1 - font = new Font(device, getPlatformFontFace(5), 100, SWT.NORMAL); - gc.setFont(font); - size = gc.stringExtent(text); - gc.drawString(text, 3*width/4 - size.x/2, height/4 - size.y/2, true); - font.dispose(); - - // column 3, row 2 - font = new Font(device, getPlatformFontFace(6), 100, SWT.NORMAL); - gc.setFont(font); - size = gc.stringExtent(text); - gc.drawString(text, 3*width/4 - size.x/2, 3*height/4 - size.y/2, true); - font.dispose(); -} - -/** - * Returns the name of a valid font for the host platform. - * - * @param index - * index is used to determine the appropriate font face - */ -static String getPlatformFontFace(int index) { - if(SWT.getPlatform() == "win32" || SWT.getPlatform() == "wpf") { - return new String [] {"Bookman Old Style", "Century Gothic", "Comic Sans MS", "Impact", "Garamond", "Lucida Console", "Monotype Corsiva"} [index]; - } else if (SWT.getPlatform() == "motif") { - return new String [] {"urw palladio l", "Courier", "qub", "URW Gothic L", "Times", "Lucida", "URW ChanceryL"} [index]; - } else if (SWT.getPlatform() == "gtk") { - return new String [] {"Luxi Mono", "KacstTitleL", "Baekmuk Batang", "Baekmuk Headline", "KacstFarsi", "Baekmuk Gulim", "URW Chancery L"} [index]; - } else if (SWT.getPlatform() == "carbon") { - return new String [] {"Apple Chancery", "Brush Script MT", "Comic Sans MS", "Impact", "Herculanum", "Lucida Grande", "Papyrus"} [index]; - } else { // photon, etc ... - return new String [] {"Courier", "Verdana", "Verdana", "Verdana", "Verdana", "Verdana", "Verdana"} [index]; - } -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_club.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_club.jpg Binary files differdeleted file mode 100644 index ed5ea311ca..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_club.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_diamond.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_diamond.jpg Binary files differdeleted file mode 100644 index 3cf13f2f04..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_diamond.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_hearts.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_hearts.jpg Binary files differdeleted file mode 100644 index e7431b155b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_hearts.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_spade.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_spade.jpg Binary files differdeleted file mode 100644 index f409111c79..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ace_spade.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/alpha_img1.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/alpha_img1.png Binary files differdeleted file mode 100644 index 6b410e2eae..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/alpha_img1.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/alpha_img2.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/alpha_img2.png Binary files differdeleted file mode 100644 index b720214832..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/alpha_img2.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/back.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/back.gif Binary files differdeleted file mode 100644 index 4fb4150103..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/back.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/cube.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/cube.png Binary files differdeleted file mode 100644 index 636a4a3dda..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/cube.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/db.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/db.gif Binary files differdeleted file mode 100644 index 0a13d8cca8..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/db.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/font.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/font.gif Binary files differdeleted file mode 100644 index 65389495f7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/font.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/help.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/help.gif Binary files differdeleted file mode 100644 index 9d70301dae..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/help.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/home_nav.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/home_nav.gif Binary files differdeleted file mode 100644 index 4472e8ce5b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/home_nav.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/houses.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/houses.png Binary files differdeleted file mode 100644 index ef5814c591..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/houses.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/irmaos.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/irmaos.jpg Binary files differdeleted file mode 100644 index 3352cdee65..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/irmaos.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/maze.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/maze.bmp Binary files differdeleted file mode 100644 index 5b87e76271..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/maze.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/next.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/next.gif Binary files differdeleted file mode 100644 index e2f8c3e1fe..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/next.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ovals.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ovals.png Binary files differdeleted file mode 100644 index df7fe5e59a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/ovals.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern1.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern1.jpg Binary files differdeleted file mode 100644 index d66a7d0b86..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern1.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern2.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern2.jpg Binary files differdeleted file mode 100644 index d689eca3e1..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern2.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern3.jpg b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern3.jpg Binary files differdeleted file mode 100644 index 81e06ac01a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pattern3.jpg +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pause.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pause.gif Binary files differdeleted file mode 100644 index 161e3f594f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/pause.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/play.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/play.gif Binary files differdeleted file mode 100644 index 16f4e25175..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/play.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/swap.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/swap.gif Binary files differdeleted file mode 100644 index 870934b693..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/swap.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/swt.png b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/swt.png Binary files differdeleted file mode 100644 index 4049b5539c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/swt.png +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/task.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/task.gif Binary files differdeleted file mode 100644 index d3d10f5aac..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/task.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld1.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld1.java deleted file mode 100755 index 1c98dc3941..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld1.java +++ /dev/null @@ -1,36 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.helloworld; - - -import org.eclipse.swt.widgets.*; - -/* - * This example demonstrates the minimum amount of code required - * to open an SWT Shell and process the events. - */ -public class HelloWorld1 { - -public static void main (String [] args) { - Display display = new Display (); - Shell shell = new HelloWorld1 ().open (display); - while (!shell.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - display.dispose (); -} - -public Shell open (Display display) { - Shell shell = new Shell (display); - shell.open (); - return shell; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld2.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld2.java deleted file mode 100755 index 320c8c8d76..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld2.java +++ /dev/null @@ -1,42 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.helloworld; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import java.util.ResourceBundle; - -/* - * This example builds on HelloWorld1 and demonstrates the minimum amount - * of code required to open an SWT Shell with a Label and process the events. - */ -public class HelloWorld2 { - private static ResourceBundle resHello = ResourceBundle.getBundle("examples_helloworld"); - -public static void main (String [] args) { - Display display = new Display (); - Shell shell = new HelloWorld2 ().open (display); - while (!shell.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - display.dispose (); -} - -public Shell open (Display display) { - Shell shell = new Shell (display); - Label label = new Label (shell, SWT.CENTER); - label.setText (resHello.getString("Hello_world")); - label.setBounds (shell.getClientArea ()); - shell.open (); - return shell; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld3.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld3.java deleted file mode 100755 index 7b61ad157c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld3.java +++ /dev/null @@ -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 - *******************************************************************************/ -package org.eclipse.swt.examples.helloworld; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import java.util.ResourceBundle; - -/* - * This example builds on HelloWorld2 and demonstrates how to resize the - * Label when the Shell resizes using a Listener mechanism. - */ -public class HelloWorld3 { - private static ResourceBundle resHello = ResourceBundle.getBundle("examples_helloworld"); - -public static void main (String [] args) { - Display display = new Display (); - Shell shell = new HelloWorld3 ().open (display); - while (!shell.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - display.dispose (); -} - -public Shell open (Display display) { - final Shell shell = new Shell (display); - final Label label = new Label (shell, SWT.CENTER); - label.setText (resHello.getString("Hello_world")); - label.pack(); - shell.addControlListener(new ControlAdapter() { - public void controlResized(ControlEvent e) { - label.setBounds (shell.getClientArea ()); - } - }); - shell.pack(); - shell.open (); - return shell; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld4.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld4.java deleted file mode 100755 index 204f458fa0..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld4.java +++ /dev/null @@ -1,45 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.helloworld; - - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import java.util.ResourceBundle; - -/* - * This example builds on HelloWorld2 and demonstrates how to resize the - * Label when the Shell resizes using a Layout. - */ -public class HelloWorld4 { - private static ResourceBundle resHello = ResourceBundle.getBundle("examples_helloworld"); - -public static void main (String [] args) { - Display display = new Display (); - Shell shell = new HelloWorld4 ().open (display); - while (!shell.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - display.dispose (); -} - -public Shell open (Display display) { - Shell shell = new Shell (display); - shell.setLayout(new FillLayout()); - Label label = new Label (shell, SWT.CENTER); - label.setText (resHello.getString("Hello_world")); - shell.pack (); - shell.open (); - return shell; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld5.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld5.java deleted file mode 100755 index 63611549df..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/helloworld/HelloWorld5.java +++ /dev/null @@ -1,56 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.helloworld; - - - -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import java.util.ResourceBundle; - -/* - * This example builds on HelloWorld1 and demonstrates how to draw directly - * on an SWT Control. - */ -public class HelloWorld5 { - private static ResourceBundle resHello = ResourceBundle.getBundle("examples_helloworld"); - -public static void main (String [] args) { - Display display = new Display (); - Shell shell = new HelloWorld5 ().open (display); - while (!shell.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - display.dispose (); -} - -public Shell open (Display display) { - final Color red = new Color(display, 0xFF, 0, 0); - final Shell shell = new Shell (display); - shell.addPaintListener(new 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(resHello.getString("Hello_world"), rect.x + 20, rect.y + 20); - } - }); - shell.addDisposeListener (new DisposeListener () { - public void widgetDisposed (DisposeEvent e) { - red.dispose(); - } - }); - shell.open (); - return shell; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/HoverHelp.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/HoverHelp.java deleted file mode 100755 index 93f7b3e87e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/HoverHelp.java +++ /dev/null @@ -1,355 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.hoverhelp; - - -import java.io.*; -import java.text.*; -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -/** - * This example demonstrates how to implement hover help feedback - * using the MouseTrackListener. - */ -public class HoverHelp { - private static ResourceBundle resourceBundle = ResourceBundle.getBundle("examples_hoverhelp"); - - static final int - hhiInformation = 0, - hhiWarning = 1; - static final String[] imageLocations = { - "information.gif", - "warning.gif" - }; - Image images[]; - - /** - * Runs main program. - */ - public static void main (String [] args) { - Display display = new Display(); - Shell shell = new HoverHelp().open(display); - // Event loop - while (shell != null && ! shell.isDisposed()) { - if (! display.readAndDispatch()) display.sleep(); - } - // Cleanup - display.dispose(); - - } - - /** - * Opens the main program. - */ - public Shell open(Display display) { - // Load the images - Class clazz = HoverHelp.class; - try { - if (images == null) { - images = new Image[imageLocations.length]; - - for (int i = 0; i < imageLocations.length; ++i) { - InputStream stream = clazz.getResourceAsStream(imageLocations[i]); - ImageData source = new ImageData(stream); - ImageData mask = source.getTransparencyMask(); - images[i] = new Image(display, source, mask); - try { - stream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - } catch (Exception ex) { - System.err.println(getResourceString("error.CouldNotLoadResources", - new Object[] { ex.getMessage() })); - return null; - } - - // Create the window - Shell shell = new Shell(); - createPartControl(shell); - shell.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - /* Free resources */ - if (images != null) { - for (int i = 0; i < images.length; i++) { - final Image image = images[i]; - if (image != null) image.dispose(); - } - images = null; - } - } - }); - shell.pack(); - shell.open(); - return shell; - } - - /** - * Gets a string from the resource bundle. - * We don't want to crash because of a missing String. - * Returns the key if not found. - */ - public String getResourceString(String key) { - try { - return resourceBundle.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Gets a string from the resource bundle and binds it - * with the given arguments. If the key is not found, - * return the key. - */ - public String getResourceString(String key, Object[] args) { - try { - return MessageFormat.format(getResourceString(key), args); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Creates the example - */ - public void createPartControl(Composite frame) { - final ToolTipHandler tooltip = new ToolTipHandler(frame.getShell()); - - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - frame.setLayout(layout); - - ToolBar bar = new ToolBar (frame, SWT.BORDER); - for (int i=0; i<5; i++) { - ToolItem item = new ToolItem (bar, SWT.PUSH); - item.setText (getResourceString("ToolItem.text", new Object[] { new Integer(i) })); - item.setData ("TIP_TEXT", getResourceString("ToolItem.tooltip", - new Object[] { item.getText() })); - item.setData ("TIP_HELPTEXTHANDLER", new ToolTipHelpTextHandler() { - public String getHelpText(Widget widget) { - Item item = (Item) widget; - return getResourceString("ToolItem.help", new Object[] { item.getText() }); - } - }); - } - GridData gridData = new GridData(); - gridData.horizontalSpan = 3; - bar.setLayoutData(gridData); - tooltip.activateHoverHelp(bar); - - Table table = new Table (frame, SWT.BORDER); - for (int i=0; i<4; i++) { - TableItem item = new TableItem (table, SWT.PUSH); - item.setText (getResourceString("Item", new Object[] { new Integer(i) })); - item.setData ("TIP_IMAGE", images[hhiInformation]); - item.setText (getResourceString("TableItem.text", new Object[] { new Integer(i) })); - item.setData ("TIP_TEXT", getResourceString("TableItem.tooltip", - new Object[] { item.getText() })); - item.setData ("TIP_HELPTEXTHANDLER", new ToolTipHelpTextHandler() { - public String getHelpText(Widget widget) { - Item item = (Item) widget; - return getResourceString("TableItem.help", new Object[] { item.getText() }); - } - }); - } - table.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL)); - tooltip.activateHoverHelp(table); - - Tree tree = new Tree (frame, SWT.BORDER); - for (int i=0; i<4; i++) { - TreeItem item = new TreeItem (tree, SWT.PUSH); - item.setText (getResourceString("Item", new Object[] { new Integer(i) })); - item.setData ("TIP_IMAGE", images[hhiWarning]); - item.setText (getResourceString("TreeItem.text", new Object[] { new Integer(i) })); - item.setData ("TIP_TEXT", getResourceString("TreeItem.tooltip", - new Object[] { item.getText() })); - item.setData ("TIP_HELPTEXTHANDLER", new ToolTipHelpTextHandler() { - public String getHelpText(Widget widget) { - Item item = (Item) widget; - return getResourceString("TreeItem.help", new Object[] { item.getText() }); - } - }); - } - tree.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL)); - tooltip.activateHoverHelp(tree); - - Button button = new Button (frame, SWT.PUSH); - button.setText (getResourceString("Hello.text")); - button.setData ("TIP_TEXT", getResourceString("Hello.tooltip")); - tooltip.activateHoverHelp(button); - } - - /** - * Emulated tooltip handler - * Notice that we could display anything in a tooltip besides text and images. - * For instance, it might make sense to embed large tables of data or buttons linking - * data under inspection to material elsewhere, or perform dynamic lookup for creating - * tooltip text on the fly. - */ - protected static class ToolTipHandler { - private Shell parentShell; - private Shell tipShell; - private Label tipLabelImage, tipLabelText; - private Widget tipWidget; // widget this tooltip is hovering over - private Point tipPosition; // the position being hovered over - - /** - * Creates a new tooltip handler - * - * @param parent the parent Shell - */ - public ToolTipHandler(Shell parent) { - final Display display = parent.getDisplay(); - this.parentShell = parent; - - tipShell = new Shell(parent, SWT.ON_TOP | SWT.TOOL); - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 2; - gridLayout.marginWidth = 2; - gridLayout.marginHeight = 2; - tipShell.setLayout(gridLayout); - - tipShell.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND)); - - tipLabelImage = new Label(tipShell, SWT.NONE); - tipLabelImage.setForeground(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND)); - tipLabelImage.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND)); - tipLabelImage.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | - GridData.VERTICAL_ALIGN_CENTER)); - - tipLabelText = new Label(tipShell, SWT.NONE); - tipLabelText.setForeground(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND)); - tipLabelText.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND)); - tipLabelText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | - GridData.VERTICAL_ALIGN_CENTER)); - } - - /** - * Enables customized hover help for a specified control - * - * @control the control on which to enable hoverhelp - */ - public void activateHoverHelp(final Control control) { - /* - * Get out of the way if we attempt to activate the control underneath the tooltip - */ - control.addMouseListener(new MouseAdapter () { - public void mouseDown (MouseEvent e) { - if (tipShell.isVisible()) tipShell.setVisible(false); - } - }); - - /* - * Trap hover events to pop-up tooltip - */ - control.addMouseTrackListener(new MouseTrackAdapter () { - public void mouseExit(MouseEvent e) { - if (tipShell.isVisible()) tipShell.setVisible(false); - tipWidget = null; - } - public void mouseHover (MouseEvent event) { - Point pt = new Point (event.x, event.y); - Widget widget = event.widget; - if (widget instanceof ToolBar) { - ToolBar w = (ToolBar) widget; - widget = w.getItem (pt); - } - if (widget instanceof Table) { - Table w = (Table) widget; - widget = w.getItem (pt); - } - if (widget instanceof Tree) { - Tree w = (Tree) widget; - widget = w.getItem (pt); - } - if (widget == null) { - tipShell.setVisible(false); - tipWidget = null; - return; - } - if (widget == tipWidget) return; - tipWidget = widget; - tipPosition = control.toDisplay(pt); - String text = (String) widget.getData("TIP_TEXT"); - Image image = (Image) widget.getData("TIP_IMAGE"); - tipLabelText.setText(text != null ? text : ""); - tipLabelImage.setImage(image); // accepts null - tipShell.pack(); - setHoverLocation(tipShell, tipPosition); - tipShell.setVisible(true); - } - }); - - /* - * Trap F1 Help to pop up a custom help box - */ - control.addHelpListener(new HelpListener () { - public void helpRequested(HelpEvent event) { - if (tipWidget == null) return; - ToolTipHelpTextHandler handler = (ToolTipHelpTextHandler) - tipWidget.getData("TIP_HELPTEXTHANDLER"); - if (handler == null) return; - String text = handler.getHelpText(tipWidget); - if (text == null) return; - - if (tipShell.isVisible()) { - tipShell.setVisible(false); - Shell helpShell = new Shell(parentShell, SWT.SHELL_TRIM); - helpShell.setLayout(new FillLayout()); - Label label = new Label(helpShell, SWT.NONE); - label.setText(text); - helpShell.pack(); - setHoverLocation(helpShell, tipPosition); - helpShell.open(); - } - } - }); - } - - /** - * Sets the location for a hovering shell - * @param shell the object that is to hover - * @param position the position of a widget to hover over - * @return the top-left location for a hovering box - */ - private void setHoverLocation(Shell shell, Point position) { - Rectangle displayBounds = shell.getDisplay().getBounds(); - Rectangle shellBounds = shell.getBounds(); - shellBounds.x = Math.max(Math.min(position.x, displayBounds.width - shellBounds.width), 0); - shellBounds.y = Math.max(Math.min(position.y + 16, displayBounds.height - shellBounds.height), 0); - shell.setBounds(shellBounds); - } - } - - /** - * ToolTip help handler - */ - protected interface ToolTipHelpTextHandler { - /** - * Get help text - * @param widget the widget that is under help - * @return a help text string - */ - public String getHelpText(Widget widget); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/information.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/information.gif Binary files differdeleted file mode 100755 index 26c7477336..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/information.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/warning.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/warning.gif Binary files differdeleted file mode 100755 index cf4fdf93c7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/hoverhelp/warning.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/imageanalyzer/ImageAnalyzer.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/imageanalyzer/ImageAnalyzer.java deleted file mode 100755 index da68073104..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/imageanalyzer/ImageAnalyzer.java +++ /dev/null @@ -1,2392 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.imageanalyzer; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.printing.*; -import org.eclipse.swt.custom.*; -import java.util.*; -import java.net.*; -import java.io.*; -import java.text.MessageFormat; - -public class ImageAnalyzer { - static ResourceBundle bundle = ResourceBundle.getBundle("examples_images"); - Display display; - Shell shell; - Canvas imageCanvas, paletteCanvas; - Label typeLabel, sizeLabel, depthLabel, transparentPixelLabel, - timeToLoadLabel, screenSizeLabel, backgroundPixelLabel, - locationLabel, disposalMethodLabel, delayTimeLabel, - repeatCountLabel, paletteLabel, dataLabel, statusLabel; - Combo backgroundCombo, scaleXCombo, scaleYCombo, alphaCombo; - Button incrementalCheck, transparentCheck, maskCheck, backgroundCheck; - Button previousButton, nextButton, animateButton; - StyledText dataText; - Sash sash; - Color whiteColor, blackColor, redColor, greenColor, blueColor, canvasBackground; - Font fixedWidthFont; - Cursor crossCursor; - GC imageCanvasGC; - - int paletteWidth = 140; // recalculated and used as a width hint - int ix = 0, iy = 0, py = 0; // used to scroll the image and palette - float xscale = 1, yscale = 1; // used to scale the image - int alpha = 255; // used to modify the alpha value of the image - boolean incremental = false; // used to incrementally display an image - boolean transparent = true; // used to display an image with transparency - boolean showMask = false; // used to display an icon mask or transparent image mask - boolean showBackground = false; // used to display the background of an animated image - boolean animate = false; // used to animate a multi-image file - Thread animateThread; // draws animated images - Thread incrementalThread; // draws incremental images - String lastPath; // used to seed the file dialog - String currentName; // the current image file or URL name - String fileName; // the current image file - ImageLoader loader; // the loader for the current image file - ImageData[] imageDataArray; // all image data read from the current file - int imageDataIndex; // the index of the current image data - ImageData imageData; // the currently-displayed image data - Image image; // the currently-displayed image - Vector incrementalEvents; // incremental image events - long loadTime = 0; // the time it took to load the current image - - static final int INDEX_DIGITS = 4; - static final int ALPHA_CHARS = 5; - static final int ALPHA_CONSTANT = 0; - static final int ALPHA_X = 1; - static final int ALPHA_Y = 2; - static final String[] OPEN_FILTER_EXTENSIONS = new String[] { - "*.bmp; *.gif; *.ico; *.jfif; *.jpeg; *.jpg; *.png; *.tif; *.tiff", - "*.bmp", "*.gif", "*.ico", "*.jpg; *.jpeg; *.jfif", "*.png", "*.tif; *.tiff" }; - static final String[] OPEN_FILTER_NAMES = new String[] { - bundle.getString("All_images") + " (bmp, gif, ico, jfif, jpeg, jpg, png, tif, tiff)", - "BMP (*.bmp)", "GIF (*.gif)", "ICO (*.ico)", "JPEG (*.jpg, *.jpeg, *.jfif)", - "PNG (*.png)", "TIFF (*.tif, *.tiff)" }; - static final String[] SAVE_FILTER_EXTENSIONS = new String[] { - "*.bmp", "*.bmp", "*.gif", "*.ico", "*.jpg", "*.png", "*.tif", "*.bmp" }; - static final String[] SAVE_FILTER_NAMES = new String[] { - "Uncompressed BMP (*.bmp)", "RLE Compressed BMP (*.bmp)", "GIF (*.gif)", - "ICO (*.ico)", "JPEG (*.jpg)", "PNG (*.png)", - "TIFF (*.tif)", "OS/2 BMP (*.bmp)" }; - - class TextPrompter extends Dialog { - String message = ""; - String result = null; - Shell dialog; - Text text; - public TextPrompter (Shell parent, int style) { - super (parent, style); - } - public TextPrompter (Shell parent) { - this (parent, SWT.APPLICATION_MODAL); - } - public String getMessage () { - return message; - } - public void setMessage (String string) { - message = string; - } - public String open () { - dialog = new Shell(getParent(), getStyle()); - dialog.setText(getText()); - dialog.setLayout(new GridLayout()); - Label label = new Label(dialog, SWT.NONE); - label.setText(message); - label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - text = new Text(dialog, SWT.SINGLE | SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.widthHint = 300; - text.setLayoutData(data); - Composite buttons = new Composite(dialog, SWT.NONE); - GridLayout grid = new GridLayout(); - grid.numColumns = 2; - buttons.setLayout(grid); - buttons.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - Button ok = new Button(buttons, SWT.PUSH); - ok.setText(bundle.getString("OK")); - data = new GridData(); - data.widthHint = 75; - ok.setLayoutData(data); - ok.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - result = text.getText(); - dialog.dispose(); - } - }); - Button cancel = new Button(buttons, SWT.PUSH); - cancel.setText(bundle.getString("Cancel")); - data = new GridData(); - data.widthHint = 75; - cancel.setLayoutData(data); - cancel.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - dialog.dispose(); - } - }); - dialog.setDefaultButton(ok); - dialog.pack(); - dialog.open(); - while (!dialog.isDisposed()) { - if (!display.readAndDispatch()) display.sleep(); - } - return result; - } - } - - public static void main(String [] args) { - Display display = new Display(); - ImageAnalyzer imageAnalyzer = new ImageAnalyzer(); - Shell shell = imageAnalyzer.open(display); - - while (!shell.isDisposed()) - if (!display.readAndDispatch()) display.sleep(); - display.dispose(); - } - - public Shell open(Display dpy) { - // Create a window and set its title. - this.display = dpy; - shell = new Shell(display); - shell.setText(bundle.getString("Image_analyzer")); - - // Hook resize and dispose listeners. - shell.addControlListener(new ControlAdapter() { - public void controlResized(ControlEvent event) { - resizeShell(event); - } - }); - shell.addShellListener(new ShellAdapter() { - public void shellClosed(ShellEvent e) { - animate = false; // stop any animation in progress - if (animateThread != null) { - // wait for the thread to die before disposing the shell. - while (animateThread.isAlive()) { - if (!display.readAndDispatch()) display.sleep(); - } - } - e.doit = true; - } - }); - shell.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - // Clean up. - if (image != null) - image.dispose(); - whiteColor.dispose(); - blackColor.dispose(); - redColor.dispose(); - greenColor.dispose(); - blueColor.dispose(); - fixedWidthFont.dispose(); - crossCursor.dispose(); - } - }); - - // Create colors and fonts. - whiteColor = new Color(display, 255, 255, 255); - blackColor = new Color(display, 0, 0, 0); - redColor = new Color(display, 255, 0, 0); - greenColor = new Color(display, 0, 255, 0); - blueColor = new Color(display, 0, 0, 255); - fixedWidthFont = new Font(display, "courier", 10, 0); - crossCursor = new Cursor(display, SWT.CURSOR_CROSS); - - // Add a menu bar and widgets. - createMenuBar(); - createWidgets(); - shell.pack(); - - // Create a GC for drawing, and hook the listener to dispose it. - imageCanvasGC = new GC(imageCanvas); - imageCanvas.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - imageCanvasGC.dispose(); - } - }); - - // Open the window - shell.open(); - return shell; - } - - void createWidgets() { - // Add the widgets to the shell in a grid layout. - GridLayout layout = new GridLayout(); - layout.marginHeight = 0; - layout.numColumns = 2; - shell.setLayout(layout); - - // Add a composite to contain some control widgets across the top. - Composite controls = new Composite(shell, SWT.NONE); - RowLayout rowLayout = new RowLayout(); - rowLayout.marginTop = 5; - rowLayout.marginBottom = 5; - rowLayout.spacing = 8; - controls.setLayout(rowLayout); - GridData gridData = new GridData(); - gridData.horizontalSpan = 2; - controls.setLayoutData(gridData); - - // Combo to change the background. - Group group = new Group(controls, SWT.NONE); - group.setLayout(new RowLayout()); - group.setText(bundle.getString("Background")); - backgroundCombo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY); - backgroundCombo.setItems(new String[] { - bundle.getString("None"), - bundle.getString("White"), - bundle.getString("Black"), - bundle.getString("Red"), - bundle.getString("Green"), - bundle.getString("Blue")}); - backgroundCombo.select(backgroundCombo.indexOf(bundle.getString("White"))); - backgroundCombo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - changeBackground(); - } - }); - - // Combo to change the x scale. - String[] values = { - "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1", - "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2", - "3", "4", "5", "6", "7", "8", "9", "10",}; - group = new Group(controls, SWT.NONE); - group.setLayout(new RowLayout()); - group.setText(bundle.getString("X_scale")); - scaleXCombo = new Combo(group, SWT.DROP_DOWN); - for (int i = 0; i < values.length; i++) { - scaleXCombo.add(values[i]); - } - scaleXCombo.select(scaleXCombo.indexOf("1")); - scaleXCombo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scaleX(); - } - }); - - // Combo to change the y scale. - group = new Group(controls, SWT.NONE); - group.setLayout(new RowLayout()); - group.setText(bundle.getString("Y_scale")); - scaleYCombo = new Combo(group, SWT.DROP_DOWN); - for (int i = 0; i < values.length; i++) { - scaleYCombo.add(values[i]); - } - scaleYCombo.select(scaleYCombo.indexOf("1")); - scaleYCombo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scaleY(); - } - }); - - // Combo to change the alpha value. - group = new Group(controls, SWT.NONE); - group.setLayout(new RowLayout()); - group.setText(bundle.getString("Alpha_K")); - alphaCombo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY); - for (int i = 0; i <= 255; i += 5) { - alphaCombo.add(String.valueOf(i)); - } - alphaCombo.select(alphaCombo.indexOf("255")); - alphaCombo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - alpha(); - } - }); - - // Check box to request incremental display. - group = new Group(controls, SWT.NONE); - group.setLayout(new RowLayout()); - group.setText(bundle.getString("Display")); - incrementalCheck = new Button(group, SWT.CHECK); - incrementalCheck.setText(bundle.getString("Incremental")); - incrementalCheck.setSelection(incremental); - incrementalCheck.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - incremental = ((Button)event.widget).getSelection(); - } - }); - - // Check box to request transparent display. - transparentCheck = new Button(group, SWT.CHECK); - transparentCheck.setText(bundle.getString("Transparent")); - transparentCheck.setSelection(transparent); - transparentCheck.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - transparent = ((Button)event.widget).getSelection(); - if (image != null) { - imageCanvas.redraw(); - } - } - }); - - // Check box to request mask display. - maskCheck = new Button(group, SWT.CHECK); - maskCheck.setText(bundle.getString("Mask")); - maskCheck.setSelection(showMask); - maskCheck.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - showMask = ((Button)event.widget).getSelection(); - if (image != null) { - imageCanvas.redraw(); - } - } - }); - - // Check box to request background display. - backgroundCheck = new Button(group, SWT.CHECK); - backgroundCheck.setText(bundle.getString("Background")); - backgroundCheck.setSelection(showBackground); - backgroundCheck.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - showBackground = ((Button)event.widget).getSelection(); - } - }); - - // Group the animation buttons. - group = new Group(controls, SWT.NONE); - group.setLayout(new RowLayout()); - group.setText(bundle.getString("Animation")); - - // Push button to display the previous image in a multi-image file. - previousButton = new Button(group, SWT.PUSH); - previousButton.setText(bundle.getString("Previous")); - previousButton.setEnabled(false); - previousButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - previous(); - } - }); - - // Push button to display the next image in a multi-image file. - nextButton = new Button(group, SWT.PUSH); - nextButton.setText(bundle.getString("Next")); - nextButton.setEnabled(false); - nextButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - next(); - } - }); - - // Push button to toggle animation of a multi-image file. - animateButton = new Button(group, SWT.PUSH); - animateButton.setText(bundle.getString("Animate")); - animateButton.setEnabled(false); - animateButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - animate(); - } - }); - - // Label to show the image file type. - typeLabel = new Label(shell, SWT.NONE); - typeLabel.setText(bundle.getString("Type_initial")); - typeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Canvas to show the image. - imageCanvas = new Canvas(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND); - imageCanvas.setBackground(whiteColor); - imageCanvas.setCursor(crossCursor); - gridData = new GridData(); - gridData.verticalSpan = 15; - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.FILL; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - imageCanvas.setLayoutData(gridData); - imageCanvas.addPaintListener(new PaintListener() { - public void paintControl(PaintEvent event) { - if (image == null) { - Rectangle bounds = imageCanvas.getBounds(); - event.gc.fillRectangle(0, 0, bounds.width, bounds.height); - } else { - paintImage(event); - } - } - }); - imageCanvas.addMouseMoveListener(new MouseMoveListener() { - public void mouseMove(MouseEvent event) { - if (image != null) { - showColorAt(event.x, event.y); - } - } - }); - - // Set up the image canvas scroll bars. - ScrollBar horizontal = imageCanvas.getHorizontalBar(); - horizontal.setVisible(true); - horizontal.setMinimum(0); - horizontal.setEnabled(false); - horizontal.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollHorizontally((ScrollBar)event.widget); - } - }); - ScrollBar vertical = imageCanvas.getVerticalBar(); - vertical.setVisible(true); - vertical.setMinimum(0); - vertical.setEnabled(false); - vertical.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollVertically((ScrollBar)event.widget); - } - }); - - // Label to show the image size. - sizeLabel = new Label(shell, SWT.NONE); - sizeLabel.setText(bundle.getString("Size_initial")); - sizeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the image depth. - depthLabel = new Label(shell, SWT.NONE); - depthLabel.setText(bundle.getString("Depth_initial")); - depthLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the transparent pixel. - transparentPixelLabel = new Label(shell, SWT.NONE); - transparentPixelLabel.setText(bundle.getString("Transparent_pixel_initial")); - transparentPixelLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the time to load. - timeToLoadLabel = new Label(shell, SWT.NONE); - timeToLoadLabel.setText(bundle.getString("Time_to_load_initial")); - timeToLoadLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Separate the animation fields from the rest of the fields. - Label separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL); - separator.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the logical screen size for animation. - screenSizeLabel = new Label(shell, SWT.NONE); - screenSizeLabel.setText(bundle.getString("Animation_size_initial")); - screenSizeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the background pixel. - backgroundPixelLabel = new Label(shell, SWT.NONE); - backgroundPixelLabel.setText(bundle.getString("Background_pixel_initial")); - backgroundPixelLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the image location (x, y). - locationLabel = new Label(shell, SWT.NONE); - locationLabel.setText(bundle.getString("Image_location_initial")); - locationLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the image disposal method. - disposalMethodLabel = new Label(shell, SWT.NONE); - disposalMethodLabel.setText(bundle.getString("Disposal_initial")); - disposalMethodLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the image delay time. - delayTimeLabel = new Label(shell, SWT.NONE); - delayTimeLabel.setText(bundle.getString("Delay_initial")); - delayTimeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show the background pixel. - repeatCountLabel = new Label(shell, SWT.NONE); - repeatCountLabel.setText(bundle.getString("Repeats_initial")); - repeatCountLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Separate the animation fields from the palette. - separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL); - separator.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Label to show if the image has a direct or indexed palette. - paletteLabel = new Label(shell, SWT.NONE); - paletteLabel.setText(bundle.getString("Palette_initial")); - paletteLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - // Canvas to show the image's palette. - paletteCanvas = new Canvas(shell, SWT.BORDER | SWT.V_SCROLL | SWT.NO_REDRAW_RESIZE); - paletteCanvas.setFont(fixedWidthFont); - paletteCanvas.getVerticalBar().setVisible(true); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.FILL; - GC gc = new GC(paletteLabel); - paletteWidth = gc.stringExtent(bundle.getString("Max_length_string")).x; - gc.dispose(); - gridData.widthHint = paletteWidth; - gridData.heightHint = 16 * 11; // show at least 16 colors - paletteCanvas.setLayoutData(gridData); - paletteCanvas.addPaintListener(new PaintListener() { - public void paintControl(PaintEvent event) { - if (image != null) - paintPalette(event); - } - }); - - // Set up the palette canvas scroll bar. - vertical = paletteCanvas.getVerticalBar(); - vertical.setVisible(true); - vertical.setMinimum(0); - vertical.setIncrement(10); - vertical.setEnabled(false); - vertical.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollPalette((ScrollBar)event.widget); - } - }); - - // Sash to see more of image or image data. - sash = new Sash(shell, SWT.HORIZONTAL); - gridData = new GridData(); - gridData.horizontalSpan = 2; - gridData.horizontalAlignment = GridData.FILL; - sash.setLayoutData(gridData); - sash.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - if (event.detail != SWT.DRAG) { - ((GridData)paletteCanvas.getLayoutData()).heightHint = SWT.DEFAULT; - Rectangle paletteCanvasBounds = paletteCanvas.getBounds(); - int minY = paletteCanvasBounds.y + 20; - Rectangle dataLabelBounds = dataLabel.getBounds(); - int maxY = statusLabel.getBounds().y - dataLabelBounds.height - 20; - if (event.y > minY && event.y < maxY) { - Rectangle oldSash = sash.getBounds(); - sash.setBounds(event.x, event.y, event.width, event.height); - int diff = event.y - oldSash.y; - Rectangle bounds = imageCanvas.getBounds(); - imageCanvas.setBounds(bounds.x, bounds.y, bounds.width, bounds.height + diff); - bounds = paletteCanvasBounds; - paletteCanvas.setBounds(bounds.x, bounds.y, bounds.width, bounds.height + diff); - bounds = dataLabelBounds; - dataLabel.setBounds(bounds.x, bounds.y + diff, bounds.width, bounds.height); - bounds = dataText.getBounds(); - dataText.setBounds(bounds.x, bounds.y + diff, bounds.width, bounds.height - diff); - //shell.layout(true); - } - } - } - }); - - // Label to show data-specific fields. - dataLabel = new Label(shell, SWT.NONE); - dataLabel.setText(bundle.getString("Pixel_data_initial")); - gridData = new GridData(); - gridData.horizontalSpan = 2; - gridData.horizontalAlignment = GridData.FILL; - dataLabel.setLayoutData(gridData); - - // Text to show a dump of the data. - dataText = new StyledText(shell, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL); - dataText.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); - dataText.setFont(fixedWidthFont); - gridData = new GridData(); - gridData.horizontalSpan = 2; - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.FILL; - gridData.heightHint = 128; - gridData.grabExcessVerticalSpace = true; - dataText.setLayoutData(gridData); - dataText.addMouseListener(new MouseAdapter() { - public void mouseDown(MouseEvent event) { - if (image != null && event.button == 1) { - showColorForData(); - } - } - }); - dataText.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent event) { - if (image != null) { - showColorForData(); - } - } - }); - - // Label to show status and cursor location in image. - statusLabel = new Label(shell, SWT.NONE); - statusLabel.setText(""); - gridData = new GridData(); - gridData.horizontalSpan = 2; - gridData.horizontalAlignment = GridData.FILL; - statusLabel.setLayoutData(gridData); - } - - Menu createMenuBar() { - // Menu bar. - Menu menuBar = new Menu(shell, SWT.BAR); - shell.setMenuBar(menuBar); - createFileMenu(menuBar); - createAlphaMenu(menuBar); - return menuBar; - } - - void createFileMenu(Menu menuBar) { - // File menu - MenuItem item = new MenuItem(menuBar, SWT.CASCADE); - item.setText(bundle.getString("File")); - Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(fileMenu); - - // File -> Open File... - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("OpenFile")); - item.setAccelerator(SWT.MOD1 + 'O'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuOpenFile(); - } - }); - - // File -> Open URL... - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("OpenURL")); - item.setAccelerator(SWT.MOD1 + 'U'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuOpenURL(); - } - }); - - // File -> Reopen - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("Reopen")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuReopen(); - } - }); - - new MenuItem(fileMenu, SWT.SEPARATOR); - - // File -> Load File... (natively) - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("LoadFile")); - item.setAccelerator(SWT.MOD1 + 'L'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuLoad(); - } - }); - - new MenuItem(fileMenu, SWT.SEPARATOR); - - // File -> Save - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("Save")); - item.setAccelerator(SWT.MOD1 + 'S'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuSave(); - } - }); - - // File -> Save As... - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("Save_as")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuSaveAs(); - } - }); - - // File -> Save Mask As... - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("Save_mask_as")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuSaveMaskAs(); - } - }); - - new MenuItem(fileMenu, SWT.SEPARATOR); - - // File -> Print - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("Print")); - item.setAccelerator(SWT.MOD1 + 'P'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuPrint(); - } - }); - - new MenuItem(fileMenu, SWT.SEPARATOR); - - // File -> Exit - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText(bundle.getString("Exit")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - shell.close(); - } - }); - - } - - void createAlphaMenu(Menu menuBar) { - // Alpha menu - MenuItem item = new MenuItem(menuBar, SWT.CASCADE); - item.setText(bundle.getString("Alpha")); - Menu alphaMenu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(alphaMenu); - - // Alpha -> K - item = new MenuItem(alphaMenu, SWT.PUSH); - item.setText("K"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuComposeAlpha(ALPHA_CONSTANT); - } - }); - - // Alpha -> (K + x) % 256 - item = new MenuItem(alphaMenu, SWT.PUSH); - item.setText("(K + x) % 256"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuComposeAlpha(ALPHA_X); - } - }); - - // Alpha -> (K + y) % 256 - item = new MenuItem(alphaMenu, SWT.PUSH); - item.setText("(K + y) % 256"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuComposeAlpha(ALPHA_Y); - } - }); - } - - void menuComposeAlpha(int alpha_op) { - if (image == null) return; - animate = false; // stop any animation in progress - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - try { - if (alpha_op == ALPHA_CONSTANT) { - imageData.alpha = alpha; - } else { - imageData.alpha = -1; - switch (alpha_op) { - case ALPHA_X: - for (int y = 0; y < imageData.height; y++) { - for (int x = 0; x < imageData.width; x++) { - imageData.setAlpha(x, y, (x + alpha) % 256); - } - } - break; - case ALPHA_Y: - for (int y = 0; y < imageData.height; y++) { - for (int x = 0; x < imageData.width; x++) { - imageData.setAlpha(x, y, (y + alpha) % 256); - } - } - break; - default: break; - } - } - displayImage(imageData); - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - /* Just use Image(device, filename) to load an image file. */ - void menuLoad() { - animate = false; // stop any animation in progress - - // Get the user to choose an image file. - FileDialog fileChooser = new FileDialog(shell, SWT.OPEN); - if (lastPath != null) - fileChooser.setFilterPath(lastPath); - fileChooser.setFilterExtensions(OPEN_FILTER_EXTENSIONS); - fileChooser.setFilterNames(OPEN_FILTER_NAMES); - String filename = fileChooser.open(); - lastPath = fileChooser.getFilterPath(); - if (filename == null) - return; - - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - try { - // Read the new image from the chosen file. - long startTime = System.currentTimeMillis(); - Image newImage = new Image(display, filename); - loadTime = System.currentTimeMillis() - startTime; // don't include getImageData in load time - imageData = newImage.getImageData(); - - // Cache the filename. - currentName = filename; - fileName = filename; - - // Fill in array and loader data. - loader = new ImageLoader(); - imageDataArray = new ImageData[] {imageData}; - loader.data = imageDataArray; - - // Display the image. - imageDataIndex = 0; - displayImage(imageData); - } catch (SWTException e) { - showErrorDialog(bundle.getString("Loading_lc"), filename, e); - } catch (SWTError e) { - showErrorDialog(bundle.getString("Loading_lc"), filename, e); - } catch (OutOfMemoryError e) { - showErrorDialog(bundle.getString("Loading_lc"), filename, e); - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - void menuOpenFile() { - animate = false; // stop any animation in progress - - // Get the user to choose an image file. - FileDialog fileChooser = new FileDialog(shell, SWT.OPEN); - if (lastPath != null) - fileChooser.setFilterPath(lastPath); - fileChooser.setFilterExtensions(OPEN_FILTER_EXTENSIONS); - fileChooser.setFilterNames(OPEN_FILTER_NAMES); - String filename = fileChooser.open(); - lastPath = fileChooser.getFilterPath(); - if (filename == null) - return; - - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - ImageLoader oldLoader = loader; - try { - loader = new ImageLoader(); - if (incremental) { - // Prepare to handle incremental events. - loader.addImageLoaderListener(new ImageLoaderListener() { - public void imageDataLoaded(ImageLoaderEvent event) { - incrementalDataLoaded(event); - } - }); - incrementalThreadStart(); - } - // Read the new image(s) from the chosen file. - long startTime = System.currentTimeMillis(); - imageDataArray = loader.load(filename); - loadTime = System.currentTimeMillis() - startTime; - if (imageDataArray.length > 0) { - // Cache the filename. - currentName = filename; - fileName = filename; - - // If there are multiple images in the file (typically GIF) - // then enable the Previous, Next and Animate buttons. - previousButton.setEnabled(imageDataArray.length > 1); - nextButton.setEnabled(imageDataArray.length > 1); - animateButton.setEnabled(imageDataArray.length > 1 && loader.logicalScreenWidth > 0 && loader.logicalScreenHeight > 0); - - // Display the first image in the file. - imageDataIndex = 0; - displayImage(imageDataArray[imageDataIndex]); - } - } catch (SWTException e) { - showErrorDialog(bundle.getString("Loading_lc"), filename, e); - loader = oldLoader; - } catch (SWTError e) { - showErrorDialog(bundle.getString("Loading_lc"), filename, e); - loader = oldLoader; - } catch (OutOfMemoryError e) { - showErrorDialog(bundle.getString("Loading_lc"), filename, e); - loader = oldLoader; - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - void menuOpenURL() { - animate = false; // stop any animation in progress - - // Get the user to choose an image URL. - TextPrompter textPrompter = new TextPrompter(shell, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM); - textPrompter.setText(bundle.getString("OpenURLDialog")); - textPrompter.setMessage(bundle.getString("EnterURL")); - String urlname = textPrompter.open(); - if (urlname == null) return; - - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - ImageLoader oldLoader = loader; - try { - URL url = new URL(urlname); - InputStream stream = url.openStream(); - loader = new ImageLoader(); - if (incremental) { - // Prepare to handle incremental events. - loader.addImageLoaderListener(new ImageLoaderListener() { - public void imageDataLoaded(ImageLoaderEvent event) { - incrementalDataLoaded(event); - } - }); - incrementalThreadStart(); - } - // Read the new image(s) from the chosen URL. - long startTime = System.currentTimeMillis(); - imageDataArray = loader.load(stream); - loadTime = System.currentTimeMillis() - startTime; - stream.close(); - if (imageDataArray.length > 0) { - currentName = urlname; - fileName = null; - - // If there are multiple images (typically GIF) - // then enable the Previous, Next and Animate buttons. - previousButton.setEnabled(imageDataArray.length > 1); - nextButton.setEnabled(imageDataArray.length > 1); - animateButton.setEnabled(imageDataArray.length > 1 && loader.logicalScreenWidth > 0 && loader.logicalScreenHeight > 0); - - // Display the first image. - imageDataIndex = 0; - displayImage(imageDataArray[imageDataIndex]); - } - } catch (Exception e) { - showErrorDialog(bundle.getString("Loading_lc"), urlname, e); - loader = oldLoader; - } catch (OutOfMemoryError e) { - showErrorDialog(bundle.getString("Loading_lc"), urlname, e); - loader = oldLoader; - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - /* - * Called to start a thread that draws incremental images - * as they are loaded. - */ - void incrementalThreadStart() { - incrementalEvents = new Vector(); - incrementalThread = new Thread("Incremental") { - public void run() { - // Draw the first ImageData increment. - while (incrementalEvents != null) { - // Synchronize so we don't try to remove when the vector is null. - synchronized (ImageAnalyzer.this) { - if (incrementalEvents != null) { - if (incrementalEvents.size() > 0) { - ImageLoaderEvent event = (ImageLoaderEvent) incrementalEvents.remove(0); - if (image != null) image.dispose(); - image = new Image(display, event.imageData); - imageData = event.imageData; - imageCanvasGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - } else { - yield(); - } - } - } - } - display.wake(); - } - }; - incrementalThread.setDaemon(true); - incrementalThread.start(); - } - - /* - * Called when incremental image data has been loaded, - * for example, for interlaced GIF/PNG or progressive JPEG. - */ - void incrementalDataLoaded(ImageLoaderEvent event) { - // Synchronize so that we do not try to add while - // the incremental drawing thread is removing. - synchronized (this) { - incrementalEvents.addElement(event); - } - } - - void menuSave() { - if (image == null) return; - animate = false; // stop any animation in progress - - // If the image file type is unknown, we can't 'Save', - // so we have to use 'Save As...'. - if (imageData.type == SWT.IMAGE_UNDEFINED || fileName == null) { - menuSaveAs(); - return; - } - - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - try { - // Save the current image to the current file. - loader.data = new ImageData[] {imageData}; - loader.save(fileName, imageData.type); - - } catch (SWTException e) { - showErrorDialog(bundle.getString("Saving_lc"), fileName, e); - } catch (SWTError e) { - showErrorDialog(bundle.getString("Saving_lc"), fileName, e); - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - void menuSaveAs() { - if (image == null) return; - animate = false; // stop any animation in progress - - // Get the user to choose a file name and type to save. - FileDialog fileChooser = new FileDialog(shell, SWT.SAVE); - fileChooser.setFilterPath(lastPath); - if (fileName != null) { - String name = fileName; - int nameStart = name.lastIndexOf(java.io.File.separatorChar); - if (nameStart > -1) { - name = name.substring(nameStart + 1); - } - fileChooser.setFileName(name); - } - fileChooser.setFilterExtensions(SAVE_FILTER_EXTENSIONS); - fileChooser.setFilterNames(SAVE_FILTER_NAMES); - String filename = fileChooser.open(); - lastPath = fileChooser.getFilterPath(); - if (filename == null) - return; - - // Figure out what file type the user wants saved. - int filetype = fileChooser.getFilterIndex(); - if (filetype == -1) { - /* The platform file dialog does not support user-selectable file filters. - * Determine the desired type by looking at the file extension. - */ - filetype = determineFileType(filename); - if (filetype == SWT.IMAGE_UNDEFINED) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage(createMsg(bundle.getString("Unknown_extension"), - filename.substring(filename.lastIndexOf('.') + 1))); - box.open(); - return; - } - } - - if (new java.io.File(filename).exists()) { - MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL); - box.setMessage(createMsg(bundle.getString("Overwrite"), filename)); - if (box.open() == SWT.CANCEL) - return; - } - - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - try { - // Save the current image to the specified file. - boolean multi = false; - if (loader.data.length > 1) { - MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO | SWT.CANCEL); - box.setMessage(createMsg(bundle.getString("Save_all"), new Integer(loader.data.length))); - int result = box.open(); - if (result == SWT.CANCEL) return; - if (result == SWT.YES) multi = true; - } - /* If the image has transparency but the user has transparency turned off, - * turn it off in the saved image. */ - int transparentPixel = imageData.transparentPixel; - if (!multi && transparentPixel != -1 && !transparent) { - imageData.transparentPixel = -1; - } - - if (!multi) loader.data = new ImageData[] {imageData}; - loader.save(filename, filetype); - - /* Restore the previous transparency setting. */ - if (!multi && transparentPixel != -1 && !transparent) { - imageData.transparentPixel = transparentPixel; - } - - // Update the shell title and file type label, - // and use the new file. - fileName = filename; - shell.setText(createMsg(bundle.getString("Analyzer_on"), filename)); - typeLabel.setText(createMsg(bundle.getString("Type_string"), fileTypeString(filetype))); - - } catch (SWTException e) { - showErrorDialog(bundle.getString("Saving_lc"), filename, e); - } catch (SWTError e) { - showErrorDialog(bundle.getString("Saving_lc"), filename, e); - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - void menuSaveMaskAs() { - if (image == null || !showMask) return; - if (imageData.getTransparencyType() == SWT.TRANSPARENCY_NONE) return; - animate = false; // stop any animation in progress - - // Get the user to choose a file name and type to save. - FileDialog fileChooser = new FileDialog(shell, SWT.SAVE); - fileChooser.setFilterPath(lastPath); - if (fileName != null) fileChooser.setFileName(fileName); - fileChooser.setFilterExtensions(SAVE_FILTER_EXTENSIONS); - fileChooser.setFilterNames(SAVE_FILTER_NAMES); - String filename = fileChooser.open(); - lastPath = fileChooser.getFilterPath(); - if (filename == null) - return; - - // Figure out what file type the user wants saved. - int filetype = fileChooser.getFilterIndex(); - if (filetype == -1) { - /* The platform file dialog does not support user-selectable file filters. - * Determine the desired type by looking at the file extension. - */ - filetype = determineFileType(filename); - if (filetype == SWT.IMAGE_UNDEFINED) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage(createMsg(bundle.getString("Unknown_extension"), - filename.substring(filename.lastIndexOf('.') + 1))); - box.open(); - return; - } - } - - if (new java.io.File(filename).exists()) { - MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL); - box.setMessage(createMsg(bundle.getString("Overwrite"), filename)); - if (box.open() == SWT.CANCEL) - return; - } - - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - try { - // Save the mask of the current image to the specified file. - ImageData maskImageData = imageData.getTransparencyMask(); - loader.data = new ImageData[] {maskImageData}; - loader.save(filename, filetype); - - } catch (SWTException e) { - showErrorDialog(bundle.getString("Saving_lc"), filename, e); - } catch (SWTError e) { - showErrorDialog(bundle.getString("Saving_lc"), filename, e); - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - void menuPrint() { - if (image == null) return; - - try { - // Ask the user to specify the printer. - PrintDialog dialog = new PrintDialog(shell, SWT.NONE); - PrinterData printerData = dialog.open(); - if (printerData == null) return; - - Printer printer = new Printer(printerData); - Point screenDPI = display.getDPI(); - Point printerDPI = printer.getDPI(); - int scaleFactor = printerDPI.x / screenDPI.x; - Rectangle trim = printer.computeTrim(0, 0, 0, 0); - if (printer.startJob(currentName)) { - if (printer.startPage()) { - GC gc = new GC(printer); - int transparentPixel = imageData.transparentPixel; - if (transparentPixel != -1 && !transparent) { - imageData.transparentPixel = -1; - } - Image printerImage = new Image(printer, imageData); - gc.drawImage( - printerImage, - 0, - 0, - imageData.width, - imageData.height, - -trim.x, - -trim.y, - scaleFactor * imageData.width, - scaleFactor * imageData.height); - if (transparentPixel != -1 && !transparent) { - imageData.transparentPixel = transparentPixel; - } - printerImage.dispose(); - gc.dispose(); - printer.endPage(); - } - printer.endJob(); - } - printer.dispose(); - } catch (SWTError e) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage(bundle.getString("Printing_error") + e.getMessage()); - box.open(); - } - } - - void menuReopen() { - if (currentName == null) return; - animate = false; // stop any animation in progress - Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT); - shell.setCursor(waitCursor); - imageCanvas.setCursor(waitCursor); - try { - loader = new ImageLoader(); - ImageData[] newImageData; - if (fileName == null) { - URL url = new URL(currentName); - InputStream stream = url.openStream(); - long startTime = System.currentTimeMillis(); - newImageData = loader.load(stream); - loadTime = System.currentTimeMillis() - startTime; - stream.close(); - } else { - long startTime = System.currentTimeMillis(); - newImageData = loader.load(fileName); - loadTime = System.currentTimeMillis() - startTime; - } - imageDataIndex = 0; - displayImage(newImageData[imageDataIndex]); - - } catch (Exception e) { - showErrorDialog(bundle.getString("Reloading_lc"), currentName, e); - } catch (OutOfMemoryError e) { - showErrorDialog(bundle.getString("Reloading_lc"), currentName, e); - } finally { - shell.setCursor(null); - imageCanvas.setCursor(crossCursor); - waitCursor.dispose(); - } - } - - void changeBackground() { - String background = backgroundCombo.getText(); - if (background.equals(bundle.getString("White"))) { - imageCanvas.setBackground(whiteColor); - } else if (background.equals(bundle.getString("Black"))) { - imageCanvas.setBackground(blackColor); - } else if (background.equals(bundle.getString("Red"))) { - imageCanvas.setBackground(redColor); - } else if (background.equals(bundle.getString("Green"))) { - imageCanvas.setBackground(greenColor); - } else if (background.equals(bundle.getString("Blue"))) { - imageCanvas.setBackground(blueColor); - } else { - imageCanvas.setBackground(null); - } - } - - /* - * Called when the ScaleX combo selection changes. - */ - void scaleX() { - try { - xscale = Float.parseFloat(scaleXCombo.getText()); - } catch (NumberFormatException e) { - xscale = 1; - scaleXCombo.select(scaleXCombo.indexOf("1")); - } - if (image != null) { - resizeScrollBars(); - imageCanvas.redraw(); - } - } - - /* - * Called when the ScaleY combo selection changes. - */ - void scaleY() { - try { - yscale = Float.parseFloat(scaleYCombo.getText()); - } catch (NumberFormatException e) { - yscale = 1; - scaleYCombo.select(scaleYCombo.indexOf("1")); - } - if (image != null) { - resizeScrollBars(); - imageCanvas.redraw(); - } - } - - /* - * Called when the Alpha combo selection changes. - */ - void alpha() { - try { - alpha = Integer.parseInt(alphaCombo.getText()); - } catch (NumberFormatException e) { - alphaCombo.select(alphaCombo.indexOf("255")); - alpha = 255; - } - } - - /* - * Called when the mouse moves in the image canvas. - * Show the color of the image at the point under the mouse. - */ - void showColorAt(int mx, int my) { - int x = mx - imageData.x - ix; - int y = my - imageData.y - iy; - showColorForPixel(x, y); - } - - /* - * Called when a mouse down or key press is detected - * in the data text. Show the color of the pixel at - * the caret position in the data text. - */ - void showColorForData() { - int delimiterLength = dataText.getLineDelimiter().length(); - int charactersPerLine = 6 + 3 * imageData.bytesPerLine + delimiterLength; - int position = dataText.getCaretOffset(); - int y = position / charactersPerLine; - if ((position - y * charactersPerLine) < 6 || ((y + 1) * charactersPerLine - position) <= delimiterLength) { - statusLabel.setText(""); - return; - } - int dataPosition = position - 6 * (y + 1) - delimiterLength * y; - int byteNumber = dataPosition / 3; - int where = dataPosition - byteNumber * 3; - int xByte = byteNumber % imageData.bytesPerLine; - int x = -1; - int depth = imageData.depth; - if (depth == 1) { // 8 pixels per byte (can only show 3 of 8) - if (where == 0) x = xByte * 8; - if (where == 1) x = xByte * 8 + 3; - if (where == 2) x = xByte * 8 + 7; - } - if (depth == 2) { // 4 pixels per byte (can only show 3 of 4) - if (where == 0) x = xByte * 4; - if (where == 1) x = xByte * 4 + 1; - if (where == 2) x = xByte * 4 + 3; - } - if (depth == 4) { // 2 pixels per byte - if (where == 0) x = xByte * 2; - if (where == 1) x = xByte * 2; - if (where == 2) x = xByte * 2 + 1; - } - if (depth == 8) { // 1 byte per pixel - x = xByte; - } - if (depth == 16) { // 2 bytes per pixel - x = xByte / 2; - } - if (depth == 24) { // 3 bytes per pixel - x = xByte / 3; - } - if (depth == 32) { // 4 bytes per pixel - x = xByte / 4; - } - if (x != -1) { - showColorForPixel(x, y); - } else { - statusLabel.setText(""); - } - } - - /* - * Set the status label to show color information - * for the specified pixel in the image. - */ - void showColorForPixel(int x, int y) { - if (x >= 0 && x < imageData.width && y >= 0 && y < imageData.height) { - int pixel = imageData.getPixel(x, y); - RGB rgb = imageData.palette.getRGB(pixel); - boolean hasAlpha = false; - int alphaValue = 0; - if (imageData.alphaData != null && imageData.alphaData.length > 0) { - hasAlpha = true; - alphaValue = imageData.getAlpha(x, y); - } - String rgbMessageFormat = bundle.getString(hasAlpha ? "RGBA" : "RGB"); - Object[] rgbArgs = { - Integer.toString(rgb.red), - Integer.toString(rgb.green), - Integer.toString(rgb.blue), - Integer.toString(alphaValue) - }; - Object[] rgbHexArgs = { - Integer.toHexString(rgb.red), - Integer.toHexString(rgb.green), - Integer.toHexString(rgb.blue), - Integer.toHexString(alphaValue) - }; - Object[] args = { - new Integer(x), - new Integer(y), - new Integer(pixel), - Integer.toHexString(pixel), - createMsg(rgbMessageFormat, rgbArgs), - createMsg(rgbMessageFormat, rgbHexArgs), - (pixel == imageData.transparentPixel) ? bundle.getString("Color_at_transparent") : ""}; - statusLabel.setText(createMsg(bundle.getString("Color_at"), args)); - } else { - statusLabel.setText(""); - } - } - - /* - * Called when the Animate button is pressed. - */ - void animate() { - animate = !animate; - if (animate && image != null && imageDataArray.length > 1) { - animateThread = new Thread(bundle.getString("Animation")) { - public void run() { - // Pre-animation widget setup. - preAnimation(); - - // Animate. - try { - animateLoop(); - } catch (final SWTException e) { - display.syncExec(new Runnable() { - public void run() { - showErrorDialog(createMsg(bundle.getString("Creating_image"), - new Integer(imageDataIndex+1)), - currentName, e); - } - }); - } - - // Post animation widget reset. - postAnimation(); - } - }; - animateThread.setDaemon(true); - animateThread.start(); - } - } - - /* - * Loop through all of the images in a multi-image file - * and display them one after another. - */ - void animateLoop() { - // Create an off-screen image to draw on, and a GC to draw with. - // Both are disposed after the animation. - Image offScreenImage = new Image(display, loader.logicalScreenWidth, loader.logicalScreenHeight); - GC offScreenImageGC = new GC(offScreenImage); - - try { - // Use syncExec to get the background color of the imageCanvas. - display.syncExec(new Runnable() { - public void run() { - canvasBackground = imageCanvas.getBackground(); - } - }); - - // Fill the off-screen image with the background color of the canvas. - offScreenImageGC.setBackground(canvasBackground); - offScreenImageGC.fillRectangle( - 0, - 0, - loader.logicalScreenWidth, - loader.logicalScreenHeight); - - // Draw the current image onto the off-screen image. - offScreenImageGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - - int repeatCount = loader.repeatCount; - while (animate && (loader.repeatCount == 0 || repeatCount > 0)) { - if (imageData.disposalMethod == SWT.DM_FILL_BACKGROUND) { - // Fill with the background color before drawing. - Color bgColor = null; - int backgroundPixel = loader.backgroundPixel; - if (showBackground && backgroundPixel != -1) { - // Fill with the background color. - RGB backgroundRGB = imageData.palette.getRGB(backgroundPixel); - bgColor = new Color(null, backgroundRGB); - } - try { - offScreenImageGC.setBackground(bgColor != null ? bgColor : canvasBackground); - offScreenImageGC.fillRectangle( - imageData.x, - imageData.y, - imageData.width, - imageData.height); - } finally { - if (bgColor != null) bgColor.dispose(); - } - } else if (imageData.disposalMethod == SWT.DM_FILL_PREVIOUS) { - // Restore the previous image before drawing. - offScreenImageGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - } - - // Get the next image data. - imageDataIndex = (imageDataIndex + 1) % imageDataArray.length; - imageData = imageDataArray[imageDataIndex]; - image.dispose(); - image = new Image(display, imageData); - - // Draw the new image data. - offScreenImageGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - - // Draw the off-screen image to the screen. - imageCanvasGC.drawImage(offScreenImage, 0, 0); - - // Sleep for the specified delay time before drawing again. - try { - Thread.sleep(visibleDelay(imageData.delayTime * 10)); - } catch (InterruptedException e) { - } - - // If we have just drawn the last image in the set, - // then decrement the repeat count. - if (imageDataIndex == imageDataArray.length - 1) repeatCount--; - } - } finally { - offScreenImage.dispose(); - offScreenImageGC.dispose(); - } - } - - /* - * Pre animation setup. - */ - void preAnimation() { - display.syncExec(new Runnable() { - public void run() { - // Change the label of the Animate button to 'Stop'. - animateButton.setText(bundle.getString("Stop")); - - // Disable anything we don't want the user - // to select during the animation. - previousButton.setEnabled(false); - nextButton.setEnabled(false); - backgroundCombo.setEnabled(false); - scaleXCombo.setEnabled(false); - scaleYCombo.setEnabled(false); - alphaCombo.setEnabled(false); - incrementalCheck.setEnabled(false); - transparentCheck.setEnabled(false); - maskCheck.setEnabled(false); - // leave backgroundCheck enabled - - // Reset the scale combos and scrollbars. - resetScaleCombos(); - resetScrollBars(); - } - }); - } - - /* - * Post animation reset. - */ - void postAnimation() { - display.syncExec(new Runnable() { - public void run() { - // Enable anything we disabled before the animation. - previousButton.setEnabled(true); - nextButton.setEnabled(true); - backgroundCombo.setEnabled(true); - scaleXCombo.setEnabled(true); - scaleYCombo.setEnabled(true); - alphaCombo.setEnabled(true); - incrementalCheck.setEnabled(true); - transparentCheck.setEnabled(true); - maskCheck.setEnabled(true); - - // Reset the label of the Animate button. - animateButton.setText(bundle.getString("Animate")); - - if (animate) { - // If animate is still true, we finished the - // full number of repeats. Leave the image as-is. - animate = false; - } else { - // Redisplay the current image and its palette. - displayImage(imageDataArray[imageDataIndex]); - } - } - }); - } - - /* - * Called when the Previous button is pressed. - * Display the previous image in a multi-image file. - */ - void previous() { - if (image != null && imageDataArray.length > 1) { - if (imageDataIndex == 0) { - imageDataIndex = imageDataArray.length; - } - imageDataIndex = imageDataIndex - 1; - displayImage(imageDataArray[imageDataIndex]); - } - } - - /* - * Called when the Next button is pressed. - * Display the next image in a multi-image file. - */ - void next() { - if (image != null && imageDataArray.length > 1) { - imageDataIndex = (imageDataIndex + 1) % imageDataArray.length; - displayImage(imageDataArray[imageDataIndex]); - } - } - - void displayImage(ImageData newImageData) { - resetScaleCombos(); - if (incremental && incrementalThread != null) { - // Tell the incremental thread to stop drawing. - synchronized (this) { - incrementalEvents = null; - } - - // Wait until the incremental thread is done. - while (incrementalThread.isAlive()) { - if (!display.readAndDispatch()) display.sleep(); - } - } - - // Dispose of the old image, if there was one. - if (image != null) image.dispose(); - - try { - // Cache the new image and imageData. - image = new Image(display, newImageData); - imageData = newImageData; - - } catch (SWTException e) { - showErrorDialog(bundle.getString("Creating_from") + " ", currentName, e); - image = null; - return; - } - - // Update the widgets with the new image info. - String string = createMsg(bundle.getString("Analyzer_on"), currentName); - shell.setText(string); - - if (imageDataArray.length > 1) { - string = createMsg(bundle.getString("Type_index"), - new Object[] {fileTypeString(imageData.type), - new Integer(imageDataIndex + 1), - new Integer(imageDataArray.length)}); - } else { - string = createMsg(bundle.getString("Type_string"), fileTypeString(imageData.type)); - } - typeLabel.setText(string); - - string = createMsg(bundle.getString("Size_value"), - new Object[] {new Integer(imageData.width), - new Integer(imageData.height)}); - sizeLabel.setText(string); - - string = createMsg(bundle.getString("Depth_value"), new Integer(imageData.depth)); - depthLabel.setText(string); - - string = createMsg(bundle.getString("Transparent_pixel_value"), pixelInfo(imageData.transparentPixel)); - transparentPixelLabel.setText(string); - - string = createMsg(bundle.getString("Time_to_load_value"), new Long(loadTime)); - timeToLoadLabel.setText(string); - - string = createMsg(bundle.getString("Animation_size_value"), - new Object[] {new Integer(loader.logicalScreenWidth), - new Integer(loader.logicalScreenHeight)}); - screenSizeLabel.setText(string); - - string = createMsg(bundle.getString("Background_pixel_value"), pixelInfo(loader.backgroundPixel)); - backgroundPixelLabel.setText(string); - - string = createMsg(bundle.getString("Image_location_value"), - new Object[] {new Integer(imageData.x), new Integer(imageData.y)}); - locationLabel.setText(string); - - string = createMsg(bundle.getString("Disposal_value"), - new Object[] {new Integer(imageData.disposalMethod), - disposalString(imageData.disposalMethod)}); - disposalMethodLabel.setText(string); - - int delay = imageData.delayTime * 10; - int delayUsed = visibleDelay(delay); - if (delay != delayUsed) { - string = createMsg(bundle.getString("Delay_value"), - new Object[] {new Integer(delay), new Integer(delayUsed)}); - } else { - string = createMsg(bundle.getString("Delay_used"), new Integer(delay)); - } - delayTimeLabel.setText(string); - - if (loader.repeatCount == 0) { - string = createMsg( bundle.getString("Repeats_forever"), new Integer(loader.repeatCount)); - } else { - string = createMsg(bundle.getString("Repeats_value"), new Integer(loader.repeatCount)); - } - repeatCountLabel.setText(string); - - if (imageData.palette.isDirect) { - string = bundle.getString("Palette_direct"); - } else { - string = createMsg(bundle.getString("Palette_value"), new Integer(imageData.palette.getRGBs().length)); - } - paletteLabel.setText(string); - - string = createMsg( - bundle.getString("Pixel_data_value"), - new Object[] { - new Integer(imageData.bytesPerLine), - new Integer(imageData.scanlinePad), - depthInfo(imageData.depth), - (imageData.alphaData != null && imageData.alphaData.length > 0) ? - bundle.getString("Scroll_for_alpha") : "" }); - dataLabel.setText(string); - - String data = dataHexDump(dataText.getLineDelimiter()); - dataText.setText(data); - - // bold the first column all the way down - int index = 0; - while((index = data.indexOf(':', index+1)) != -1) { - int start = index - INDEX_DIGITS; - int length = INDEX_DIGITS; - if (Character.isLetter(data.charAt(index-1))) { - start = index - ALPHA_CHARS; - length = ALPHA_CHARS; - } - dataText.setStyleRange(new StyleRange(start, length, dataText.getForeground(), dataText.getBackground(), SWT.BOLD)); - } - - statusLabel.setText(""); - - // Redraw both canvases. - resetScrollBars(); - paletteCanvas.redraw(); - imageCanvas.redraw(); - } - - void paintImage(PaintEvent event) { - GC gc = event.gc; - Image paintImage = image; - - /* If the user wants to see the transparent pixel in its actual color, - * then temporarily turn off transparency. - */ - int transparentPixel = imageData.transparentPixel; - if (transparentPixel != -1 && !transparent) { - imageData.transparentPixel = -1; - paintImage = new Image(display, imageData); - } - - /* Scale the image when drawing, using the user's selected scaling factor. */ - int w = Math.round(imageData.width * xscale); - int h = Math.round(imageData.height * yscale); - - /* If any of the background is visible, fill it with the background color. */ - Rectangle bounds = imageCanvas.getBounds(); - if (imageData.getTransparencyType() != SWT.TRANSPARENCY_NONE) { - /* If there is any transparency at all, fill the whole background. */ - gc.fillRectangle(0, 0, bounds.width, bounds.height); - } else { - /* Otherwise, just fill in the backwards L. */ - if (ix + w < bounds.width) gc.fillRectangle(ix + w, 0, bounds.width - (ix + w), bounds.height); - if (iy + h < bounds.height) gc.fillRectangle(0, iy + h, ix + w, bounds.height - (iy + h)); - } - - /* Draw the image */ - gc.drawImage( - paintImage, - 0, - 0, - imageData.width, - imageData.height, - ix + imageData.x, - iy + imageData.y, - w, - h); - - /* If there is a mask and the user wants to see it, draw it. */ - if (showMask && (imageData.getTransparencyType() != SWT.TRANSPARENCY_NONE)) { - ImageData maskImageData = imageData.getTransparencyMask(); - Image maskImage = new Image(display, maskImageData); - gc.drawImage( - maskImage, - 0, - 0, - imageData.width, - imageData.height, - w + 10 + ix + imageData.x, - iy + imageData.y, - w, - h); - maskImage.dispose(); - } - - /* If transparency was temporarily disabled, restore it. */ - if (transparentPixel != -1 && !transparent) { - imageData.transparentPixel = transparentPixel; - paintImage.dispose(); - } - } - - void paintPalette(PaintEvent event) { - GC gc = event.gc; - gc.fillRectangle(paletteCanvas.getClientArea()); - if (imageData.palette.isDirect) { - // For a direct palette, display the masks. - int y = py + 10; - int xTab = 50; - gc.drawString("rMsk", 10, y, true); - gc.drawString(toHex4ByteString(imageData.palette.redMask), xTab, y, true); - gc.drawString("gMsk", 10, y+=12, true); - gc.drawString(toHex4ByteString(imageData.palette.greenMask), xTab, y, true); - gc.drawString("bMsk", 10, y+=12, true); - gc.drawString(toHex4ByteString(imageData.palette.blueMask), xTab, y, true); - gc.drawString("rShf", 10, y+=12, true); - gc.drawString(Integer.toString(imageData.palette.redShift), xTab, y, true); - gc.drawString("gShf", 10, y+=12, true); - gc.drawString(Integer.toString(imageData.palette.greenShift), xTab, y, true); - gc.drawString("bShf", 10, y+=12, true); - gc.drawString(Integer.toString(imageData.palette.blueShift), xTab, y, true); - } else { - // For an indexed palette, display the palette colors and indices. - RGB[] rgbs = imageData.palette.getRGBs(); - if (rgbs != null) { - int xTab1 = 40, xTab2 = 100; - for (int i = 0; i < rgbs.length; i++) { - int y = (i+1) * 10 + py; - gc.drawString(String.valueOf(i), 10, y, true); - gc.drawString(toHexByteString(rgbs[i].red) + toHexByteString(rgbs[i].green) + toHexByteString(rgbs[i].blue), xTab1, y, true); - Color color = new Color(display, rgbs[i]); - gc.setBackground(color); - gc.fillRectangle(xTab2, y+2, 10, 10); - color.dispose(); - } - } - } - } - - void resizeShell(ControlEvent event) { - if (image == null || shell.isDisposed()) - return; - resizeScrollBars(); - } - - // Reset the scale combos to 1. - void resetScaleCombos() { - xscale = 1; yscale = 1; - scaleXCombo.select(scaleXCombo.indexOf("1")); - scaleYCombo.select(scaleYCombo.indexOf("1")); - } - - // Reset the scroll bars to 0. - void resetScrollBars() { - if (image == null) return; - ix = 0; iy = 0; py = 0; - resizeScrollBars(); - imageCanvas.getHorizontalBar().setSelection(0); - imageCanvas.getVerticalBar().setSelection(0); - paletteCanvas.getVerticalBar().setSelection(0); - } - - void resizeScrollBars() { - // Set the max and thumb for the image canvas scroll bars. - ScrollBar horizontal = imageCanvas.getHorizontalBar(); - ScrollBar vertical = imageCanvas.getVerticalBar(); - Rectangle canvasBounds = imageCanvas.getClientArea(); - int width = Math.round(imageData.width * xscale); - if (width > canvasBounds.width) { - // The image is wider than the canvas. - horizontal.setEnabled(true); - horizontal.setMaximum(width); - horizontal.setThumb(canvasBounds.width); - horizontal.setPageIncrement(canvasBounds.width); - } else { - // The canvas is wider than the image. - horizontal.setEnabled(false); - if (ix != 0) { - // Make sure the image is completely visible. - ix = 0; - imageCanvas.redraw(); - } - } - int height = Math.round(imageData.height * yscale); - if (height > canvasBounds.height) { - // The image is taller than the canvas. - vertical.setEnabled(true); - vertical.setMaximum(height); - vertical.setThumb(canvasBounds.height); - vertical.setPageIncrement(canvasBounds.height); - } else { - // The canvas is taller than the image. - vertical.setEnabled(false); - if (iy != 0) { - // Make sure the image is completely visible. - iy = 0; - imageCanvas.redraw(); - } - } - - // Set the max and thumb for the palette canvas scroll bar. - vertical = paletteCanvas.getVerticalBar(); - if (imageData.palette.isDirect) { - vertical.setEnabled(false); - } else { // indexed palette - canvasBounds = paletteCanvas.getClientArea(); - int paletteHeight = imageData.palette.getRGBs().length * 10 + 20; // 10 pixels each index + 20 for margins. - vertical.setEnabled(true); - vertical.setMaximum(paletteHeight); - vertical.setThumb(canvasBounds.height); - vertical.setPageIncrement(canvasBounds.height); - } - } - - /* - * Called when the image canvas' horizontal scrollbar is selected. - */ - void scrollHorizontally(ScrollBar scrollBar) { - if (image == null) return; - Rectangle canvasBounds = imageCanvas.getClientArea(); - int width = Math.round(imageData.width * xscale); - int height = Math.round(imageData.height * yscale); - if (width > canvasBounds.width) { - // Only scroll if the image is bigger than the canvas. - int x = -scrollBar.getSelection(); - if (x + width < canvasBounds.width) { - // Don't scroll past the end of the image. - x = canvasBounds.width - width; - } - imageCanvas.scroll(x, iy, ix, iy, width, height, false); - ix = x; - } - } - - /* - * Called when the image canvas' vertical scrollbar is selected. - */ - void scrollVertically(ScrollBar scrollBar) { - if (image == null) return; - Rectangle canvasBounds = imageCanvas.getClientArea(); - int width = Math.round(imageData.width * xscale); - int height = Math.round(imageData.height * yscale); - if (height > canvasBounds.height) { - // Only scroll if the image is bigger than the canvas. - int y = -scrollBar.getSelection(); - if (y + height < canvasBounds.height) { - // Don't scroll past the end of the image. - y = canvasBounds.height - height; - } - imageCanvas.scroll(ix, y, ix, iy, width, height, false); - iy = y; - } - } - - /* - * Called when the palette canvas' vertical scrollbar is selected. - */ - void scrollPalette(ScrollBar scrollBar) { - if (image == null) return; - Rectangle canvasBounds = paletteCanvas.getClientArea(); - int paletteHeight = imageData.palette.getRGBs().length * 10 + 20; - if (paletteHeight > canvasBounds.height) { - // Only scroll if the palette is bigger than the canvas. - int y = -scrollBar.getSelection(); - if (y + paletteHeight < canvasBounds.height) { - // Don't scroll past the end of the palette. - y = canvasBounds.height - paletteHeight; - } - paletteCanvas.scroll(0, y, 0, py, paletteWidth, paletteHeight, false); - py = y; - } - } - - /* - * Return a String containing a line-by-line dump of - * the data in the current imageData. The lineDelimiter - * parameter must be a string of length 1 or 2. - */ - String dataHexDump(String lineDelimiter) { - final int MAX_DUMP = 1024 * 1024; - if (image == null) return ""; - boolean truncated = false; - char[] dump = null; - byte[] alphas = imageData.alphaData; - try { - int length = imageData.height * (6 + 3 * imageData.bytesPerLine + lineDelimiter.length()); - if (alphas != null && alphas.length > 0) { - length += imageData.height * (6 + 3 * imageData.width + lineDelimiter.length()) + 6 + lineDelimiter.length(); - } - dump = new char[length]; - } catch (OutOfMemoryError e) { - /* Too much data to dump - truncate. */ - dump = new char[MAX_DUMP]; - truncated = true; - } - int index = 0; - try { - for (int i = 0; i < imageData.data.length; i++) { - if (i % imageData.bytesPerLine == 0) { - int line = i / imageData.bytesPerLine; - dump[index++] = Character.forDigit(line / 1000 % 10, 10); - dump[index++] = Character.forDigit(line / 100 % 10, 10); - dump[index++] = Character.forDigit(line / 10 % 10, 10); - dump[index++] = Character.forDigit(line % 10, 10); - dump[index++] = ':'; - dump[index++] = ' '; - } - byte b = imageData.data[i]; - dump[index++] = Character.forDigit((b & 0xF0) >> 4, 16); - dump[index++] = Character.forDigit(b & 0x0F, 16); - dump[index++] = ' '; - if ((i + 1) % imageData.bytesPerLine == 0) { - dump[index++] = lineDelimiter.charAt(0); - if (lineDelimiter.length() > 1) { - dump[index++] = lineDelimiter.charAt(1); - } - } - } - if (alphas != null && alphas.length > 0) { - dump[index++] = lineDelimiter.charAt(0); - if (lineDelimiter.length() > 1) { - dump[index++] = lineDelimiter.charAt(1); - } - System.arraycopy(new char[]{'A','l','p','h','a',':'}, 0, dump, index, 6); - index +=6; - dump[index++] = lineDelimiter.charAt(0); - if (lineDelimiter.length() > 1) { - dump[index++] = lineDelimiter.charAt(1); - } - for (int i = 0; i < alphas.length; i++) { - if (i % imageData.width == 0) { - int line = i / imageData.width; - dump[index++] = Character.forDigit(line / 1000 % 10, 10); - dump[index++] = Character.forDigit(line / 100 % 10, 10); - dump[index++] = Character.forDigit(line / 10 % 10, 10); - dump[index++] = Character.forDigit(line % 10, 10); - dump[index++] = ':'; - dump[index++] = ' '; - } - byte b = alphas[i]; - dump[index++] = Character.forDigit((b & 0xF0) >> 4, 16); - dump[index++] = Character.forDigit(b & 0x0F, 16); - dump[index++] = ' '; - if ((i + 1) % imageData.width == 0) { - dump[index++] = lineDelimiter.charAt(0); - if (lineDelimiter.length() > 1) { - dump[index++] = lineDelimiter.charAt(1); - } - } - } - } - } catch (IndexOutOfBoundsException e) {} - String result = ""; - try { - result = new String(dump); - } catch (OutOfMemoryError e) { - /* Too much data to display in the text widget - truncate. */ - result = new String(dump, 0, MAX_DUMP); - truncated = true; - } - if (truncated) result += "\n ...data dump truncated at " + MAX_DUMP + "bytes..."; - return result; - } - - /* - * Open an error dialog displaying the specified information. - */ - void showErrorDialog(String operation, String filename, Throwable e) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - String message = createMsg(bundle.getString("Error"), new String[] {operation, filename}); - String errorMessage = ""; - if (e != null) { - if (e instanceof SWTException) { - SWTException swte = (SWTException) e; - errorMessage = swte.getMessage(); - if (swte.throwable != null) { - errorMessage += ":\n" + swte.throwable.toString(); - } - } else if (e instanceof SWTError) { - SWTError swte = (SWTError) e; - errorMessage = swte.getMessage(); - if (swte.throwable != null) { - errorMessage += ":\n" + swte.throwable.toString(); - } - } else { - errorMessage = e.toString(); - } - } - box.setMessage(message + errorMessage); - box.open(); - } - - /* - * Open a dialog asking the user for more information on the type of BMP file to save. - */ - int showBMPDialog() { - final int [] bmpType = new int[1]; - bmpType[0] = SWT.IMAGE_BMP; - SelectionListener radioSelected = new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - Button radio = (Button) event.widget; - if (radio.getSelection()) bmpType[0] = ((Integer)radio.getData()).intValue(); - } - }; - // need to externalize strings - final Shell dialog = new Shell(shell, SWT.DIALOG_TRIM); - - dialog.setText(bundle.getString("Save_as_type")); - dialog.setLayout(new GridLayout()); - - Label label = new Label(dialog, SWT.NONE); - label.setText(bundle.getString("Save_as_type_label")); - - Button radio = new Button(dialog, SWT.RADIO); - radio.setText(bundle.getString("Save_as_type_no_compress")); - radio.setSelection(true); - radio.setData(new Integer(SWT.IMAGE_BMP)); - radio.addSelectionListener(radioSelected); - - radio = new Button(dialog, SWT.RADIO); - radio.setText(bundle.getString("Save_as_type_rle_compress")); - radio.setData(new Integer(SWT.IMAGE_BMP_RLE)); - radio.addSelectionListener(radioSelected); - - radio = new Button(dialog, SWT.RADIO); - radio.setText(bundle.getString("Save_as_type_os2")); - radio.setData(new Integer(SWT.IMAGE_OS2_BMP)); - radio.addSelectionListener(radioSelected); - - label = new Label(dialog, SWT.SEPARATOR | SWT.HORIZONTAL); - label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Button ok = new Button(dialog, SWT.PUSH); - ok.setText(bundle.getString("OK")); - GridData data = new GridData(); - data.horizontalAlignment = SWT.CENTER; - data.widthHint = 75; - ok.setLayoutData(data); - ok.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - dialog.close(); - } - }); - - dialog.pack(); - dialog.open(); - while (!dialog.isDisposed()) { - if (!display.readAndDispatch()) display.sleep(); - } - return bmpType[0]; - } - - /* - * Return a String describing how to analyze the bytes - * in the hex dump. - */ - static String depthInfo(int depth) { - Object[] args = {new Integer(depth), ""}; - switch (depth) { - case 1: - args[1] = createMsg(bundle.getString("Multi_pixels"), - new Object[] {new Integer(8), " [01234567]"}); - break; - case 2: - args[1] = createMsg(bundle.getString("Multi_pixels"), - new Object[] {new Integer(4), "[00112233]"}); - break; - case 4: - args[1] = createMsg(bundle.getString("Multi_pixels"), - new Object[] {new Integer(2), "[00001111]"}); - break; - case 8: - args[1] = bundle.getString("One_byte"); - break; - case 16: - args[1] = createMsg(bundle.getString("Multi_bytes"), new Integer(2)); - break; - case 24: - args[1] = createMsg(bundle.getString("Multi_bytes"), new Integer(3)); - break; - case 32: - args[1] = createMsg(bundle.getString("Multi_bytes"), new Integer(4)); - break; - default: - args[1] = bundle.getString("Unsupported_lc"); - } - return createMsg(bundle.getString("Depth_info"), args); - } - - /* - * Return the specified number of milliseconds. - * If the specified number of milliseconds is too small - * to see a visual change, then return a higher number. - */ - static int visibleDelay(int ms) { - if (ms < 20) return ms + 30; - if (ms < 30) return ms + 10; - return ms; - } - - /* - * Return the specified byte value as a hex string, - * preserving leading 0's. - */ - static String toHexByteString(int i) { - if (i <= 0x0f) - return "0" + Integer.toHexString(i); - return Integer.toHexString(i & 0xff); - } - - /* - * Return the specified 4-byte value as a hex string, - * preserving leading 0's. - * (a bit 'brute force'... should probably use a loop...) - */ - static String toHex4ByteString(int i) { - String hex = Integer.toHexString(i); - if (hex.length() == 1) - return "0000000" + hex; - if (hex.length() == 2) - return "000000" + hex; - if (hex.length() == 3) - return "00000" + hex; - if (hex.length() == 4) - return "0000" + hex; - if (hex.length() == 5) - return "000" + hex; - if (hex.length() == 6) - return "00" + hex; - if (hex.length() == 7) - return "0" + hex; - return hex; - } - - /* - * Return a String describing the specified - * transparent or background pixel. - */ - static String pixelInfo(int pixel) { - if (pixel == -1) { - return pixel + " (" + bundle.getString("None_lc") + ")"; - } - return pixel + " (0x" + Integer.toHexString(pixel) + ")"; - } - - /* - * Return a String describing the specified disposal method. - */ - static String disposalString(int disposalMethod) { - switch (disposalMethod) { - case SWT.DM_FILL_NONE: return bundle.getString("None_lc"); - case SWT.DM_FILL_BACKGROUND: return bundle.getString("Background_lc"); - case SWT.DM_FILL_PREVIOUS: return bundle.getString("Previous_lc"); - } - return bundle.getString("Unspecified_lc"); - } - - /* - * Return a String describing the specified image file type. - */ - String fileTypeString(int filetype) { - if (filetype == SWT.IMAGE_BMP) - return "BMP"; - if (filetype == SWT.IMAGE_BMP_RLE) - return "RLE" + imageData.depth + " BMP"; - if (filetype == SWT.IMAGE_OS2_BMP) - return "OS/2 BMP"; - if (filetype == SWT.IMAGE_GIF) - return "GIF"; - if (filetype == SWT.IMAGE_ICO) - return "ICO"; - if (filetype == SWT.IMAGE_JPEG) - return "JPEG"; - if (filetype == SWT.IMAGE_PNG) - return "PNG"; - if (filetype == SWT.IMAGE_TIFF) - return "TIFF"; - return bundle.getString("Unknown_ac"); - } - - /* - * Return the specified file's image type, based on its extension. - * Note that this is not a very robust way to determine image type, - * and it is only to be used in the absence of any better method. - */ - int determineFileType(String filename) { - String ext = filename.substring(filename.lastIndexOf('.') + 1); - if (ext.equalsIgnoreCase("bmp")) { - return showBMPDialog(); - } - if (ext.equalsIgnoreCase("gif")) - return SWT.IMAGE_GIF; - if (ext.equalsIgnoreCase("ico")) - return SWT.IMAGE_ICO; - if (ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg") || ext.equalsIgnoreCase("jfif")) - return SWT.IMAGE_JPEG; - if (ext.equalsIgnoreCase("png")) - return SWT.IMAGE_PNG; - if (ext.equalsIgnoreCase("tif") || ext.equalsIgnoreCase("tiff")) - return SWT.IMAGE_TIFF; - return SWT.IMAGE_UNDEFINED; - } - - static String createMsg(String msg, Object[] args) { - MessageFormat formatter = new MessageFormat(msg); - return formatter.format(args); - } - - static String createMsg(String msg, Object arg) { - MessageFormat formatter = new MessageFormat(msg); - return formatter.format(new Object[]{arg}); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/javaviewer/JavaLineStyler.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/javaviewer/JavaLineStyler.java deleted file mode 100755 index a48e850977..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/javaviewer/JavaLineStyler.java +++ /dev/null @@ -1,377 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.javaviewer; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import java.util.*; -import java.io.*; - -class JavaLineStyler implements LineStyleListener { - JavaScanner scanner = new JavaScanner(); - int[] tokenColors; - Color[] colors; - Vector blockComments = new Vector(); - - public static final int EOF= -1; - public static final int EOL= 10; - - public static final int WORD= 0; - public static final int WHITE= 1; - public static final int KEY= 2; - public static final int COMMENT= 3; - public static final int STRING= 5; - public static final int OTHER= 6; - public static final int NUMBER= 7; - - public static final int MAXIMUM_TOKEN= 8; - -public JavaLineStyler() { - initializeColors(); - scanner = new JavaScanner(); -} - -Color getColor(int type) { - if (type < 0 || type >= tokenColors.length) { - return null; - } - return colors[tokenColors[type]]; -} - -boolean inBlockComment(int start, int end) { - for (int i=0; i<blockComments.size(); i++) { - int[] offsets = (int[])blockComments.elementAt(i); - // start of comment in the line - if ((offsets[0] >= start) && (offsets[0] <= end)) return true; - // end of comment in the line - if ((offsets[1] >= start) && (offsets[1] <= end)) return true; - if ((offsets[0] <= start) && (offsets[1] >= end)) return true; - } - return false; -} - -void initializeColors() { - Display display = Display.getDefault(); - colors= new Color[] { - new Color(display, new RGB(0, 0, 0)), // black - new Color(display, new RGB(255, 0, 0)), // red - new Color(display, new RGB(0, 255, 0)), // green - new Color(display, new RGB(0, 0, 255)) // blue - }; - tokenColors= new int[MAXIMUM_TOKEN]; - tokenColors[WORD]= 0; - tokenColors[WHITE]= 0; - tokenColors[KEY]= 3; - tokenColors[COMMENT]= 1; - tokenColors[STRING]= 2; - tokenColors[OTHER]= 0; - tokenColors[NUMBER]= 0; -} - -void disposeColors() { - for (int i=0;i<colors.length;i++) { - colors[i].dispose(); - } -} - -/** - * Event.detail line start offset (input) - * Event.text line text (input) - * LineStyleEvent.styles Enumeration of StyleRanges, need to be in order. (output) - * LineStyleEvent.background line background color (output) - */ -public void lineGetStyle(LineStyleEvent event) { - Vector styles = new Vector(); - int token; - StyleRange lastStyle; - // If the line is part of a block comment, create one style for the entire line. - if (inBlockComment(event.lineOffset, event.lineOffset + event.lineText.length())) { - styles.addElement(new StyleRange(event.lineOffset, event.lineText.length(), getColor(COMMENT), null)); - event.styles = new StyleRange[styles.size()]; - styles.copyInto(event.styles); - return; - } - Color defaultFgColor = ((Control)event.widget).getForeground(); - scanner.setRange(event.lineText); - token = scanner.nextToken(); - while (token != EOF) { - if (token == OTHER) { - // do nothing for non-colored tokens - } else if (token != WHITE) { - Color color = getColor(token); - // Only create a style if the token color is different than the - // widget's default foreground color and the token's style is not - // bold. Keywords are bolded. - if ((!color.equals(defaultFgColor)) || (token == KEY)) { - StyleRange style = new StyleRange(scanner.getStartOffset() + event.lineOffset, scanner.getLength(), color, null); - if (token == KEY) { - style.fontStyle = SWT.BOLD; - } - if (styles.isEmpty()) { - styles.addElement(style); - } else { - // Merge similar styles. Doing so will improve performance. - lastStyle = (StyleRange)styles.lastElement(); - if (lastStyle.similarTo(style) && (lastStyle.start + lastStyle.length == style.start)) { - lastStyle.length += style.length; - } else { - styles.addElement(style); - } - } - } - } else if ((!styles.isEmpty()) && ((lastStyle=(StyleRange)styles.lastElement()).fontStyle == SWT.BOLD)) { - int start = scanner.getStartOffset() + event.lineOffset; - lastStyle = (StyleRange)styles.lastElement(); - // A font style of SWT.BOLD implies that the last style - // represents a java keyword. - if (lastStyle.start + lastStyle.length == start) { - // Have the white space take on the style before it to - // minimize the number of style ranges created and the - // number of font style changes during rendering. - lastStyle.length += scanner.getLength(); - } - } - token= scanner.nextToken(); - } - event.styles = new StyleRange[styles.size()]; - styles.copyInto(event.styles); -} -public void parseBlockComments(String text) { - blockComments = new Vector(); - StringReader buffer = new StringReader(text); - int ch; - boolean blkComment = false; - int cnt = 0; - int[] offsets = new int[2]; - boolean done = false; - - try { - while (!done) { - switch (ch = buffer.read()) { - case -1 : { - if (blkComment) { - offsets[1] = cnt; - blockComments.addElement(offsets); - } - done = true; - break; - } - case '/' : { - ch = buffer.read(); - if ((ch == '*') && (!blkComment)) { - offsets = new int[2]; - offsets[0] = cnt; - blkComment = true; - cnt++; - } else { - cnt++; - } - cnt++; - break; - } - case '*' : { - if (blkComment) { - ch = buffer.read(); - cnt++; - if (ch == '/') { - blkComment = false; - offsets[1] = cnt; - blockComments.addElement(offsets); - } - } - cnt++; - break; - } - default : { - cnt++; - break; - } - } - } - } catch(IOException e) { - // ignore errors - } -} - -/** - * A simple fuzzy scanner for Java - */ -public class JavaScanner { - - protected Hashtable fgKeys= null; - protected StringBuffer fBuffer= new StringBuffer(); - protected String fDoc; - protected int fPos; - protected int fEnd; - protected int fStartToken; - protected boolean fEofSeen= false; - - private String[] fgKeywords= { - "abstract", - "boolean", "break", "byte", - "case", "catch", "char", "class", "continue", - "default", "do", "double", - "else", "extends", - "false", "final", "finally", "float", "for", - "if", "implements", "import", "instanceof", "int", "interface", - "long", - "native", "new", "null", - "package", "private", "protected", "public", - "return", - "short", "static", "super", "switch", "synchronized", - "this", "throw", "throws", "transient", "true", "try", - "void", "volatile", - "while" - }; - - public JavaScanner() { - initialize(); - } - - /** - * Returns the ending location of the current token in the document. - */ - public final int getLength() { - return fPos - fStartToken; - } - - /** - * Initialize the lookup table. - */ - void initialize() { - fgKeys= new Hashtable(); - Integer k= new Integer(KEY); - for (int i= 0; i < fgKeywords.length; i++) - fgKeys.put(fgKeywords[i], k); - } - - /** - * Returns the starting location of the current token in the document. - */ - public final int getStartOffset() { - return fStartToken; - } - - /** - * Returns the next lexical token in the document. - */ - public int nextToken() { - int c; - fStartToken= fPos; - while (true) { - switch (c= read()) { - case EOF: - return EOF; - case '/': // comment - c= read(); - if (c == '/') { - while (true) { - c= read(); - if ((c == EOF) || (c == EOL)) { - unread(c); - return COMMENT; - } - } - } - unread(c); - return OTHER; - case '\'': // char const - while(true) { - c= read(); - switch (c) { - case '\'': - return STRING; - case EOF: - unread(c); - return STRING; - case '\\': - c= read(); - break; - } - } - - case '"': // string - while(true) { - c= read(); - switch (c) { - case '"': - return STRING; - case EOF: - unread(c); - return STRING; - case '\\': - c= read(); - break; - } - } - - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - do { - c= read(); - } while(Character.isDigit((char)c)); - unread(c); - return NUMBER; - default: - if (Character.isWhitespace((char)c)) { - do { - c= read(); - } while(Character.isWhitespace((char)c)); - unread(c); - return WHITE; - } - if (Character.isJavaIdentifierStart((char)c)) { - fBuffer.setLength(0); - do { - fBuffer.append((char)c); - c= read(); - } while(Character.isJavaIdentifierPart((char)c)); - unread(c); - Integer i= (Integer) fgKeys.get(fBuffer.toString()); - if (i != null) - return i.intValue(); - return WORD; - } - return OTHER; - } - } - } - - /** - * Returns next character. - */ - protected int read() { - if (fPos <= fEnd) { - return fDoc.charAt(fPos++); - } - return EOF; - } - - public void setRange(String text) { - fDoc= text; - fPos= 0; - fEnd= fDoc.length() -1; - } - - protected void unread(int c) { - if (c != EOF) - fPos--; - } -} - - - - - -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/javaviewer/JavaViewer.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/javaviewer/JavaViewer.java deleted file mode 100755 index c31f57b8e3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/javaviewer/JavaViewer.java +++ /dev/null @@ -1,184 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.javaviewer; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import java.util.*; -import java.io.*; -import java.text.*; - -/** - */ -public class JavaViewer { - Shell shell; - StyledText text; - JavaLineStyler lineStyler = new JavaLineStyler(); - FileDialog fileDialog; - static ResourceBundle resources = ResourceBundle.getBundle("examples_javaviewer"); - -Menu createFileMenu() { - Menu bar = shell.getMenuBar (); - Menu menu = new Menu (bar); - MenuItem item; - - // Open - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Open_menuitem")); - item.setAccelerator(SWT.MOD1 + 'O'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - openFile(); - } - }); - - // Exit - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Exit_menuitem")); - item.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - menuFileExit (); - } - }); - return menu; -} - -void createMenuBar () { - Menu bar = new Menu (shell, SWT.BAR); - shell.setMenuBar (bar); - - MenuItem fileItem = new MenuItem (bar, SWT.CASCADE); - fileItem.setText (resources.getString("File_menuitem")); - fileItem.setMenu (createFileMenu ()); - -} - -void createShell (Display display) { - shell = new Shell (display); - shell.setText (resources.getString("Window_title")); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - shell.setLayout(layout); - shell.addShellListener (new ShellAdapter () { - public void shellClosed (ShellEvent e) { - lineStyler.disposeColors(); - text.removeLineStyleListener(lineStyler); - } - }); -} -void createStyledText() { - text = new StyledText (shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - GridData spec = new GridData(); - spec.horizontalAlignment = GridData.FILL; - spec.grabExcessHorizontalSpace = true; - spec.verticalAlignment = GridData.FILL; - spec.grabExcessVerticalSpace = true; - text.setLayoutData(spec); - text.addLineStyleListener(lineStyler); - text.setEditable(false); - Color bg = Display.getDefault().getSystemColor(SWT.COLOR_GRAY); - text.setBackground(bg); -} - -void displayError(String msg) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage(msg); - box.open(); -} - -public static void main (String [] args) { - Display display = new Display(); - JavaViewer example = new JavaViewer (); - Shell shell = example.open (display); - while (!shell.isDisposed ()) - if (!display.readAndDispatch ()) display.sleep (); - display.dispose (); -} - -public Shell open (Display display) { - createShell (display); - createMenuBar (); - createStyledText (); - shell.setSize(500, 400); - shell.open (); - return shell; -} - -void openFile() { - if (fileDialog == null) { - fileDialog = new FileDialog(shell, SWT.OPEN); - } - - fileDialog.setFilterExtensions(new String[] {"*.java", "*.*"}); - String name = fileDialog.open(); - - open(name); -} - -void open(String name) { - final String textString; - - if ((name == null) || (name.length() == 0)) return; - - File file = new File(name); - if (!file.exists()) { - String message = MessageFormat.format(resources.getString("Err_file_no_exist"), new String[] {file.getName()}); - displayError(message); - return; - } - - try { - FileInputStream stream= new FileInputStream(file.getPath()); - try { - Reader in = new BufferedReader(new InputStreamReader(stream)); - char[] readBuffer= new char[2048]; - StringBuffer buffer= new StringBuffer((int) file.length()); - int n; - while ((n = in.read(readBuffer)) > 0) { - buffer.append(readBuffer, 0, n); - } - textString = buffer.toString(); - stream.close(); - } - catch (IOException e) { - // Err_file_io - String message = MessageFormat.format(resources.getString("Err_file_io"), new String[] {file.getName()}); - displayError(message); - return; - } - } - catch (FileNotFoundException e) { - String message = MessageFormat.format(resources.getString("Err_not_found"), new String[] {file.getName()}); - displayError(message); - return; - } - // Guard against superfluous mouse move events -- defer action until later - Display display = text.getDisplay(); - display.asyncExec(new Runnable() { - public void run() { - text.setText(textString); - } - }); - - // parse the block comments up front since block comments can go across - // lines - inefficient way of doing this - lineStyler.parseBlockComments(textString); -} - -void menuFileExit () { - shell.close (); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/FillLayoutTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/FillLayoutTab.java deleted file mode 100644 index bbcc4f384b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/FillLayoutTab.java +++ /dev/null @@ -1,222 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class FillLayoutTab extends Tab { - /* Controls for setting layout parameters */ - Button horizontal, vertical; - Spinner marginWidth, marginHeight, spacing; - /* The example layout instance */ - FillLayout fillLayout; - /* TableEditors and related controls*/ - TableEditor comboEditor, nameEditor; - CCombo combo; - Text nameText; - final int NAME_COL = 0; - final int TOTAL_COLS = 2; - - /** - * Creates the Tab within a given instance of LayoutExample. - */ - FillLayoutTab(LayoutExample instance) { - super(instance); - } - - /** - * Creates the widgets in the "child" group. - */ - void createChildWidgets () { - /* Add common controls */ - super.createChildWidgets (); - - /* Add TableEditors */ - comboEditor = new TableEditor (table); - nameEditor = new TableEditor (table); - table.addMouseListener(new MouseAdapter() { - public void mouseDown(MouseEvent e) { - resetEditors (); - index = table.getSelectionIndex (); - if (index == -1) return; - TableItem oldItem = comboEditor.getItem (); - newItem = table.getItem (index); - if (newItem == oldItem || newItem != lastSelected) { - lastSelected = newItem; - return; - } - table.showSelection (); - - combo = new CCombo (table, SWT.READ_ONLY); - createComboEditor (combo, comboEditor); - - nameText = new Text(table, SWT.SINGLE); - nameText.setText(((String[])data.elementAt(index))[NAME_COL]); - createTextEditor(nameText, nameEditor, NAME_COL); - } - }); - } - - /** - * Creates the control widgets. - */ - void createControlWidgets () { - /* Controls the type of FillLayout */ - Group typeGroup = new Group (controlGroup, SWT.NONE); - typeGroup.setText (LayoutExample.getResourceString ("Type")); - typeGroup.setLayout (new GridLayout ()); - typeGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, false)); - horizontal = new Button (typeGroup, SWT.RADIO); - horizontal.setText ("SWT.HORIZONTAL"); - horizontal.setLayoutData(new GridData (SWT.FILL, SWT.CENTER, true, false)); - horizontal.setSelection(true); - horizontal.addSelectionListener (selectionListener); - vertical = new Button (typeGroup, SWT.RADIO); - vertical.setText ("SWT.VERTICAL"); - vertical.setLayoutData(new GridData (SWT.FILL, SWT.CENTER, true, false)); - vertical.addSelectionListener (selectionListener); - - /* Controls the margins and spacing of the FillLayout */ - Group marginGroup = new Group(controlGroup, SWT.NONE); - marginGroup.setText (LayoutExample.getResourceString("Margins_Spacing")); - marginGroup.setLayout(new GridLayout(2, false)); - marginGroup.setLayoutData (new GridData(SWT.FILL, SWT.CENTER, false, false)); - new Label(marginGroup, SWT.NONE).setText("marginWidth"); - marginWidth = new Spinner(marginGroup, SWT.BORDER); - marginWidth.setSelection(0); - marginWidth.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginHeight"); - marginHeight = new Spinner(marginGroup, SWT.BORDER); - marginHeight.setSelection(0); - marginHeight.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); - marginHeight.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText ("spacing"); - spacing = new Spinner(marginGroup, SWT.BORDER); - spacing.setSelection(0); - spacing.addSelectionListener(selectionListener); - - /* Add common controls */ - super.createControlWidgets (); - } - - /** - * Creates the example layout. - */ - void createLayout () { - fillLayout = new FillLayout (); - layoutComposite.setLayout (fillLayout); - } - - /** - * Disposes the editors without placing their contents - * into the table. - */ - void disposeEditors () { - comboEditor.setEditor (null, null, -1); - combo.dispose (); - nameText.dispose(); - } - - - /** - * Generates code for the example layout. - */ - StringBuffer generateLayoutCode () { - StringBuffer code = new StringBuffer (); - code.append ("\t\tFillLayout fillLayout = new FillLayout ();\n"); - if (fillLayout.type == SWT.VERTICAL) { - code.append ("\t\tfillLayout.type = SWT.VERTICAL;\n"); - } - if (fillLayout.marginWidth != 0) { - code.append("\t\tfillLayout.marginWidth = " + fillLayout.marginWidth + ";\n"); - } - if (fillLayout.marginHeight != 0) { - code.append("\t\tfillLayout.marginHeight = " + fillLayout.marginHeight + ";\n"); - } - if (fillLayout.spacing != 0) { - code.append("\t\tfillLayout.spacing = " + fillLayout.spacing + ";\n"); - } - code.append("\t\tshell.setLayout (fillLayout);\n"); - for(int i = 0; i < children.length; i++) { - Control control = children[i]; - code.append(getChildCode(control, i)); - } - return code; - } - - /** - * Returns the string to insert when a new child control is added to the table. - */ - String[] getInsertString (String name, String controlType) { - return new String [] {name, controlType}; - } - - /** - * Returns the layout data field names. - */ - String [] getLayoutDataFieldNames() { - return new String [] { "Control Name", "Control Type" }; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "FillLayout"; - } - - /** - * Takes information from TableEditors and stores it. - */ - void resetEditors (boolean tab) { - TableItem oldItem = comboEditor.getItem (); - comboEditor.setEditor (null, null, -1); - if (oldItem != null) { - int row = table.indexOf (oldItem); - try { - new String (nameText.getText ()); - } catch (NumberFormatException e) { - nameText.setText (oldItem.getText (NAME_COL)); - } - String [] insert = new String [] {nameText.getText (), combo.getText ()}; - data.setElementAt (insert, row); - for (int i = 0 ; i < TOTAL_COLS; i++) { - oldItem.setText (i, ((String [])data.elementAt (row)) [i]); - } - if (!tab) disposeEditors (); - } - setLayoutState (); - refreshLayoutComposite (); - layoutComposite.layout (true); - layoutGroup.layout (true); - } - - /** - * Sets the state of the layout. - */ - void setLayoutState () { - if (vertical.getSelection()) { - fillLayout.type = SWT.VERTICAL; - } else { - fillLayout.type = SWT.HORIZONTAL; - } - - /* Set the margins and spacing */ - fillLayout.marginWidth = marginWidth.getSelection(); - fillLayout.marginHeight = marginHeight.getSelection(); - fillLayout.spacing = spacing.getSelection(); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/FormLayoutTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/FormLayoutTab.java deleted file mode 100644 index bea0cbc896..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/FormLayoutTab.java +++ /dev/null @@ -1,774 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.custom.*; - -class FormLayoutTab extends Tab { - /* Controls for setting layout parameters */ - Spinner marginWidth, marginHeight, marginLeft, marginRight, marginTop, marginBottom, spacing; - /* The example layout instance */ - FormLayout formLayout; - /* TableEditors and related controls*/ - TableEditor nameEditor, comboEditor, widthEditor, heightEditor; - TableEditor leftEditor, rightEditor, topEditor, bottomEditor; - CCombo combo; - Text nameText, widthText, heightText; - Button leftAttach, rightAttach, topAttach, bottomAttach; - - /* Constants */ - final int NAME_COL = 0; - final int COMBO_COL = 1; - final int WIDTH_COL = 2; - final int HEIGHT_COL = 3; - final int LEFT_COL = 4; - final int RIGHT_COL = 5; - final int TOP_COL = 6; - final int BOTTOM_COL = 7; - - final int MODIFY_COLS = 4; // The number of columns with combo or text editors - final int TOTAL_COLS = 8; - - /** - * Creates the Tab within a given instance of LayoutExample. - */ - FormLayoutTab(LayoutExample instance) { - super(instance); - } - - /** - * Returns the constant for the alignment for an - * attachment given a string. - */ - int alignmentConstant (String align) { - if (align.equals("LEFT")) return SWT.LEFT; - if (align.equals("RIGHT")) return SWT.RIGHT; - if (align.equals("TOP")) return SWT.TOP; - if (align.equals("BOTTOM")) return SWT.BOTTOM; - if (align.equals("CENTER")) return SWT.CENTER; - return SWT.DEFAULT; - } - - /** - * Returns a string representing the alignment for an - * attachment given a constant. - */ - String alignmentString (int align) { - switch (align) { - case SWT.LEFT: return "LEFT"; - case SWT.RIGHT: return "RIGHT"; - case SWT.TOP: return "TOP"; - case SWT.BOTTOM: return "BOTTOM"; - case SWT.CENTER: return "CENTER"; - } - return "DEFAULT"; - } - - /** - * Update the attachment field in case the type of control - * has changed. - */ - String checkAttachment (String oldAttach, FormAttachment newAttach) { - String controlClass = newAttach.control.getClass().toString (); - String controlType = controlClass.substring (controlClass.lastIndexOf ('.') + 1); - int i = 0; - while (i < oldAttach.length () && !Character.isDigit(oldAttach.charAt (i))) { - i++; - } - String index = oldAttach.substring (i, oldAttach.indexOf (',')); - return controlType + index + "," + newAttach.offset + ":" + alignmentString (newAttach.alignment); - } - - /** - * Creates the widgets in the "child" group. - */ - void createChildWidgets () { - /* Add common controls */ - super.createChildWidgets (); - - /* Resize the columns */ - table.getColumn (LEFT_COL).setWidth (90); - table.getColumn (RIGHT_COL).setWidth (90); - table.getColumn (TOP_COL).setWidth (90); - table.getColumn (BOTTOM_COL).setWidth (90); - - /* Add TableEditors */ - nameEditor = new TableEditor (table); - comboEditor = new TableEditor (table); - widthEditor = new TableEditor (table); - heightEditor = new TableEditor (table); - leftEditor = new TableEditor (table); - rightEditor = new TableEditor (table); - topEditor = new TableEditor (table); - bottomEditor = new TableEditor (table); - table.addMouseListener (new MouseAdapter () { - public void mouseDown(MouseEvent e) { - resetEditors(); - index = table.getSelectionIndex (); - Point pt = new Point (e.x, e.y); - newItem = table.getItem (pt); - if (newItem == null) return; - TableItem oldItem = comboEditor.getItem (); - if (newItem == oldItem || newItem != lastSelected) { - lastSelected = newItem; - return; - } - table.showSelection (); - - combo = new CCombo (table, SWT.READ_ONLY); - createComboEditor (combo, comboEditor); - - nameText = new Text (table, SWT.SINGLE); - nameText.setText (((String[])data.elementAt(index))[NAME_COL]); - createTextEditor(nameText, nameEditor, NAME_COL); - - widthText = new Text (table, SWT.SINGLE); - widthText.setText (((String [])data.elementAt (index)) [WIDTH_COL]); - createTextEditor (widthText, widthEditor, WIDTH_COL); - - heightText = new Text (table, SWT.SINGLE); - heightText.setText (((String [])data.elementAt (index)) [HEIGHT_COL]); - createTextEditor (heightText, heightEditor, HEIGHT_COL); - - leftAttach = new Button (table, SWT.PUSH); - leftAttach.setText (LayoutExample.getResourceString ("Attach_Edit")); - leftEditor.horizontalAlignment = SWT.LEFT; - leftEditor.grabHorizontal = true; - leftEditor.minimumWidth = leftAttach.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - leftEditor.setEditor (leftAttach, newItem, LEFT_COL); - leftAttach.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - Shell shell = tabFolderPage.getShell (); - AttachDialog dialog = new AttachDialog (shell); - dialog.setText (LayoutExample.getResourceString ("Left_Attachment")); - dialog.setColumn (LEFT_COL); - String attach = dialog.open (); - newItem.setText (LEFT_COL, attach); - resetEditors (); - } - }); - - rightAttach = new Button (table, SWT.PUSH); - rightAttach.setText (LayoutExample.getResourceString ("Attach_Edit")); - rightEditor.horizontalAlignment = SWT.LEFT; - rightEditor.grabHorizontal = true; - rightEditor.minimumWidth = rightAttach.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - rightEditor.setEditor (rightAttach, newItem, RIGHT_COL); - rightAttach.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - Shell shell = tabFolderPage.getShell (); - AttachDialog dialog = new AttachDialog (shell); - dialog.setText (LayoutExample.getResourceString ("Right_Attachment")); - dialog.setColumn (RIGHT_COL); - String attach = dialog.open (); - newItem.setText (RIGHT_COL, attach); - if (newItem.getText (LEFT_COL).endsWith (")")) newItem.setText (LEFT_COL, ""); - resetEditors (); - } - }); - - topAttach = new Button (table, SWT.PUSH); - topAttach.setText (LayoutExample.getResourceString ("Attach_Edit")); - topEditor.horizontalAlignment = SWT.LEFT; - topEditor.grabHorizontal = true; - topEditor.minimumWidth = topAttach.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - topEditor.setEditor (topAttach, newItem, TOP_COL); - topAttach.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - Shell shell = tabFolderPage.getShell (); - AttachDialog dialog = new AttachDialog (shell); - dialog.setText (LayoutExample.getResourceString ("Top_Attachment")); - dialog.setColumn (TOP_COL); - String attach = dialog.open (); - newItem.setText (TOP_COL, attach); - resetEditors (); - } - }); - bottomAttach = new Button (table, SWT.PUSH); - bottomAttach.setText (LayoutExample.getResourceString ("Attach_Edit")); - bottomEditor.horizontalAlignment = SWT.LEFT; - bottomEditor.grabHorizontal = true; - bottomEditor.minimumWidth = bottomAttach.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - bottomEditor.setEditor (bottomAttach, newItem, BOTTOM_COL); - bottomAttach.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - Shell shell = tabFolderPage.getShell (); - AttachDialog dialog = new AttachDialog (shell); - dialog.setText (LayoutExample.getResourceString ("Bottom_Attachment")); - dialog.setColumn (BOTTOM_COL); - String attach = dialog.open (); - newItem.setText (BOTTOM_COL, attach); - if (newItem.getText (TOP_COL).endsWith (")")) newItem.setText (TOP_COL, ""); - resetEditors (); - } - }); - - for (int i=0; i<table.getColumnCount (); i++) { - Rectangle rect = newItem.getBounds (i); - if (rect.contains (pt)) { - switch (i) { - case 0: - resetEditors (); - break; - case COMBO_COL : - combo.setFocus (); - break; - case WIDTH_COL : - widthText.setFocus (); - break; - case HEIGHT_COL : - heightText.setFocus (); - break; - default : - break; - } - } - } - } - }); - } - - /** - * Creates the control widgets. - */ - void createControlWidgets () { - /* Controls the margins and spacing of the FormLayout */ - Group marginGroup = new Group (controlGroup, SWT.NONE); - marginGroup.setText (LayoutExample.getResourceString ("Margins_Spacing")); - marginGroup.setLayout(new GridLayout (2, false)); - marginGroup.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); - new Label (marginGroup, SWT.NONE).setText ("marginWidth"); - marginWidth = new Spinner(marginGroup, SWT.BORDER); - marginWidth.setSelection(0); - marginWidth.addSelectionListener(selectionListener); - new Label (marginGroup, SWT.NONE).setText("marginHeight"); - marginHeight = new Spinner(marginGroup, SWT.BORDER); - marginHeight.setSelection(0); - marginHeight.addSelectionListener (selectionListener); - new Label (marginGroup, SWT.NONE).setText("marginLeft"); - marginLeft = new Spinner(marginGroup, SWT.BORDER); - marginLeft.setSelection(0); - marginLeft.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginRight"); - marginRight = new Spinner(marginGroup, SWT.BORDER); - marginRight.setSelection(0); - marginRight.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginTop"); - marginTop = new Spinner(marginGroup, SWT.BORDER); - marginTop.setSelection(0); - marginTop.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginBottom"); - marginBottom = new Spinner(marginGroup, SWT.BORDER); - marginBottom.setSelection(0); - marginBottom.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText ("spacing"); - spacing = new Spinner(marginGroup, SWT.BORDER); - spacing.setSelection(0); - spacing.addSelectionListener(selectionListener); - - /* Add common controls */ - super.createControlWidgets (); - } - - /** - * Creates the example layout. - */ - void createLayout () { - formLayout = new FormLayout (); - layoutComposite.setLayout (formLayout); - } - - /** - * Disposes the editors without placing their contents - * into the table. - */ - void disposeEditors () { - comboEditor.setEditor (null, null, -1); - combo.dispose (); - nameText.dispose (); - widthText.dispose (); - heightText.dispose (); - leftAttach.dispose (); - rightAttach.dispose (); - topAttach.dispose (); - bottomAttach.dispose (); - } - - /** - * Generates code for the example layout. - */ - StringBuffer generateLayoutCode () { - StringBuffer code = new StringBuffer (); - code.append ("\t\tFormLayout formLayout = new FormLayout ();\n"); - if (formLayout.marginWidth != 0) { - code.append ("\t\tformLayout.marginWidth = " + formLayout.marginWidth + ";\n"); - } - if (formLayout.marginHeight != 0) { - code.append ("\t\tformLayout.marginHeight = " + formLayout.marginHeight + ";\n"); - } - if(formLayout.marginLeft != 0) { - code.append ("\t\tformLayout.marginLeft = " + formLayout.marginLeft + ";\n"); - } - if(formLayout.marginRight != 0) { - code.append ("\t\tformLayout.marginRight = " + formLayout.marginRight + ";\n"); - } - if(formLayout.marginTop != 0) { - code.append ("\t\tformLayout.marginTop = " + formLayout.marginTop + ";\n"); - } - if(formLayout.marginBottom != 0) { - code.append ("\t\tformLayout.marginBottom = " + formLayout.marginBottom + ";\n"); - } - if (formLayout.spacing != 0) { - code.append ("\t\tformLayout.spacing = " + formLayout.spacing + ";\n"); - } - code.append ("\t\tshell.setLayout (formLayout);\n"); - - boolean first = true; - for (int i = 0; i < children.length; i++) { - Control control = children [i]; - code.append (getChildCode (control, i)); - FormData data = (FormData) control.getLayoutData (); - if (data != null) { - code.append ("\t\t"); - if (first) { - code.append ("FormData "); - first = false; - } - code.append ("data = new FormData ();\n"); - if (data.width != SWT.DEFAULT) { - code.append ("\t\tdata.width = " + data.width + ";\n"); - } - if (data.height != SWT.DEFAULT) { - code.append ("\t\tdata.height = " + data.height + ";\n"); - } - if (data.left != null) { - if (data.left.control != null) { - TableItem item = table.getItem (i); - String controlString = item.getText (LEFT_COL); - int index = new Integer (controlString.substring (controlString.indexOf (',') - 1, controlString.indexOf (','))).intValue (); - code.append ("\t\tdata.left = new FormAttachment (" + names [index] + ", " + data.left.offset + ", SWT." + alignmentString (data.left.alignment) + ");\n"); - } else { - if (data.right != null || (data.left.numerator != 0 ||data.left.offset != 0)) { - code.append ("\t\tdata.left = new FormAttachment (" + data.left.numerator + ", " + data.left.offset + ");\n"); - } - } - } - if (data.right != null) { - if (data.right.control != null) { - TableItem item = table.getItem (i); - String controlString = item.getText (RIGHT_COL); - int index = new Integer (controlString.substring (controlString.indexOf (',') - 1, controlString.indexOf (','))).intValue (); - code.append ("\t\tdata.right = new FormAttachment (" + names [index] + ", " + data.right.offset + ", SWT." + alignmentString (data.right.alignment) + ");\n"); - } else { - code.append ("\t\tdata.right = new FormAttachment (" + data.right.numerator + ", " + data.right.offset + ");\n"); - } - } - if (data.top != null) { - if (data.top.control != null) { - TableItem item = table.getItem (i); - String controlString = item.getText (TOP_COL); - int index = new Integer (controlString.substring (controlString.indexOf (',') - 1, controlString.indexOf (','))).intValue (); - code.append ("\t\tdata.top = new FormAttachment (" + names [index] + ", " + data.top.offset + ", SWT." + alignmentString (data.top.alignment) + ");\n"); - } else { - if (data.bottom != null || (data.top.numerator != 0 ||data.top.offset != 0)) { - code.append ("\t\tdata.top = new FormAttachment (" + data.top.numerator + ", " + data.top.offset + ");\n"); - } - } - } - if (data.bottom != null) { - if (data.bottom.control != null) { - TableItem item = table.getItem (i); - String controlString = item.getText (BOTTOM_COL); - int index = new Integer (controlString.substring (controlString.indexOf (',') - 1, controlString.indexOf (','))).intValue (); - code.append ("\t\tdata.bottom = new FormAttachment (" + names [index] + ", " + data.bottom.offset + ", SWT." + alignmentString (data.bottom.alignment) + ");\n"); - } else { - code.append ("\t\tdata.bottom = new FormAttachment (" + data.bottom.numerator + ", " + data.bottom.offset + ");\n"); - } - } - code.append ("\t\t" + names [i] + ".setLayoutData (data);\n"); - } - } - return code; - } - - /** - * Returns the string to insert when a new child control is added to the table. - */ - String[] getInsertString (String name, String controlType) { - return new String [] {name, controlType, "-1", "-1", - "0,0 (" + LayoutExample.getResourceString ("Default") + ")", "", - "0,0 (" + LayoutExample.getResourceString ("Default") + ")", ""}; - } - - /** - * Returns the layout data field names. - */ - String [] getLayoutDataFieldNames() { - return new String [] { - "Control Name", - "Control Type", - "width", - "height", - "left", - "right", - "top", - "bottom" - }; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "FormLayout"; - } - - /** - * Takes information from TableEditors and stores it. - */ - void resetEditors (boolean tab) { - TableItem oldItem = comboEditor.getItem (); - if (oldItem != null) { - int row = table.indexOf (oldItem); - try { - new String (nameText.getText ()); - } catch (NumberFormatException e) { - nameText.setText (oldItem.getText (NAME_COL)); - } - try { - new Integer (widthText.getText ()).intValue (); - } catch (NumberFormatException e) { - widthText.setText (oldItem.getText (WIDTH_COL)); - } - try { - new Integer(heightText.getText()).intValue(); - } catch(NumberFormatException e) { - heightText.setText (oldItem.getText(HEIGHT_COL)); - } - String[] insert = new String [] {nameText.getText(), combo.getText (), widthText.getText (), heightText.getText ()}; - data.setElementAt (insert, row); - for (int i = 0 ; i < MODIFY_COLS; i++) { - oldItem.setText (i, ((String [])data.elementAt (row)) [i]); - } - if (!tab) disposeEditors (); - } - setLayoutState (); - refreshLayoutComposite (); - setLayoutData (); - layoutComposite.layout (true); - layoutGroup.layout (true); - } - - /** - * Return the initial weight of the layout and control groups within the SashForm. - * @return the desired sash weights for the tab page - */ - int[] sashWeights () { - return new int[] {40, 60}; - } - - /** - * Sets an attachment to the edge of a widget using the - * information in the table. - */ - FormAttachment setAttachment (String attachment) { - String control, align; - int position, offset; - int comma = attachment.indexOf (','); - char first = attachment.charAt (0); - if (Character.isLetter(first)) { - /* Case where there is a control */ - control = attachment.substring (0, comma); - int i = 0; - while (i < control.length () && !Character.isDigit (control.charAt (i))) { - i++; - } - String end = control.substring (i); - int index = new Integer (end).intValue (); - Control attachControl = children [index]; - int colon = attachment.indexOf (':'); - try { - offset = new Integer (attachment.substring (comma + 1, colon)).intValue (); - } catch (NumberFormatException e) { - offset = 0; - } - align = attachment.substring (colon + 1); - return new FormAttachment (attachControl, offset, alignmentConstant (align)); - } else { - /* Case where there is a position */ - try { - position = new Integer (attachment.substring (0,comma)).intValue (); - } catch (NumberFormatException e) { - position = 0; - } - try { - offset = new Integer (attachment.substring (comma + 1)).intValue (); - } catch (NumberFormatException e) { - offset = 0; - } - return new FormAttachment (position, offset); - } - } - - /** - * Sets the layout data for the children of the layout. - */ - void setLayoutData () { - Control [] children = layoutComposite.getChildren (); - TableItem [] items = table.getItems (); - FormData data; - int width, height; - String left, right, top, bottom; - for (int i = 0; i < children.length; i++) { - width = new Integer (items [i].getText (WIDTH_COL)).intValue (); - height = new Integer (items [i].getText (HEIGHT_COL)).intValue (); - data = new FormData (); - if (width > 0) data.width = width; - if (height > 0) data.height = height; - - left = items [i].getText (LEFT_COL); - if (left.length () > 0) { - data.left = setAttachment (left); - if (data.left.control != null) { - String attachment = checkAttachment (left, data.left); - items [i].setText (LEFT_COL, attachment); - } - } - right = items [i].getText (RIGHT_COL); - if (right.length () > 0) { - data.right = setAttachment (right); - if (data.right.control != null) { - String attachment = checkAttachment (right, data.right); - items [i].setText (RIGHT_COL, attachment); - } - } - top = items [i].getText (TOP_COL); - if (top.length () > 0 ) { - data.top = setAttachment (top); - if (data.top.control != null) { - String attachment = checkAttachment (top, data.top); - items [i].setText (TOP_COL, attachment); - } - } - bottom = items [i].getText (BOTTOM_COL); - if (bottom.length () > 0) { - data.bottom = setAttachment (bottom); - if (data.bottom.control != null) { - String attachment = checkAttachment (bottom, data.bottom); - items [i].setText (BOTTOM_COL, attachment); - } - } - children [i].setLayoutData (data); - } - } - - /** - * Sets the state of the layout. - */ - void setLayoutState () { - /* Set the margins and spacing */ - formLayout.marginWidth = marginWidth.getSelection (); - formLayout.marginHeight = marginHeight.getSelection (); - formLayout.marginLeft = marginLeft.getSelection (); - formLayout.marginRight = marginRight.getSelection (); - formLayout.marginTop = marginTop.getSelection (); - formLayout.marginBottom = marginBottom.getSelection (); - formLayout.spacing = spacing.getSelection (); - } - - /** - * <code>AttachDialog</code> is the class that creates a - * dialog specific for this example. It creates a dialog - * with controls to set the values in a FormAttachment. - */ - public class AttachDialog extends Dialog { - String result = ""; - String controlInput, positionInput, alignmentInput, offsetInput; - int col = 0; - - public AttachDialog (Shell parent, int style) { - super (parent, style); - } - - public AttachDialog (Shell parent) { - this (parent, 0); - } - - public void setColumn (int col) { - this.col = col; - } - - public String open () { - Shell parent = getParent (); - final Shell shell = new Shell (parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); - shell.setText (getText ()); - shell.setLayout (new GridLayout (3, true)); - - /* Find out what was previously set as an attachment */ - TableItem newItem = leftEditor.getItem (); - result = newItem.getText (col); - String oldAttach = result; - String oldPos = "0", oldControl = "", oldAlign = "DEFAULT", oldOffset = "0"; - boolean isControl = false; - if (oldAttach.length () != 0) { - char first = oldAttach.charAt (0); - if (Character.isLetter(first)) { - /* We have a control */ - isControl = true; - oldControl = oldAttach.substring (0, oldAttach.indexOf (',')); - oldAlign = oldAttach.substring (oldAttach.indexOf (':') + 1); - oldOffset = oldAttach.substring (oldAttach.indexOf (',') + 1, oldAttach.indexOf (':')); - } else { - /* We have a position */ - oldPos = oldAttach.substring (0, oldAttach.indexOf (',')); - oldOffset = oldAttach.substring (oldAttach.indexOf (',') + 1); - if (oldOffset.endsWith (")")) { // i.e. (Default) - oldOffset = oldOffset.substring (0, oldOffset.indexOf (' ')); - } - } - } - - /* Add position field */ - final Button posButton = new Button (shell, SWT.RADIO); - posButton.setText (LayoutExample.getResourceString ("Position")); - posButton.setSelection (!isControl); - final Combo position = new Combo (shell, SWT.NONE); - position.setItems (new String [] {"0","25","33","50","67","75","100"}); - position.setVisibleItemCount (7); - position.setText (oldPos); - position.setEnabled (!isControl); - position.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false, 2, 1)); - - /* Add control field */ - final Button contButton = new Button (shell, SWT.RADIO); - contButton.setText (LayoutExample.getResourceString ("Control")); - contButton.setSelection (isControl); - final Combo control = new Combo (shell, SWT.READ_ONLY); - TableItem [] items = table.getItems (); - TableItem currentItem = leftEditor.getItem (); - for (int i = 0; i < table.getItemCount (); i++) { - if (items [i].getText (0).length() > 0) { - if (items [i] != currentItem) { - control.add (items [i].getText (COMBO_COL) + i); - } - } - } - if (oldControl.length () != 0) control.setText (oldControl); - else control.select (0); - control.setEnabled (isControl); - control.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false, 2, 1)); - - /* Add alignment field */ - new Label (shell, SWT.NONE).setText (LayoutExample.getResourceString ("Alignment")); - final Combo alignment = new Combo (shell, SWT.NONE); - String[] alignmentValues; - if (col == LEFT_COL || col == RIGHT_COL) { - alignmentValues = new String [] {"SWT.LEFT", "SWT.RIGHT", "SWT.CENTER", "SWT.DEFAULT"}; - } else { - // col == TOP_COL || col == BOTTOM_COL - alignmentValues = new String [] {"SWT.TOP", "SWT.BOTTOM", "SWT.CENTER", "SWT.DEFAULT"}; - } - alignment.setItems (alignmentValues); - alignment.setText ("SWT." + oldAlign); - alignment.setEnabled (isControl); - alignment.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false, 2, 1)); - - /* Add offset field */ - new Label (shell, SWT.NONE).setText (LayoutExample.getResourceString ("Offset")); - final Text offset = new Text (shell, SWT.SINGLE | SWT.BORDER); - offset.setText (oldOffset); - offset.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false, 2, 1)); - - /* Add listeners for choosing between position and control */ - posButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - position.setEnabled (true); - control.setEnabled (false); - alignment.setEnabled (false); - } - }); - contButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - position.setEnabled (false); - control.setEnabled (true); - alignment.setEnabled (true); - } - }); - - Button clear = new Button (shell, SWT.PUSH); - clear.setText (LayoutExample.getResourceString ("Clear")); - clear.setLayoutData (new GridData (SWT.END, SWT.CENTER, false, false)); - clear.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - result = ""; - shell.close (); - } - }); - /* OK button sets data into table */ - Button ok = new Button (shell, SWT.PUSH); - ok.setText (LayoutExample.getResourceString ("OK")); - ok.setLayoutData (new GridData (SWT.CENTER, SWT.CENTER, false, false)); - ok.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - controlInput = control.getText (); - alignmentInput = alignment.getText ().substring (4); - positionInput = position.getText (); - if (positionInput.length () == 0) positionInput = "0"; - try { - new Integer (positionInput).intValue (); - } catch (NumberFormatException except) { - positionInput = "0"; - } - offsetInput = offset.getText (); - if (offsetInput.length () == 0) offsetInput = "0"; - try { - new Integer (offsetInput).intValue (); - } catch (NumberFormatException except) { - offsetInput = "0"; - } - if (posButton.getSelection() || controlInput.length () == 0) { - result = positionInput + "," + offsetInput; - } else { - result = controlInput + "," + offsetInput + ":" + alignmentInput; - } - shell.close (); - } - }); - Button cancel = new Button (shell, SWT.PUSH); - cancel.setText (LayoutExample.getResourceString ("Cancel")); - cancel.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - shell.close (); - } - }); - - shell.setDefaultButton (ok); - shell.pack (); - /* Center the dialog */ - Point center = parent.getLocation (); - center.x = center.x + (parent.getBounds ().width / 2) - (shell.getBounds ().width / 2); - center.y = center.y + (parent.getBounds ().height / 2) - (shell.getBounds ().height / 2); - shell.setLocation (center); - shell.open (); - while (!shell.isDisposed ()) { - if (display.readAndDispatch ()) display.sleep (); - } - - return result; - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/GridLayoutTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/GridLayoutTab.java deleted file mode 100644 index a64fef129d..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/GridLayoutTab.java +++ /dev/null @@ -1,672 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.graphics.*; - -class GridLayoutTab extends Tab { - /* Controls for setting layout parameters */ - Spinner numColumns; - Button makeColumnsEqualWidth; - Spinner marginWidth, marginHeight, marginLeft, marginRight, marginTop, marginBottom, horizontalSpacing, verticalSpacing; - /* The example layout instance */ - GridLayout gridLayout; - /* TableEditors and related controls*/ - TableEditor nameEditor, comboEditor, widthEditor, heightEditor; - TableEditor vAlignEditor, hAlignEditor, hGrabEditor, vGrabEditor, hSpanEditor, vSpanEditor; - TableEditor hIndentEditor, vIndentEditor, minWidthEditor, minHeightEditor, excludeEditor; - CCombo combo, vAlign, hAlign, hGrab, vGrab, exclude; - Text nameText, widthText, heightText, hSpan, vSpan, hIndent, vIndent, minWidthText, minHeightText; - /* Constants */ - static final int NAME_COL = 0; - static final int COMBO_COL = 1; - static final int WIDTH_COL = 2; - static final int HEIGHT_COL = 3; - static final int HALIGN_COL = 4; - static final int VALIGN_COL = 5; - static final int HGRAB_COL = 6; - static final int VGRAB_COL = 7; - static final int HSPAN_COL = 8; - static final int VSPAN_COL = 9; - static final int HINDENT_COL = 10; - static final int VINDENT_COL = 11; - static final int MINWIDTH_COL = 12; - static final int MINHEIGHT_COL = 13; - static final int EXCLUDE_COL = 14; - - static final int TOTAL_COLS = 15; - - /** - * Creates the Tab within a given instance of LayoutExample. - */ - GridLayoutTab(LayoutExample instance) { - super(instance); - } - - /** - * Creates the widgets in the "child" group. - */ - void createChildWidgets () { - /* Create the TraverseListener */ - final TraverseListener traverseListener = new TraverseListener () { - public void keyTraversed (TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_RETURN || e.detail == SWT.TRAVERSE_TAB_NEXT) - resetEditors (); - if (e.detail == SWT.TRAVERSE_ESCAPE) - disposeEditors (); - } - }; - - /* Add common controls */ - super.createChildWidgets (); - - /* Add hovers to the column headers whose field names have been shortened to save space */ - table.getColumn (HALIGN_COL).setToolTipText ("horizontalAlignment"); - table.getColumn (VALIGN_COL).setToolTipText ("verticalAlignment"); - table.getColumn (HGRAB_COL).setToolTipText ("grabExcessHorizontalSpace"); - table.getColumn (VGRAB_COL).setToolTipText ("grabExcessVerticalSpace"); - table.getColumn (HSPAN_COL).setToolTipText ("horizontalSpan"); - table.getColumn (VSPAN_COL).setToolTipText ("verticalSpan"); - table.getColumn (HINDENT_COL).setToolTipText ("horizontalIndent"); - table.getColumn (VINDENT_COL).setToolTipText ("verticalIndent"); - table.getColumn (MINWIDTH_COL).setToolTipText ("minimumWidth"); - table.getColumn (MINHEIGHT_COL).setToolTipText ("minimumHeight"); - - /* Add TableEditors */ - nameEditor = new TableEditor (table); - comboEditor = new TableEditor (table); - widthEditor = new TableEditor (table); - heightEditor = new TableEditor (table); - vAlignEditor = new TableEditor (table); - hAlignEditor = new TableEditor (table); - hGrabEditor = new TableEditor (table); - vGrabEditor = new TableEditor (table); - hSpanEditor = new TableEditor (table); - vSpanEditor = new TableEditor (table); - hIndentEditor = new TableEditor (table); - vIndentEditor = new TableEditor (table); - minWidthEditor = new TableEditor (table); - minHeightEditor = new TableEditor (table); - excludeEditor = new TableEditor (table); - table.addMouseListener (new MouseAdapter () { - public void mouseDown(MouseEvent e) { - resetEditors(); - index = table.getSelectionIndex (); - Point pt = new Point (e.x, e.y); - newItem = table.getItem (pt); - if (newItem == null) return; - TableItem oldItem = comboEditor.getItem (); - if (newItem == oldItem || newItem != lastSelected) { - lastSelected = newItem; - return; - } - table.showSelection (); - - nameText = new Text (table, SWT.SINGLE); - nameText.setText (((String [])data.elementAt (index)) [NAME_COL]); - createTextEditor (nameText, nameEditor, NAME_COL); - - combo = new CCombo (table, SWT.READ_ONLY); - createComboEditor (combo, comboEditor); - - widthText = new Text (table, SWT.SINGLE); - widthText.setText (((String [])data.elementAt (index)) [WIDTH_COL]); - createTextEditor (widthText, widthEditor, WIDTH_COL); - - heightText = new Text (table, SWT.SINGLE); - heightText.setText (((String [])data.elementAt (index)) [HEIGHT_COL]); - createTextEditor (heightText, heightEditor, HEIGHT_COL); - - String [] alignValues = new String [] {"BEGINNING","CENTER","END","FILL"}; - hAlign = new CCombo (table, SWT.NONE); - hAlign.setItems (alignValues); - hAlign.setText (newItem.getText (HALIGN_COL)); - hAlignEditor.horizontalAlignment = SWT.LEFT; - hAlignEditor.grabHorizontal = true; - hAlignEditor.minimumWidth = 50; - hAlignEditor.setEditor (hAlign, newItem, HALIGN_COL); - hAlign.addTraverseListener (traverseListener); - - vAlign = new CCombo (table, SWT.NONE); - vAlign.setItems (alignValues); - vAlign.setText (newItem.getText (VALIGN_COL)); - vAlignEditor.horizontalAlignment = SWT.LEFT; - vAlignEditor.grabHorizontal = true; - vAlignEditor.minimumWidth = 50; - vAlignEditor.setEditor (vAlign, newItem, VALIGN_COL); - vAlign.addTraverseListener (traverseListener); - - String [] boolValues = new String [] {"false", "true"}; - hGrab = new CCombo (table, SWT.NONE); - hGrab.setItems (boolValues); - hGrab.setText (newItem.getText (HGRAB_COL)); - hGrabEditor.horizontalAlignment = SWT.LEFT; - hGrabEditor.grabHorizontal = true; - hGrabEditor.minimumWidth = 50; - hGrabEditor.setEditor (hGrab, newItem, HGRAB_COL); - hGrab.addTraverseListener (traverseListener); - - vGrab = new CCombo (table, SWT.NONE); - vGrab.setItems (boolValues); - vGrab.setText (newItem.getText (VGRAB_COL)); - vGrabEditor.horizontalAlignment = SWT.LEFT; - vGrabEditor.grabHorizontal = true; - vGrabEditor.minimumWidth = 50; - vGrabEditor.setEditor (vGrab, newItem, VGRAB_COL); - vGrab.addTraverseListener (traverseListener); - - hSpan = new Text (table, SWT.SINGLE); - hSpan.setText (((String [])data.elementAt (index)) [HSPAN_COL]); - createTextEditor (hSpan, hSpanEditor, HSPAN_COL); - - vSpan = new Text (table, SWT.SINGLE); - vSpan.setText (((String [])data.elementAt (index)) [VSPAN_COL]); - createTextEditor (vSpan, vSpanEditor, VSPAN_COL); - - hIndent = new Text (table, SWT.SINGLE); - hIndent.setText (((String [])data.elementAt (index)) [HINDENT_COL]); - createTextEditor (hIndent, hIndentEditor, HINDENT_COL); - - vIndent = new Text (table, SWT.SINGLE); - vIndent.setText (((String [])data.elementAt (index)) [VINDENT_COL]); - createTextEditor (vIndent, vIndentEditor, VINDENT_COL); - - minWidthText = new Text (table, SWT.SINGLE); - minWidthText.setText (((String [])data.elementAt (index)) [MINWIDTH_COL]); - createTextEditor (minWidthText, minWidthEditor, MINWIDTH_COL); - - minHeightText = new Text (table, SWT.SINGLE); - minHeightText.setText (((String [])data.elementAt (index)) [MINHEIGHT_COL]); - createTextEditor (minHeightText, minHeightEditor, MINHEIGHT_COL); - - exclude = new CCombo (table, SWT.NONE); - exclude.setItems (boolValues); - exclude.setText (newItem.getText (EXCLUDE_COL)); - excludeEditor.horizontalAlignment = SWT.LEFT; - excludeEditor.grabHorizontal = true; - excludeEditor.minimumWidth = 50; - excludeEditor.setEditor (exclude, newItem, EXCLUDE_COL); - exclude.addTraverseListener (traverseListener); - - for (int i=0; i<table.getColumnCount (); i++) { - Rectangle rect = newItem.getBounds (i); - if (rect.contains (pt)) { - switch (i) { - case NAME_COL: - nameText.setFocus (); - break; - case COMBO_COL : - combo.setFocus (); - break; - case WIDTH_COL : - widthText.setFocus (); - break; - case HEIGHT_COL : - heightText.setFocus (); - break; - case HALIGN_COL : - hAlign.setFocus (); - break; - case VALIGN_COL : - vAlign.setFocus (); - break; - case HGRAB_COL : - hGrab.setFocus (); - break; - case VGRAB_COL : - vGrab.setFocus (); - break; - case HSPAN_COL : - hSpan.setFocus (); - break; - case VSPAN_COL : - vSpan.setFocus (); - break; - case HINDENT_COL : - hIndent.setFocus (); - break; - case VINDENT_COL : - vIndent.setFocus (); - break; - case MINWIDTH_COL : - minWidthText.setFocus (); - break; - case MINHEIGHT_COL : - minHeightText.setFocus (); - break; - case EXCLUDE_COL : - exclude.setFocus (); - break; - default : - resetEditors (); - break; - } - } - } - } - }); - } - - /** - * Creates the control widgets. - */ - void createControlWidgets () { - /* Controls the columns in the GridLayout */ - Group columnGroup = new Group (controlGroup, SWT.NONE); - columnGroup.setText (LayoutExample.getResourceString ("Columns")); - columnGroup.setLayout(new GridLayout(2, false)); - columnGroup.setLayoutData(new GridData (SWT.FILL, SWT.FILL, false, false)); - new Label(columnGroup, SWT.NONE).setText ("numColumns"); - numColumns = new Spinner (columnGroup, SWT.BORDER); - numColumns.setMinimum (1); - numColumns.addSelectionListener (selectionListener); - makeColumnsEqualWidth = new Button (columnGroup, SWT.CHECK); - makeColumnsEqualWidth.setText ("makeColumnsEqualWidth"); - makeColumnsEqualWidth.addSelectionListener (selectionListener); - makeColumnsEqualWidth.setEnabled (false); - makeColumnsEqualWidth.setLayoutData (new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1)); - - /* Controls the margins and spacing of the GridLayout */ - Group marginGroup = new Group(controlGroup, SWT.NONE); - marginGroup.setText (LayoutExample.getResourceString("Margins_Spacing")); - marginGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - marginGroup.setLayout(new GridLayout(2, false)); - new Label (marginGroup, SWT.NONE).setText("marginWidth"); - marginWidth = new Spinner (marginGroup, SWT.BORDER); - marginWidth.setSelection(5); - marginWidth.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginHeight"); - marginHeight = new Spinner(marginGroup, SWT.BORDER); - marginHeight.setSelection(5); - marginHeight.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginLeft"); - marginLeft = new Spinner(marginGroup, SWT.BORDER); - marginLeft.setSelection(0); - marginLeft.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginRight"); - marginRight = new Spinner(marginGroup, SWT.BORDER); - marginRight.setSelection(0); - marginRight.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginTop"); - marginTop = new Spinner(marginGroup, SWT.BORDER); - marginTop.setSelection(0); - marginTop.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginBottom"); - marginBottom = new Spinner(marginGroup, SWT.BORDER); - marginBottom.setSelection(0); - marginBottom.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("horizontalSpacing"); - horizontalSpacing = new Spinner(marginGroup, SWT.BORDER); - horizontalSpacing.setSelection(5); - horizontalSpacing.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("verticalSpacing"); - verticalSpacing = new Spinner(marginGroup, SWT.BORDER); - verticalSpacing.setSelection(5); - verticalSpacing.addSelectionListener(selectionListener); - - /* Add common controls */ - super.createControlWidgets (); - controlGroup.pack(); - } - - /** - * Creates the example layout. - */ - void createLayout () { - gridLayout = new GridLayout (); - layoutComposite.setLayout (gridLayout); - } - - /** - * Disposes the editors without placing their contents - * into the table. - */ - void disposeEditors () { - comboEditor.setEditor (null, null, -1); - combo.dispose (); - nameText.dispose (); - widthText.dispose (); - heightText.dispose (); - hAlign.dispose (); - vAlign.dispose (); - hGrab.dispose (); - vGrab.dispose (); - hSpan.dispose (); - vSpan.dispose (); - hIndent.dispose (); - vIndent.dispose (); - minWidthText.dispose (); - minHeightText.dispose (); - exclude.dispose (); - } - - /** - * Generates code for the example layout. - */ - StringBuffer generateLayoutCode () { - StringBuffer code = new StringBuffer (); - code.append ("\t\tGridLayout gridLayout = new GridLayout ("); - if (gridLayout.numColumns != 1 || gridLayout.makeColumnsEqualWidth) { - code.append (gridLayout.numColumns + ", " + gridLayout.makeColumnsEqualWidth); - } - code.append(");\n"); - if (gridLayout.marginWidth != 5) { - code.append("\t\tgridLayout.marginWidth = " + gridLayout.marginWidth + ";\n"); - } - if (gridLayout.marginHeight != 5) { - code.append ("\t\tgridLayout.marginHeight = " + gridLayout.marginHeight + ";\n"); - } - if (gridLayout.marginLeft != 0) { - code.append ("\t\tgridLayout.marginLeft = " + gridLayout.marginLeft + ";\n"); - } - if (gridLayout.marginRight != 0) { - code.append ("\t\tgridLayout.marginRight = " + gridLayout.marginRight + ";\n"); - } - if (gridLayout.marginTop != 0) { - code.append ("\t\tgridLayout.marginTop = " + gridLayout.marginTop + ";\n"); - } - if (gridLayout.marginBottom != 0) { - code.append ("\t\tgridLayout.marginBottom = " + gridLayout.marginBottom + ";\n"); - } - if (gridLayout.horizontalSpacing != 5) { - code.append ("\t\tgridLayout.horizontalSpacing = " + gridLayout.horizontalSpacing + ";\n"); - } - if (gridLayout.verticalSpacing != 5) { - code.append ("\t\tgridLayout.verticalSpacing = " + gridLayout.verticalSpacing + ";\n"); - } - code.append ("\t\tshell.setLayout (gridLayout);\n"); - - boolean first = true; - boolean bounds, align, grab, span; - for (int i = 0; i < children.length; i++) { - Control control = children [i]; - code.append (getChildCode (control, i)); - GridData data = (GridData) control.getLayoutData (); - if (data != null) { - /* Use the most efficient constructor */ - bounds = data.widthHint != SWT.DEFAULT || data.heightHint != SWT.DEFAULT; - align = data.horizontalAlignment != SWT.BEGINNING || data.verticalAlignment != SWT.CENTER; - grab = data.grabExcessHorizontalSpace || data.grabExcessVerticalSpace; - span = data.horizontalSpan != 1 || data.verticalSpan != 1; - - code.append ("\t\t"); - if (first) { - code.append ("GridData "); - first = false; - } - if (align || grab || span) { - code.append ("data = new GridData ("); - code.append (alignmentString(data.horizontalAlignment) + ", "); - code.append (alignmentString(data.verticalAlignment) + ", "); - code.append (data.grabExcessHorizontalSpace + ", "); - code.append (data.grabExcessVerticalSpace); - if (span) { - code.append (", " + data.horizontalSpan); - code.append (", " + data.verticalSpan); - } - code.append(");\n"); - if (data.widthHint != SWT.DEFAULT) { - code.append ("\t\tdata.widthHint = " + data.widthHint + ";\n"); - } - if (data.heightHint != SWT.DEFAULT) { - code.append ("\t\tdata.heightHint = " + data.heightHint + ";\n"); - } - } else { - if (bounds) { - code.append ("data = new GridData ("); - code.append (data.widthHint == SWT.DEFAULT ? "SWT.DEFAULT" : String.valueOf(data.widthHint) + ", "); - code.append (data.heightHint == SWT.DEFAULT ? "SWT.DEFAULT" : String.valueOf(data.heightHint)); - code.append(");\n"); - } else { - code.append ("data = new GridData ();\n"); - } - } - if (data.horizontalIndent != 0) { - code.append ("\t\tdata.horizontalIndent = " + data.horizontalIndent + ";\n"); - } - if (data.verticalIndent != 0) { - code.append ("\t\tdata.verticalIndent = " + data.verticalIndent + ";\n"); - } - if (data.minimumWidth != 0) { - code.append ("\t\tdata.minimumWidth = " + data.minimumWidth + ";\n"); - } - if (data.minimumHeight != 0) { - code.append ("\t\tdata.minimumHeight = " + data.minimumHeight + ";\n"); - } - if (data.exclude) { - code.append ("\t\tdata.exclude = true;\n"); - } - if (code.substring (code.length () - 33).equals ("GridData data = new GridData ();\n")) { - code.delete (code.length () - 33, code.length ()); - first = true; - } else if (code.substring (code.length () - 24).equals ("data = new GridData ();\n")) { - code.delete (code.length () - 24, code.length ()); - } else { - code.append ("\t\t" + names [i] + ".setLayoutData (data);\n"); - } - } - } - return code; - } - - String alignmentString(int alignment) { - if (alignment == SWT.BEGINNING) return "SWT.BEGINNING"; - if (alignment == SWT.CENTER) return "SWT.CENTER"; - if (alignment == SWT.END) return "SWT.END"; - return "SWT.FILL"; - } - - /** - * Returns the string to insert when a new child control is added to the table. - */ - String[] getInsertString (String name, String controlType) { - return new String [] {name, controlType, - "-1","-1","BEGINNING","CENTER", - "false","false","1","1","0","0", - "0","0","false"}; - } - - /** - * Returns the layout data field names. - */ - String [] getLayoutDataFieldNames() { - return new String [] { - "Control Name", - "Control Type", - "width", - "height", - "hAlignment", //"horizontalAlignment", - "vAlignment", //"verticalAlignment", - "grabH", //"grabExcessHorizontalSpace", - "grabV", //"grabExcessVerticalSpace", - "hSpan", //"horizontalSpan", - "vSpan", //"verticalSpan", - "hIndent", //"horizontalIndent", - "vIndent", //"verticalIndent", - "minWidth", //"minimumWidth", - "minHeight", //"minimumHeight", - "exclude" - }; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "GridLayout"; - } - - /** - * Takes information from TableEditors and stores it. - */ - void resetEditors (boolean tab) { - TableItem oldItem = comboEditor.getItem (); - if (oldItem != null) { - int row = table.indexOf (oldItem); - /** Make sure user enters a valid data*/ - try { - new String (nameText.getText ()); - } catch (NumberFormatException e) { - nameText.setText (oldItem.getText (NAME_COL)); - } - try { - new Integer (widthText.getText ()).intValue (); - } catch (NumberFormatException e) { - widthText.setText (oldItem.getText (WIDTH_COL)); - } - try { - new Integer (heightText.getText ()).intValue (); - } catch (NumberFormatException e) { - heightText.setText (oldItem.getText (HEIGHT_COL)); - } - try { - new Integer (hSpan.getText ()).intValue (); - } catch (NumberFormatException e) { - hSpan.setText (oldItem.getText (HSPAN_COL)); - } - try { - new Integer (vSpan.getText ()).intValue (); - } catch (NumberFormatException e) { - vSpan.setText (oldItem.getText (VSPAN_COL)); - } - try { - new Integer (hIndent.getText ()).intValue (); - } catch (NumberFormatException e) { - hIndent.setText (oldItem.getText (HINDENT_COL)); - } - try { - new Integer (vIndent.getText ()).intValue (); - } catch (NumberFormatException e) { - vIndent.setText (oldItem.getText (VINDENT_COL)); - } - try { - new Integer (minWidthText.getText ()).intValue (); - } catch (NumberFormatException e) { - minWidthText.setText (oldItem.getText (MINWIDTH_COL)); - } - try { - new Integer (minHeightText.getText ()).intValue (); - } catch (NumberFormatException e) { - minHeightText.setText (oldItem.getText (MINHEIGHT_COL)); - } - String [] insert = new String [] { - nameText.getText (), combo.getText (), widthText.getText (), heightText.getText (), - hAlign.getText (), vAlign.getText (), hGrab.getText (), vGrab.getText (), - hSpan.getText (), vSpan.getText (), hIndent.getText (), vIndent.getText (), - minWidthText.getText (), minHeightText.getText (), exclude.getText () - }; - data.setElementAt (insert, row); - for (int i = 0; i < TOTAL_COLS; i++) { - oldItem.setText (i, ((String [])data.elementAt (row)) [i]); - } - if (!tab) disposeEditors (); - } - setLayoutState (); - refreshLayoutComposite (); - setLayoutData (); - layoutComposite.layout (true); - layoutGroup.layout (true); - } - - /** - * Return the initial weight of the layout and control groups within the SashForm. - * @return the desired sash weights for the tab page - */ - int[] sashWeights () { - return new int[] {35, 65}; - } - - /** - * Sets the layout data for the children of the layout. - */ - void setLayoutData () { - Control [] children = layoutComposite.getChildren (); - TableItem [] items = table.getItems (); - GridData data; - int hSpan, vSpan, hIndent, vIndent; - String vAlign, hAlign, vGrab, hGrab, exclude; - for (int i = 0; i < children.length; i++) { - data = new GridData (); - /* Set widthHint and heightHint */ - data.widthHint = new Integer (items [i].getText (WIDTH_COL)).intValue (); - data.heightHint = new Integer (items [i].getText (HEIGHT_COL)).intValue (); - /* Set vertical alignment and horizontal alignment */ - hAlign = items [i].getText (HALIGN_COL); - if (hAlign.equals ("CENTER")) { - data.horizontalAlignment = SWT.CENTER; - } else if (hAlign.equals ("END")) { - data.horizontalAlignment = SWT.END; - } else if (hAlign.equals ("FILL")) { - data.horizontalAlignment = SWT.FILL; - } else { - data.horizontalAlignment = SWT.BEGINNING; - } - vAlign = items [i].getText (VALIGN_COL); - if (vAlign.equals ("BEGINNING")) { - data.verticalAlignment = SWT.BEGINNING; - } else if (vAlign.equals ("END")) { - data.verticalAlignment = SWT.END; - } else if (vAlign.equals ("FILL")) { - data.verticalAlignment = SWT.FILL; - } else { - data.verticalAlignment = SWT.CENTER; - } - /* Set spans and indents */ - hSpan = new Integer (items [i].getText (HSPAN_COL)).intValue (); - data.horizontalSpan = hSpan; - vSpan = new Integer (items [i].getText (VSPAN_COL)).intValue (); - data.verticalSpan = vSpan; - hIndent = new Integer (items [i].getText (HINDENT_COL)).intValue (); - data.horizontalIndent = hIndent; - vIndent = new Integer (items [i].getText (VINDENT_COL)).intValue (); - data.verticalIndent = vIndent; - /* Set grabs */ - hGrab = items [i].getText (HGRAB_COL); - data.grabExcessHorizontalSpace = hGrab.equals ("true"); - vGrab = items [i].getText (VGRAB_COL); - data.grabExcessVerticalSpace = vGrab.equals ("true"); - /* Set minimum width and height */ - data.minimumWidth = new Integer (items [i].getText (MINWIDTH_COL)).intValue (); - data.minimumHeight = new Integer (items [i].getText (MINHEIGHT_COL)).intValue (); - /* Set exclude boolean */ - exclude = items [i].getText (EXCLUDE_COL); - data.exclude = exclude.equals ("true"); - - children [i].setLayoutData (data); - } - } - - /** - * Sets the state of the layout. - */ - void setLayoutState () { - /* Set the columns for the layout */ - gridLayout.numColumns = numColumns.getSelection (); - gridLayout.makeColumnsEqualWidth = makeColumnsEqualWidth.getSelection (); - makeColumnsEqualWidth.setEnabled (numColumns.getSelection () > 1); - - /* Set the margins and spacing */ - gridLayout.marginWidth = marginWidth.getSelection (); - gridLayout.marginHeight = marginHeight.getSelection (); - gridLayout.marginLeft = marginLeft.getSelection (); - gridLayout.marginRight = marginRight.getSelection (); - gridLayout.marginTop = marginTop.getSelection (); - gridLayout.marginBottom = marginBottom.getSelection (); - gridLayout.horizontalSpacing = horizontalSpacing.getSelection (); - gridLayout.verticalSpacing = verticalSpacing.getSelection (); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/LayoutExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/LayoutExample.java deleted file mode 100644 index 862ec5d941..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/LayoutExample.java +++ /dev/null @@ -1,115 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; - -import java.text.*; -import java.util.*; - -public class LayoutExample { - private static ResourceBundle resourceBundle = ResourceBundle.getBundle("examples_layout"); - private TabFolder tabFolder; - - /** - * Creates an instance of a LayoutExample embedded inside - * the supplied parent Composite. - * - * @param parent the container of the example - */ - public LayoutExample(Composite parent) { - tabFolder = new TabFolder (parent, SWT.NONE); - Tab [] tabs = new Tab [] { - new FillLayoutTab (this), - new RowLayoutTab (this), - new GridLayoutTab (this), - new FormLayoutTab (this), - new StackLayoutTab (this) - }; - for (int i=0; i<tabs.length; i++) { - TabItem item = new TabItem (tabFolder, SWT.NONE); - item.setText (tabs [i].getTabText ()); - item.setControl (tabs [i].createTabFolderPage (tabFolder)); - } - } - - /** - * Grabs input focus. - */ - public void setFocus() { - tabFolder.setFocus(); - } - - /** - * Disposes of all resources associated with a particular - * instance of the LayoutExample. - */ - public void dispose() { - tabFolder = null; - } - - /** - * Invokes as a standalone program. - */ - public static void main(String[] args) { - final Display display = new Display(); - final Shell shell = new Shell(display); - shell.setLayout(new FillLayout()); - new LayoutExample(shell); - shell.setText(getResourceString("window.title")); - shell.addShellListener (new ShellAdapter () { - public void shellClosed(ShellEvent e) { - Shell [] shells = display.getShells(); - for (int i = 0; i < shells.length; i++) { - if (shells [i] != shell) shells [i].close (); - } - } - }); - shell.open(); - while (! shell.isDisposed()) { - if (! display.readAndDispatch()) display.sleep(); - } - } - - /** - * 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 String getResourceString(String key) { - try { - return resourceBundle.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Gets a string from the resource bundle and binds it - * with the given arguments. If the key is not found, - * return the key. - */ - static String getResourceString(String key, Object[] args) { - try { - return MessageFormat.format(getResourceString(key), args); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/RowLayoutTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/RowLayoutTab.java deleted file mode 100644 index b68a0f4371..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/RowLayoutTab.java +++ /dev/null @@ -1,421 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.custom.*; - -class RowLayoutTab extends Tab { - /* Controls for setting layout parameters */ - Button horizontal, vertical; - Button wrap, pack, fill, justify, center; - Spinner marginWidth, marginHeight, marginLeft, marginRight, marginTop, marginBottom, spacing; - /* The example layout instance */ - RowLayout rowLayout; - /* TableEditors and related controls*/ - TableEditor comboEditor, widthEditor, heightEditor, nameEditor, excludeEditor; - CCombo combo, exclude; - Text nameText, widthText, heightText; - - /* Constants */ - final int NAME_COL = 0; - final int COMBO_COL = 1; - final int WIDTH_COL = 2; - final int HEIGHT_COL = 3; - final int EXCLUDE_COL = 4; - final int TOTAL_COLS = 5; - - /** - * Creates the Tab within a given instance of LayoutExample. - */ - RowLayoutTab(LayoutExample instance) { - super(instance); - } - - /** - * Creates the widgets in the "child" group. - */ - void createChildWidgets () { - /* Add common controls */ - super.createChildWidgets (); - - /* Add TableEditors */ - nameEditor = new TableEditor (table); - comboEditor = new TableEditor (table); - widthEditor = new TableEditor (table); - heightEditor = new TableEditor (table); - excludeEditor = new TableEditor (table); - table.addMouseListener (new MouseAdapter () { - public void mouseDown(MouseEvent e) { - resetEditors(); - index = table.getSelectionIndex (); - Point pt = new Point (e.x, e.y); - newItem = table.getItem (pt); - if (newItem == null) return; - TableItem oldItem = comboEditor.getItem (); - if (newItem == oldItem || newItem != lastSelected) { - lastSelected = newItem; - return; - } - table.showSelection (); - - combo = new CCombo (table, SWT.READ_ONLY); - createComboEditor (combo, comboEditor); - - nameText = new Text(table, SWT.SINGLE); - nameText.setText(((String[])data.elementAt(index))[NAME_COL]); - createTextEditor(nameText, nameEditor, NAME_COL); - - widthText = new Text(table, SWT.SINGLE); - widthText.setText(((String[])data.elementAt(index))[WIDTH_COL]); - createTextEditor(widthText, widthEditor, WIDTH_COL); - - heightText = new Text(table, SWT.SINGLE); - heightText.setText (((String [])data.elementAt (index)) [HEIGHT_COL]); - createTextEditor (heightText, heightEditor, HEIGHT_COL); - - String [] boolValues = new String [] {"false", "true"}; - exclude = new CCombo (table, SWT.NONE); - exclude.setItems (boolValues); - exclude.setText (newItem.getText (EXCLUDE_COL)); - excludeEditor.horizontalAlignment = SWT.LEFT; - excludeEditor.grabHorizontal = true; - excludeEditor.minimumWidth = 50; - excludeEditor.setEditor (exclude, newItem, EXCLUDE_COL); - exclude.addTraverseListener (traverseListener); - - for (int i=0; i<table.getColumnCount (); i++) { - Rectangle rect = newItem.getBounds (i); - if (rect.contains (pt)) { - switch (i) { - case NAME_COL : - nameText.setFocus (); - case COMBO_COL : - combo.setFocus (); - break; - case WIDTH_COL : - widthText.setFocus (); - break; - case HEIGHT_COL : - heightText.setFocus (); - break; - case EXCLUDE_COL : - exclude.setFocus (); - break; - default : - resetEditors (); - break; - } - } - } - } - }); - } - - /** - * Creates the control widgets. - */ - void createControlWidgets () { - /* Controls the type of RowLayout */ - Group typeGroup = new Group (controlGroup, SWT.NONE); - typeGroup.setText (LayoutExample.getResourceString ("Type")); - typeGroup.setLayout (new GridLayout ()); - typeGroup.setLayoutData(new GridData (SWT.FILL, SWT.FILL, false, false)); - horizontal = new Button (typeGroup, SWT.RADIO); - horizontal.setText ("SWT.HORIZONTAL"); - horizontal.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - horizontal.setSelection(true); - horizontal.addSelectionListener (selectionListener); - vertical = new Button (typeGroup, SWT.RADIO); - vertical.setText ("SWT.VERTICAL"); - vertical.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - vertical.addSelectionListener (selectionListener); - - /* Controls the margins and spacing of the RowLayout */ - Group marginGroup = new Group (controlGroup, SWT.NONE); - marginGroup.setText (LayoutExample.getResourceString ("Margins_Spacing")); - marginGroup.setLayout(new GridLayout(2, false)); - marginGroup.setLayoutData(new GridData (SWT.FILL, SWT.FILL, false, false, 1, 2)); - new Label(marginGroup, SWT.NONE).setText("marginWidth"); - marginWidth = new Spinner(marginGroup, SWT.BORDER); - marginWidth.setSelection(0); - marginWidth.addSelectionListener(selectionListener); - new Label (marginGroup, SWT.NONE).setText ("marginHeight"); - marginHeight = new Spinner(marginGroup, SWT.BORDER); - marginHeight.setSelection(0); - marginHeight.setLayoutData (new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); - marginHeight.addSelectionListener (selectionListener); - new Label (marginGroup, SWT.NONE).setText ("marginLeft"); - marginLeft = new Spinner(marginGroup, SWT.BORDER); - marginLeft.setSelection(3); - marginLeft.addSelectionListener (selectionListener); - new Label (marginGroup, SWT.NONE).setText ("marginRight"); - marginRight = new Spinner(marginGroup, SWT.BORDER); - marginRight.setSelection(3); - marginRight.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginTop"); - marginTop = new Spinner(marginGroup, SWT.BORDER); - marginTop.setSelection(3); - marginTop.addSelectionListener(selectionListener); - new Label (marginGroup, SWT.NONE).setText ("marginBottom"); - marginBottom = new Spinner(marginGroup, SWT.BORDER); - marginBottom.setSelection(3); - marginBottom.addSelectionListener (selectionListener); - new Label (marginGroup, SWT.NONE).setText ("spacing"); - spacing = new Spinner(marginGroup, SWT.BORDER); - spacing.setSelection(3); - spacing.addSelectionListener (selectionListener); - - /* Controls other parameters of the RowLayout */ - Group specGroup = new Group (controlGroup, SWT.NONE); - specGroup.setText (LayoutExample.getResourceString ("Properties")); - specGroup.setLayoutData (new GridData (SWT.FILL, SWT.FILL, false, false)); - specGroup.setLayout (new GridLayout ()); - wrap = new Button (specGroup, SWT.CHECK); - wrap.setText ("Wrap"); - wrap.setSelection (true); - wrap.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - wrap.addSelectionListener (selectionListener); - pack = new Button (specGroup, SWT.CHECK); - pack.setText ("Pack"); - pack.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - pack.setSelection (true); - pack.addSelectionListener(selectionListener); - fill = new Button(specGroup, SWT.CHECK); - fill.setText("Fill"); - fill.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - fill.addSelectionListener(selectionListener); - justify = new Button (specGroup, SWT.CHECK); - justify.setText ("Justify"); - justify.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - justify.addSelectionListener (selectionListener); - center = new Button (specGroup, SWT.CHECK); - center.setText ("Center"); - center.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); - center.addSelectionListener (selectionListener); - - /* Add common controls */ - super.createControlWidgets (); - } - - /** - * Creates the example layout. - */ - void createLayout () { - rowLayout = new RowLayout (); - layoutComposite.setLayout (rowLayout); - } - - /** - * Disposes the editors without placing their contents - * into the table. - */ - void disposeEditors () { - comboEditor.setEditor (null, null, -1); - combo.dispose (); - widthText.dispose (); - heightText.dispose (); - nameText.dispose (); - exclude.dispose (); - } - - /** - * Generates code for the example layout. - */ - StringBuffer generateLayoutCode () { - StringBuffer code = new StringBuffer (); - code.append ("\t\tRowLayout rowLayout = new RowLayout ();\n"); - if (rowLayout.type == SWT.VERTICAL) { - code.append ("\t\trowLayout.type = SWT.VERTICAL;\n"); - } - if (rowLayout.wrap == false) { - code.append ("\t\trowLayout.wrap = false;\n"); - } - if (rowLayout.pack == false) { - code.append ("\t\trowLayout.pack = false;\n"); - } - if (rowLayout.fill == true) { - code.append("\t\trowLayout.fill = true;\n"); - } - if (rowLayout.justify == true) { - code.append ("\t\trowLayout.justify = true;\n"); - } - if (rowLayout.center == true) { - code.append ("\t\trowLayout.center = true;\n"); - } - if (rowLayout.marginWidth != 0) { - code.append("\t\trowLayout.marginWidth = " + rowLayout.marginWidth + ";\n"); - } - if (rowLayout.marginHeight != 0) { - code.append("\t\trowLayout.marginHeight = " + rowLayout.marginHeight + ";\n"); - } - if (rowLayout.marginLeft != 3) { - code.append ("\t\trowLayout.marginLeft = " + rowLayout.marginLeft + ";\n"); - } - if (rowLayout.marginRight != 3) { - code.append ("\t\trowLayout.marginRight = " + rowLayout.marginRight + ";\n"); - } - if (rowLayout.marginTop != 3) { - code.append ("\t\trowLayout.marginTop = " + rowLayout.marginTop + ";\n"); - } - if (rowLayout.marginBottom != 3) { - code.append ("\t\trowLayout.marginBottom = " + rowLayout.marginBottom + ";\n"); - } - if (rowLayout.spacing != 3) { - code.append ("\t\trowLayout.spacing = " + rowLayout.spacing + ";\n"); - } - code.append ("\t\tshell.setLayout (rowLayout);\n"); - - boolean first = true; - for (int i = 0; i < children.length; i++) { - Control control = children [i]; - code.append (getChildCode (control,i)); - RowData rowData = (RowData) control.getLayoutData (); - if (rowData != null) { - if (rowData.width != -1 || rowData.height != -1 || rowData.exclude) { - code.append ("\t\t"); - if (first) { - code.append ("RowData "); - first = false; - } - if (rowData.width == -1 && rowData.height == -1) { - code.append ("rowData = new RowData ();\n"); - } else if (rowData.width == -1) { - code.append ("rowData = new RowData (SWT.DEFAULT, " + rowData.height + ");\n"); - } else if (rowData.height == -1) { - code.append ("rowData = new RowData (" + rowData.width + ", SWT.DEFAULT);\n"); - } else { - code.append ("rowData = new RowData (" + rowData.width + ", " + rowData.height + ");\n"); - } - if (rowData.exclude) { - code.append ("\t\trowData.exclude = true;\n"); - } - code.append ("\t\t" + names [i] + ".setLayoutData (rowData);\n"); - } - } - } - return code; - } - - /** - * Returns the string to insert when a new child control is added to the table. - */ - String[] getInsertString (String name, String controlType) { - return new String [] {name, controlType, "-1", "-1", "false"}; - } - - /** - * Returns the layout data field names. - */ - String [] getLayoutDataFieldNames() { - return new String [] { - "Control Name", - "Control Type", - "width", - "height", - "exclude" - }; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText () { - return "RowLayout"; - } - - /** - * Takes information from TableEditors and stores it. - */ - void resetEditors (boolean tab) { - TableItem oldItem = comboEditor.getItem (); - if (oldItem != null) { - int row = table.indexOf (oldItem); - /* Make sure user has entered valid data */ - try { - new String(nameText.getText()); - } catch (NumberFormatException e) { - nameText.setText(oldItem.getText(NAME_COL)); - } - try { - new Integer (widthText.getText ()).intValue (); - } catch (NumberFormatException e) { - widthText.setText (oldItem.getText (WIDTH_COL)); - } - try { - new Integer (heightText.getText ()).intValue (); - } catch (NumberFormatException e) { - heightText.setText (oldItem.getText (HEIGHT_COL)); - } - String [] insert = new String [] { - nameText.getText(), combo.getText (), widthText.getText (), heightText.getText (), exclude.getText ()}; - data.setElementAt (insert, row); - for (int i = 0 ; i < TOTAL_COLS; i++) { - oldItem.setText (i, ((String [])data.elementAt (row)) [i]); - } - if (!tab) disposeEditors (); - } - setLayoutState (); - refreshLayoutComposite (); - setLayoutData (); - layoutComposite.layout (true); - layoutGroup.layout (true); - } - - /** - * Sets the layout data for the children of the layout. - */ - void setLayoutData () { - Control [] children = layoutComposite.getChildren (); - TableItem [] items = table.getItems (); - RowData data; - int width, height; - String exclude; - for (int i = 0; i < children.length; i++) { - width = new Integer (items [i].getText (WIDTH_COL)).intValue (); - height = new Integer (items [i].getText (HEIGHT_COL)).intValue (); - data = new RowData (width, height); - exclude = items [i].getText (EXCLUDE_COL); - data.exclude = exclude.equals ("true"); - children [i].setLayoutData (data); - } - - } - - /** - * Sets the state of the layout. - */ - void setLayoutState () { - /* Set the type of layout */ - rowLayout.type = vertical.getSelection () ? SWT.VERTICAL : SWT.HORIZONTAL; - - /* Set the margins and spacing */ - rowLayout.marginWidth = marginWidth.getSelection (); - rowLayout.marginHeight = marginHeight.getSelection (); - rowLayout.marginLeft = marginLeft.getSelection (); - rowLayout.marginRight = marginRight.getSelection (); - rowLayout.marginTop = marginTop.getSelection (); - rowLayout.marginBottom = marginBottom.getSelection (); - rowLayout.spacing = spacing.getSelection (); - - /* Set the other layout properties */ - rowLayout.wrap = wrap.getSelection (); - rowLayout.pack = pack.getSelection (); - rowLayout.fill = fill.getSelection (); - rowLayout.justify = justify.getSelection (); - rowLayout.center = center.getSelection (); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/StackLayoutTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/StackLayoutTab.java deleted file mode 100644 index 5d911aba86..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/StackLayoutTab.java +++ /dev/null @@ -1,247 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class StackLayoutTab extends Tab { - /* Controls for setting layout parameters */ - Button backButton, advanceButton; - Label topControl; - Spinner marginWidth, marginHeight; - /* The example layout instance */ - StackLayout stackLayout; - int currentLayer = -1; - /* TableEditors and related controls*/ - TableEditor comboEditor, nameEditor; - CCombo combo; - Text nameText; - final int NAME_COL = 0; - final int TOTAL_COLS = 2; - - /** - * Creates the Tab within a given instance of LayoutExample. - */ - StackLayoutTab(LayoutExample instance) { - super(instance); - } - - /** - * Creates the widgets in the "child" group. - */ - void createChildWidgets() { - /* Add common controls */ - super.createChildWidgets(); - - /* Add TableEditors */ - comboEditor = new TableEditor(table); - nameEditor = new TableEditor(table); - table.addMouseListener (new MouseAdapter() { - public void mouseDown(MouseEvent e) { - resetEditors(); - index = table.getSelectionIndex(); - if (index == -1) return; - //set top layer of stack to the selected item - setTopControl (index); - - TableItem oldItem = comboEditor.getItem(); - newItem = table.getItem(index); - if (newItem == oldItem || newItem != lastSelected) { - lastSelected = newItem; - return; - } - table.showSelection(); - combo = new CCombo(table, SWT.READ_ONLY); - createComboEditor(combo, comboEditor); - - nameText = new Text(table, SWT.SINGLE); - nameText.setText(((String[])data.elementAt(index))[NAME_COL]); - createTextEditor(nameText, nameEditor, NAME_COL); - } - }); - } - - /** - * Creates the control widgets. - */ - void createControlWidgets() { - /* Controls the topControl in the StackLayout */ - Group columnGroup = new Group (controlGroup, SWT.NONE); - columnGroup.setText ("topControl");//(LayoutExample.getResourceString ("Top_Control")); - columnGroup.setLayout(new GridLayout(3, false)); - columnGroup.setLayoutData(new GridData (SWT.FILL, SWT.FILL, false, false)); - backButton = new Button(columnGroup, SWT.PUSH); - backButton.setText("<<"); - backButton.setEnabled(false); - backButton.setLayoutData(new GridData (SWT.END, SWT.CENTER, false, false)); - backButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - setTopControl (currentLayer - 1); - } - }); - topControl = new Label (columnGroup, SWT.BORDER); - topControl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - advanceButton = new Button(columnGroup, SWT.PUSH); - advanceButton.setText(">>"); - advanceButton.setEnabled(false); - advanceButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - setTopControl (currentLayer + 1); - } - }); - - /* Controls the margins of the StackLayout */ - Group marginGroup = new Group(controlGroup, SWT.NONE); - marginGroup.setText (LayoutExample.getResourceString("Margins")); - marginGroup.setLayout(new GridLayout(2, false)); - marginGroup.setLayoutData (new GridData(SWT.FILL, SWT.CENTER, false, false)); - new Label(marginGroup, SWT.NONE).setText("marginWidth"); - marginWidth = new Spinner(marginGroup, SWT.BORDER); - marginWidth.setSelection(0); - marginWidth.addSelectionListener(selectionListener); - new Label(marginGroup, SWT.NONE).setText("marginHeight"); - marginHeight = new Spinner(marginGroup, SWT.BORDER); - marginHeight.setSelection(0); - marginHeight.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); - marginHeight.addSelectionListener(selectionListener); - - /* Add common controls */ - super.createControlWidgets(); - } - - /** - * Creates the example layout. - */ - void createLayout() { - stackLayout = new StackLayout(); - layoutComposite.setLayout(stackLayout); - } - - void createLayoutComposite() { - layoutComposite = new Composite(layoutGroup, SWT.BORDER); - layoutComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - createLayout(); - } - - /** - * Disposes the editors without placing their contents - * into the table. - */ - void disposeEditors() { - comboEditor.setEditor(null, null, -1); - combo.dispose(); - nameText.dispose(); - } - - /** - * Generates code for the example layout. - */ - StringBuffer generateLayoutCode() { - StringBuffer code = new StringBuffer(); - code.append("\t\tStackLayout stackLayout = new StackLayout ();\n"); - if (stackLayout.marginWidth != 0) { - code.append("\t\tstackLayout.marginWidth = " + stackLayout.marginWidth + ";\n"); - } - if (stackLayout.marginHeight != 0) { - code.append("\t\tstackLayout.marginHeight = " + stackLayout.marginHeight + ";\n"); - } - code.append("\t\tshell.setLayout (stackLayout);\n"); - for(int i = 0; i < children.length; i++) { - Control control = children[i]; - code.append (getChildCode(control, i)); - } - if (children.length > 0 && currentLayer != -1) { - code.append("\n\t\tstackLayout.topControl = " + names[currentLayer] + ";\n"); - } - return code; - } - - boolean needsCustom() { - return true; - } - - /** - * Returns the string to insert when a new child control is added to the table. - */ - String[] getInsertString (String name, String controlType) { - return new String [] {name, controlType}; - } - - /** - * Returns the layout data field names. - */ - String[] getLayoutDataFieldNames() { - return new String[] {"Control Name", "Control Type"}; - } - - /** - * Gets the text for the tab folder item. - */ - String getTabText() { - return "StackLayout"; - } - - /** - * Takes information from TableEditors and stores it. - */ - void resetEditors (boolean tab) { - TableItem oldItem = comboEditor.getItem (); - comboEditor.setEditor (null, null, -1); - if (oldItem != null) { - int row = table.indexOf (oldItem); - try { - new String (nameText.getText ()); - } catch (NumberFormatException e) { - nameText.setText (oldItem.getText (NAME_COL)); - } - String [] insert = new String [] {nameText.getText (), combo.getText ()}; - data.setElementAt (insert, row); - for (int i = 0 ; i < TOTAL_COLS; i++) { - oldItem.setText (i, ((String [])data.elementAt (row)) [i]); - } - if (!tab) disposeEditors (); - } - setLayoutState (); - refreshLayoutComposite (); - setTopControl (currentLayer); - layoutGroup.layout (true); - } - - void setTopControl (int index) { - if (index == -1 || children.length == 0) { - currentLayer = -1; - topControl.setText (""); - } else { - currentLayer = index; - stackLayout.topControl = children [currentLayer]; - layoutComposite.layout (); - TableItem item = table.getItem(currentLayer); - topControl.setText (item.getText(0)); - } - backButton.setEnabled(children.length > 1 && currentLayer > 0); - advanceButton.setEnabled(children.length > 1 && currentLayer < children.length - 1); - } - - /** - * Sets the state of the layout. - */ - void setLayoutState() { - /* Set the margins and spacing */ - stackLayout.marginWidth = marginWidth.getSelection(); - stackLayout.marginHeight = marginHeight.getSelection(); - } - -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/Tab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/Tab.java deleted file mode 100644 index d2d848129b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/layoutexample/Tab.java +++ /dev/null @@ -1,745 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.layoutexample; - - -import java.util.Vector; - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -/** - * <code>Tab</code> is the abstract superclass of every page - * in the example's tab folder. Each page in the tab folder - * displays a layout, and allows the user to manipulate the - * layout. - * - * A typical page in a Tab contains a two column composite. - * The left column contains the layout group, which contains - * the "layout composite" (the one that has the example layout). - * The right column contains the "control" group. The "control" - * group allows the user to interact with the example. Typical - * operations are modifying layout parameters, adding children - * to the "layout composite", and modifying child layout data. - * The "Code" button in the "control" group opens a new window - * containing code that will regenerate the layout. This code - * (or parts of it) can be selected and copied to the clipboard. - */ -abstract class Tab { - Shell shell; - Display display; - /* Common groups and composites */ - Composite tabFolderPage; - SashForm sash; - Group layoutGroup, controlGroup, childGroup; - /* The composite that contains the example layout */ - Composite layoutComposite; - /* Common controls for modifying the example layout */ - String [] names; - Control [] children; - ToolItem add, delete, clear, code; - int prevSelected = 0; - /* Common values for working with TableEditors */ - Table table; - int index; - boolean comboReset = false; - final String[] OPTIONS = {"Button", "Canvas", "Combo", "Composite", "CoolBar", - "Group", "Label", "Link", "List", "ProgressBar", "Scale", "Slider", "StyledText", - "Table", "Text", "ToolBar", "Tree"}; - TableItem newItem, lastSelected; - Vector data = new Vector (); - /* Controlling instance */ - final LayoutExample instance; - - /* Listeners */ - SelectionListener selectionListener = new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - resetEditors (); - } - }; - - TraverseListener traverseListener = new TraverseListener () { - public void keyTraversed (TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_RETURN) { - e.doit = false; - resetEditors (); - } - } - }; - - /** - * Creates the Tab within a given instance of LayoutExample. - */ - Tab(LayoutExample instance) { - this.instance = instance; - } - - /** - * Creates the "children" group. This is the group that allows - * you to add children to the layout. It exists within the - * controlGroup. - */ - void createChildGroup () { - childGroup = new Group (controlGroup, SWT.NONE); - childGroup.setText (LayoutExample.getResourceString("Children")); - childGroup.setLayout(new GridLayout ()); - childGroup.setLayoutData(new GridData (SWT.FILL, SWT.FILL, true, true, 2, 1)); - - ToolBar toolBar = new ToolBar(childGroup, SWT.FLAT); - toolBar.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false)); - add = new ToolItem(toolBar, SWT.DROP_DOWN); - add.setText(LayoutExample.getResourceString("Add")); - add.addSelectionListener (new SelectionAdapter () { - public void widgetSelected(SelectionEvent event) { - if (event.detail == SWT.ARROW) { - ToolItem item = (ToolItem)event.widget; - ToolBar bar = item.getParent (); - final Menu menu = new Menu (shell, SWT.POP_UP); - for (int i = 0; i < OPTIONS.length; i++) { - final MenuItem newItem = new MenuItem (menu, SWT.RADIO); - newItem.setText (OPTIONS [i]); - newItem.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent event) { - MenuItem menuItem = (MenuItem)event.widget; - if (menuItem.getSelection ()) { - Menu menu = menuItem.getParent (); - prevSelected = menu.indexOf (menuItem); - String controlType = menuItem.getText (); - String name = controlType.toLowerCase () + String.valueOf (table.getItemCount ()); - String [] insert = getInsertString (name, controlType); - if (insert != null) { - TableItem item = new TableItem (table, SWT.NONE); - item.setText (insert); - data.addElement (insert); - } - resetEditors (); - } - } - }); - newItem.setSelection (i == prevSelected); - } - Point pt = display.map (bar, null, event.x, event.y); - menu.setLocation (pt.x, pt.y); - menu.setVisible (true); - - while (menu != null && !menu.isDisposed () && menu.isVisible ()) { - if (!display.readAndDispatch ()) { - display.sleep (); - } - } - menu.dispose (); - } else { - String controlType = OPTIONS [prevSelected]; - String name = controlType.toLowerCase () + String.valueOf (table.getItemCount ()); - String [] insert = getInsertString (name, controlType); - if (insert != null) { - TableItem item = new TableItem (table, 0); - item.setText (insert); - data.addElement (insert); - } - resetEditors (); - } - } - }); - - new ToolItem(toolBar,SWT.SEPARATOR); - - delete = new ToolItem(toolBar, SWT.PUSH); - delete.setText (LayoutExample.getResourceString ("Delete")); - delete.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - resetEditors (); - int [] selected = table.getSelectionIndices (); - table.remove (selected); - /* Refresh the control indices of the table */ - for (int i = 0; i < table.getItemCount(); i++) { - TableItem item = table.getItem (i); - item.setText (0, item.getText (0)); - } - refreshLayoutComposite (); - layoutComposite.layout (true); - layoutGroup.layout (true); - } - }); - - new ToolItem(toolBar,SWT.SEPARATOR); - clear = new ToolItem(toolBar, SWT.PUSH); - clear.setText (LayoutExample.getResourceString ("Clear")); - clear.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - resetEditors (); - children = layoutComposite.getChildren (); - for (int i = 0; i < children.length; i++) { - children [i].dispose (); - } - table.removeAll (); - data.clear (); - children = new Control [0]; - layoutGroup.layout (true); - } - }); - toolBar.pack(); - - new ToolItem (toolBar,SWT.SEPARATOR); - code = new ToolItem (toolBar, SWT.PUSH); - code.setText (LayoutExample.getResourceString ("Generate_Code")); - code.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - final Shell shell = new Shell(); - shell.setText(LayoutExample.getResourceString("Generated_Code")); - shell.setLayout(new FillLayout()); - final Text text = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - String layoutCode = generateCode().toString (); - if (layoutCode.length() == 0) return; - text.setText(layoutCode); - - Menu bar = new Menu(shell, SWT.BAR); - shell.setMenuBar(bar); - MenuItem editItem = new MenuItem(bar, SWT.CASCADE); - editItem.setText(LayoutExample.getResourceString("Edit")); - Menu menu = new Menu(bar); - MenuItem select = new MenuItem(menu, SWT.PUSH); - select.setText(LayoutExample.getResourceString("Select_All")); - select.setAccelerator(SWT.MOD1 + 'A'); - select.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - text.selectAll(); - } - }); - MenuItem copy = new MenuItem(menu, SWT.PUSH); - copy.setText(LayoutExample.getResourceString("Copy")); - copy.setAccelerator(SWT.MOD1 + 'C'); - copy.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - text.copy(); - } - }); - MenuItem exit = new MenuItem(menu, SWT.PUSH); - exit.setText(LayoutExample.getResourceString("Exit")); - exit.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - shell.close(); - } - }); - editItem.setMenu(menu); - - shell.pack(); - shell.setSize(500, 600); - shell.open(); - while(!shell.isDisposed()) - if (!display.readAndDispatch()) display.sleep(); - } - }); - - createChildWidgets(); - } - - /** - * Creates the controls for modifying the "children" - * table, and the table itself. - * Subclasses override this method to augment the - * standard table. - */ - void createChildWidgets() { - /* Create the "children" table */ - table = new Table (childGroup, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION); - table.setLinesVisible (true); - table.setHeaderVisible (true); - FontData def[] = display.getSystemFont().getFontData(); - table.setFont(new Font(display, def[0].getName(), 10, SWT.NONE)); - GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1); - gridData.heightHint = 150; - table.setLayoutData (gridData); - table.addTraverseListener (traverseListener); - - /* Add columns to the table */ - String [] columnHeaders = getLayoutDataFieldNames (); - for (int i = 0; i < columnHeaders.length; i++) { - TableColumn column = new TableColumn(table, SWT.NONE); - column.setText (columnHeaders [i]); - if (i == 0) column.setWidth (100); - else if (i == 1) column.setWidth (90); - else column.pack (); - } - } - - /** - * Creates the TableEditor with a CCombo in the first column - * of the table. This CCombo lists all the controls that - * the user can select to place on their layout. - */ - void createComboEditor (CCombo combo, TableEditor comboEditor) { - combo.setItems (OPTIONS); - combo.setText (newItem.getText (1)); - - /* Set up editor */ - comboEditor.horizontalAlignment = SWT.LEFT; - comboEditor.grabHorizontal = true; - comboEditor.minimumWidth = 50; - comboEditor.setEditor (combo, newItem, 1); - - /* Add listener */ - combo.addTraverseListener(new TraverseListener() { - public void keyTraversed(TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_RETURN) { - comboReset = true; - resetEditors (); - } - if (e.detail == SWT.TRAVERSE_ESCAPE) { - disposeEditors (); - } - } - }); - } - - /** - * Creates the "control" group. This is the group on the - * right half of each example tab. It contains controls - * for adding new children to the layoutComposite, and - * for modifying the children's layout data. - */ - void createControlGroup () { - controlGroup = new Group (sash, SWT.NONE); - controlGroup.setText (LayoutExample.getResourceString("Parameters")); - GridLayout layout = new GridLayout (2, true); - layout.horizontalSpacing = 10; - controlGroup.setLayout (layout); - final Button preferredButton = new Button (controlGroup, SWT.CHECK); - preferredButton.setText (LayoutExample.getResourceString ("Preferred_Size")); - preferredButton.setSelection (false); - preferredButton.addSelectionListener (new SelectionAdapter () { - public void widgetSelected (SelectionEvent e) { - resetEditors (); - GridData data = (GridData)layoutComposite.getLayoutData(); - if (preferredButton.getSelection ()) { - data.heightHint = data.widthHint = SWT.DEFAULT; - data.verticalAlignment = data.horizontalAlignment = 0; - data.grabExcessVerticalSpace = data.grabExcessHorizontalSpace = false; - } else { - data.verticalAlignment = data.horizontalAlignment = SWT.FILL; - data.grabExcessVerticalSpace = data.grabExcessHorizontalSpace = true; - } - layoutComposite.setLayoutData (data); - layoutGroup.layout (true); - } - }); - preferredButton.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false, 2, 1)); - createControlWidgets (); - } - - /** - * Creates the "control" widget children. - * Subclasses override this method to augment - * the standard controls created. - */ - void createControlWidgets () { - createChildGroup (); - } - - /** - * Creates the example layout. - * Subclasses override this method. - */ - void createLayout () { - } - - /** - * Creates the composite that contains the example layout. - */ - void createLayoutComposite () { - layoutComposite = new Composite (layoutGroup, SWT.BORDER); - layoutComposite.setLayoutData (new GridData (SWT.FILL, SWT.FILL, true, true)); - createLayout (); - } - - /** - * Creates the layout group. This is the group on the - * left half of each example tab. - */ - void createLayoutGroup () { - layoutGroup = new Group (sash, SWT.NONE); - layoutGroup.setText (LayoutExample.getResourceString("Layout")); - layoutGroup.setLayout (new GridLayout ()); - createLayoutComposite (); - } - - /** - * 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 with a SashForm*/ - tabFolderPage = new Composite (tabFolder, SWT.NONE); - tabFolderPage.setLayoutData (new GridData(SWT.FILL, SWT.FILL, true, true)); - tabFolderPage.setLayout (new FillLayout ()); - sash = new SashForm (tabFolderPage, SWT.HORIZONTAL); - - /* Create the "layout" and "control" columns */ - createLayoutGroup (); - createControlGroup (); - - sash.setWeights(sashWeights ()); - return tabFolderPage; - } - - /** - * Return the initial weight of the layout and control groups within the SashForm. - * Subclasses may override to provide tab-specific weights. - * @return the desired sash weights for the tab page - */ - int[] sashWeights () { - return new int[] {50, 50}; - } - - /** - * Creates the TableEditor with a Text in the given column - * of the table. - */ - void createTextEditor (Text text, TableEditor textEditor, int column) { - text.setFont (table.getFont ()); - text.selectAll (); - textEditor.horizontalAlignment = SWT.LEFT; - textEditor.grabHorizontal = true; - textEditor.setEditor (text, newItem, column); - - text.addTraverseListener(new TraverseListener() { - public void keyTraversed(TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_TAB_NEXT) { - resetEditors (true); - } - if (e.detail == SWT.TRAVERSE_ESCAPE) { - disposeEditors (); - } - } - }); - } - - /** - * Disposes the editors without placing their contents - * into the table. - * Subclasses override this method. - */ - void disposeEditors () { - } - - /** - * Generates the code needed to produce the example layout. - */ - StringBuffer generateCode () { - /* Make sure all information being entered is stored in the table */ - resetEditors (); - - /* Get names for controls in the layout */ - names = new String [children.length]; - for (int i = 0; i < children.length; i++) { - TableItem myItem = table.getItem(i); - String name = myItem.getText(0); - if (name.matches("\\d")) { - Control control = children [i]; - String controlClass = control.getClass ().toString (); - String controlType = controlClass.substring (controlClass.lastIndexOf ('.') + 1); - names [i] = controlType.toLowerCase () + i; - } else { - names [i] = myItem.getText(0); - } - } - - /* Create StringBuffer containing the code */ - StringBuffer code = new StringBuffer (); - code.append ("import org.eclipse.swt.*;\n"); - code.append ("import org.eclipse.swt.layout.*;\n"); - code.append ("import org.eclipse.swt.widgets.*;\n"); - if (needsCustom ()) code.append ("import org.eclipse.swt.custom.*;\n"); - if (needsGraphics ()) code.append ("import org.eclipse.swt.graphics.*;\n"); - code.append ("\n"); - code.append ("public class MyLayout {\n"); - code.append ("\tpublic static void main (String [] args) {\n"); - code.append ("\t\tDisplay display = new Display ();\n"); - code.append ("\t\tShell shell = new Shell (display);\n"); - - /* Get layout specific code */ - code.append (generateLayoutCode ()); - - code.append ("\n\t\tshell.pack ();\n\t\tshell.open ();\n\n"); - code.append ("\t\twhile (!shell.isDisposed ()) {\n"); - code.append ("\t\t\tif (!display.readAndDispatch ())\n"); - code.append ("\t\t\t\tdisplay.sleep ();\n\t\t}\n\t\tdisplay.dispose ();\n\t}\n}"); - - return code; - } - - boolean needsGraphics() { - return false; - } - - boolean needsCustom() { - return false; - } - - /** - * Generates layout specific code for the example layout. - * Subclasses override this method. - */ - StringBuffer generateLayoutCode () { - return new StringBuffer (); - } - - /** - * Returns the StringBuffer for the code which will - * create a child control. - */ - StringBuffer getChildCode (Control control, int i) { - StringBuffer code = new StringBuffer (); - /* Find the type of control */ - String controlClass = control.getClass().toString (); - String controlType = controlClass.substring (controlClass.lastIndexOf ('.') + 1); - /* Find the style of the control */ - String styleString; - if (controlType.equals ("Button")) { - styleString = "SWT.PUSH"; - } else if (controlType.equals ("StyledText")) { - styleString = "SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL"; - } else if (controlType.equals ("Canvas") || controlType.equals ("Composite") || - controlType.equals ("Table") || controlType.equals ("StyledText") || - controlType.equals ("ToolBar") || controlType.equals ("Tree") || - controlType.equals ("List") || controlType.equals ("Text")) { - styleString = "SWT.BORDER"; - } else styleString = "SWT.NONE"; - /* Write out the control being declared */ - code.append ("\n\t\t" + controlType + " " + names [i] + - " = new " + controlType + " (shell, " + styleString + ");\n"); - /* Add items to those controls that need items */ - if (controlType.equals ("Combo") || controlType.equals ("List")) { - code.append ("\t\t" + names [i] + ".setItems (new String [] {\"Item 1\", \"Item 2\", \"Item 2\"});\n"); - } else if (controlType.equals ("Table")) { - code.append ("\t\t" + names [i] + ".setLinesVisible (true);\n"); - code.append ("\t\tfor (int i = 0; i < 2; i++) {\n"); - code.append ("\t\tTableItem tableItem = new TableItem (" + names [i] + ", SWT.NONE);\n"); - code.append ("\t\t\ttableItem.setText (\"Item\" + i);\n\t\t}\n"); - } else if (controlType.equals ("Tree")) { - code.append ("\t\tfor (int i = 0; i < 2; i++) {\n"); - code.append ("\t\tTreeItem treeItem = new TreeItem (" + names [i] + ", SWT.NONE);\n"); - code.append ("\t\t\ttreeItem.setText (\"Item\" + i);\n\t\t}\n"); - } else if (controlType.equals ("ToolBar")) { - code.append ("\t\tfor (int i = 0; i < 2; i++) {\n"); - code.append ("\t\tToolItem toolItem = new ToolItem (" + names [i] + ", SWT.NONE);\n"); - code.append ("\t\t\ttoolItem.setText (\"Item\" + i);\n\t\t}\n"); - } else if (controlType.equals ("CoolBar")) { - code.append ("\t\tToolBar coolToolBar = new ToolBar (" + names [i] + ", SWT.BORDER);\n"); - code.append ("\t\tToolItem coolToolItem = new ToolItem (coolToolBar, SWT.NONE);\n"); - code.append ("\t\tcoolToolItem.setText (\"Item 1\");\n"); - code.append ("\t\tcoolToolItem = new ToolItem (coolToolBar, SWT.NONE);\n"); - code.append ("\t\tcoolToolItem.setText (\"Item 2\");\n"); - code.append ("\t\tCoolItem coolItem1 = new CoolItem (" + names [i] + ", SWT.NONE);\n"); - code.append ("\t\tcoolItem1.setControl (coolToolBar);\n"); - code.append ("\t\tPoint size = coolToolBar.computeSize (SWT.DEFAULT, SWT.DEFAULT);\n"); - code.append ("\t\tcoolItem1.setSize (coolItem1.computeSize (size.x, size.y));\n"); - code.append ("\t\tcoolToolBar = new ToolBar (" + names [i] + ", SWT.BORDER);\n"); - code.append ("\t\tcoolToolItem = new ToolItem (coolToolBar, SWT.NONE);\n"); - code.append ("\t\tcoolToolItem.setText (\"Item 3\");\n"); - code.append ("\t\tcoolToolItem = new ToolItem (coolToolBar, SWT.NONE);\n"); - code.append ("\t\tcoolToolItem.setText (\"Item 4\");\n"); - code.append ("\t\tCoolItem coolItem2 = new CoolItem (" + names [i] + ", SWT.NONE);\n"); - code.append ("\t\tcoolItem2.setControl (coolToolBar);\n"); - code.append ("\t\tsize = coolToolBar.computeSize (SWT.DEFAULT, SWT.DEFAULT);\n"); - code.append ("\t\tcoolItem2.setSize (coolItem2.computeSize (size.x, size.y));\n"); - code.append ("\t\t" + names [i] + ".setSize (" + names [i] + ".computeSize (SWT.DEFAULT, SWT.DEFAULT));\n"); - } else if (controlType.equals ("ProgressBar")) { - code.append ("\t\t" + names [i] + ".setSelection (50);\n"); - } - /* Set text for those controls that support it */ - if (controlType.equals ("Button") || - controlType.equals ("Combo") || - controlType.equals ("Group") || - controlType.equals ("Label") || - controlType.equals ("Link") || - controlType.equals ("StyledText") || - controlType.equals ("Text")) { - code.append ("\t\t" + names [i] + ".setText (\"" + names [i] + "\");\n"); - } - return code; - } - - /** - * Returns the string to insert when a new child control is added to the table. - * Subclasses override this method. - */ - String[] getInsertString (String name, String controlType) { - return null; - } - - /** - * Returns the layout data field names. - * Subclasses override this method. - */ - String [] getLayoutDataFieldNames () { - return new String [] {}; - } - - /** - * Gets the text for the tab folder item. - * Subclasses override this method. - */ - String getTabText () { - return ""; - } - - /** - * Refreshes the composite and draws all controls - * in the layout example. - */ - void refreshLayoutComposite () { - /* Remove children that are already laid out */ - children = layoutComposite.getChildren (); - for (int i = 0; i < children.length; i++) { - children [i].dispose (); - } - /* Add all children listed in the table */ - TableItem [] items = table.getItems (); - children = new Control [items.length]; - String [] itemValues = new String [] { - LayoutExample.getResourceString ("Item", new String [] {"1"}), - LayoutExample.getResourceString ("Item", new String [] {"2"}), - LayoutExample.getResourceString ("Item", new String [] {"3"})}; - for (int i = 0; i < items.length; i++) { - String control = items [i].getText (1); - String controlName = items [i].getText (0); - if (control.equals ("Button")) { - Button button = new Button (layoutComposite, SWT.PUSH); - button.setText (controlName); - children [i] = button; - } else if (control.equals ("Canvas")) { - Canvas canvas = new Canvas (layoutComposite, SWT.BORDER); - children [i] = canvas; - } else if (control.equals ("Combo")) { - Combo combo = new Combo (layoutComposite, SWT.NONE); - combo.setItems (itemValues); - combo.setText (controlName); - children [i] = combo; - } else if (control.equals ("Composite")) { - Composite composite = new Composite (layoutComposite, SWT.BORDER); - children [i] = composite; - } else if (control.equals ("CoolBar")) { - CoolBar coolBar = new CoolBar (layoutComposite, SWT.NONE); - ToolBar toolBar = new ToolBar (coolBar, SWT.BORDER); - ToolItem item = new ToolItem (toolBar, 0); - item.setText (LayoutExample.getResourceString ("Item",new String [] {"1"})); - item = new ToolItem (toolBar, 0); - item.setText (LayoutExample.getResourceString ("Item",new String [] {"2"})); - CoolItem coolItem1 = new CoolItem (coolBar, 0); - coolItem1.setControl (toolBar); - toolBar = new ToolBar (coolBar, SWT.BORDER); - item = new ToolItem (toolBar, 0); - item.setText (LayoutExample.getResourceString ("Item",new String [] {"3"})); - item = new ToolItem (toolBar, 0); - item.setText (LayoutExample.getResourceString ("Item",new String [] {"4"})); - CoolItem coolItem2 = new CoolItem (coolBar, 0); - coolItem2.setControl (toolBar); - Point size = toolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT); - coolItem1.setSize(coolItem1.computeSize (size.x, size.y)); - coolItem2.setSize(coolItem2.computeSize (size.x, size.y)); - coolBar.setSize(coolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - children [i] = coolBar; - } else if (control.equals ("Group")) { - Group group = new Group (layoutComposite, SWT.NONE); - group.setText (controlName); - children [i] = group; - } else if (control.equals ("Label")) { - Label label = new Label (layoutComposite, SWT.NONE); - label.setText (controlName); - children [i] = label; - } else if (control.equals ("Link")) { - Link link = new Link (layoutComposite, SWT.NONE); - link.setText (controlName); - children [i] = link; - } else if (control.equals ("List")) { - List list = new List (layoutComposite, SWT.BORDER); - list.setItems (itemValues); - children [i] = list; - } else if (control.equals ("ProgressBar")) { - ProgressBar progress = new ProgressBar (layoutComposite, SWT.NONE); - progress.setSelection (50); - children [i] = progress; - } else if (control.equals ("Scale")) { - Scale scale = new Scale (layoutComposite, SWT.NONE); - children [i] = scale; - } else if (control.equals ("Slider")) { - Slider slider = new Slider (layoutComposite, SWT.NONE); - children [i] = slider; - } else if (control.equals ("StyledText")) { - StyledText styledText = new StyledText (layoutComposite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - styledText.setText (controlName); - children [i] = styledText; - } else if (control.equals ("Table")) { - Table table = new Table (layoutComposite, SWT.BORDER); - table.setLinesVisible (true); - TableItem item1 = new TableItem (table, 0); - item1.setText (LayoutExample.getResourceString ("Item",new String [] {"1"})); - TableItem item2 = new TableItem (table, 0); - item2.setText (LayoutExample.getResourceString ("Item",new String [] {"2"})); - children [i] = table; - } else if (control.equals ("Text")) { - Text text = new Text (layoutComposite, SWT.BORDER); - text.setText (controlName); - children [i] = text; - } else if (control.equals ("ToolBar")) { - ToolBar toolBar = new ToolBar (layoutComposite, SWT.BORDER); - ToolItem item1 = new ToolItem (toolBar, 0); - item1.setText (LayoutExample.getResourceString ("Item",new String [] {"1"})); - ToolItem item2 = new ToolItem (toolBar, 0); - item2.setText (LayoutExample.getResourceString ("Item",new String [] {"2"})); - children [i] = toolBar; - } else { - Tree tree = new Tree (layoutComposite, SWT.BORDER); - TreeItem item1 = new TreeItem (tree, 0); - item1.setText (LayoutExample.getResourceString ("Item",new String [] {"1"})); - TreeItem item2 = new TreeItem (tree, 0); - item2.setText (LayoutExample.getResourceString ("Item",new String [] {"2"})); - children [i] = tree; - } - } - } - - void resetEditors () { - resetEditors (false); - } - - /** - * Takes information from TableEditors and stores it. - * Subclasses override this method. - */ - void resetEditors (boolean tab) { - } - - /** - * Sets the layout data for the children of the layout. - * Subclasses override this method. - */ - void setLayoutData () { - } - - /** - * Sets the state of the layout. - * Subclasses override this method. - */ - void setLayoutState () { - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/AirbrushTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/AirbrushTool.java deleted file mode 100644 index e42c6f57b5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/AirbrushTool.java +++ /dev/null @@ -1,79 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import java.util.Random; -import org.eclipse.swt.graphics.*; - -/** - * An airbrush tool. - */ -public class AirbrushTool extends ContinuousPaintSession implements PaintTool { - private ToolSettings settings; - private Random random; - private int cachedRadiusSquared; - private int cachedNumPoints; - - /** - * Constructs a Tool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public AirbrushTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - random = new Random(); - setRetriggerTimer(10); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - // compute things we need to know for drawing - settings = toolSettings; - cachedRadiusSquared = settings.airbrushRadius * settings.airbrushRadius; - cachedNumPoints = 314 * settings.airbrushIntensity * cachedRadiusSquared / 250000; - if (cachedNumPoints == 0 && settings.airbrushIntensity != 0) - cachedNumPoints = 1; - } - - /** - * Returns the name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.Airbrush.label"); - } - - /* - * Template method for drawing - */ - protected void render(Point point) { - // Draws a bunch (cachedNumPoints) of random pixels within a specified circle (cachedRadiusSquared). - ContainerFigure cfig = new ContainerFigure(); - - for (int i = 0; i < cachedNumPoints; ++i) { - int randX, randY; - do { - randX = (int) ((random.nextDouble() - 0.5) * settings.airbrushRadius * 2.0); - randY = (int) ((random.nextDouble() - 0.5) * settings.airbrushRadius * 2.0); - } while (randX * randX + randY * randY > cachedRadiusSquared); - cfig.add(new PointFigure(settings.commonForegroundColor, point.x + randX, point.y + randY)); - } - getPaintSurface().drawFigure(cfig); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/BasicPaintSession.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/BasicPaintSession.java deleted file mode 100644 index fc2fdf44f4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/BasicPaintSession.java +++ /dev/null @@ -1,37 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -public abstract class BasicPaintSession implements PaintSession { - /** - * The paint surface - */ - private PaintSurface paintSurface; - - /** - * Constructs a PaintSession. - * - * @param paintSurface the drawing surface to use - */ - protected BasicPaintSession(PaintSurface paintSurface) { - this.paintSurface = paintSurface; - } - - /** - * Returns the paint surface associated with this paint session. - * - * @return the associated PaintSurface - */ - public PaintSurface getPaintSurface() { - return paintSurface; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ContainerFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ContainerFigure.java deleted file mode 100644 index df7753aa59..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ContainerFigure.java +++ /dev/null @@ -1,93 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * Container for Figure objects with stacking preview mechanism. - */ -public class ContainerFigure extends Figure { - private static final int INITIAL_ARRAY_SIZE = 16; - - Figure[] objectStack = null; - int nextIndex = 0; - - /** - * Constructs an empty Container - */ - public ContainerFigure() { - } - /** - * Adds an object to the container for later drawing. - * - * @param object the object to add to the drawing list - */ - public void add(Figure object) { - if (objectStack == null) { - objectStack = new Figure[INITIAL_ARRAY_SIZE]; - } else if (objectStack.length <= nextIndex) { - Figure[] newObjectStack = new Figure[objectStack.length * 2]; - System.arraycopy(objectStack, 0, newObjectStack, 0, objectStack.length); - objectStack = newObjectStack; - } - objectStack[nextIndex] = object; - ++nextIndex; - } - /** - * Determines if the container is empty. - * @return true if the container is empty - */ - public boolean isEmpty() { - return nextIndex == 0; - } - /** - * Adds an object to the container and draws its preview then updates the supplied preview state. - * - * @param object the object to add to the drawing list - * @param gc the GC to draw on - * @param offset the offset to add to virtual coordinates to get display coordinates - * @param rememberedState the state returned by a previous drawPreview() or addAndPreview() - * using this Container, may be null if there was no such previous call - * @return object state that must be passed to erasePreview() later to erase this object - */ -// public Object addAndPreview(Figure object, GC gc, Point offset, Object rememberedState) { -// Object[] stateStack = (Object[]) rememberedState; -// if (stateStack == null) { -// stateStack = new Object[INITIAL_ARRAY_SIZE]; -// } else if (stateStack.length <= nextIndex) { -// Object[] newStateStack = new Object[stateStack.length * 2]; -// System.arraycopy(stateStack, 0, newStateStack, 0, stateStack.length); -// stateStack = newStateStack; -// } -// add(object); -// stateStack[nextIndex - 1] = object.drawPreview(gc, offset); -// return stateStack; -// } - /** - * Clears the container. - * <p> - * Note that erasePreview() cannot be called after this point to erase any previous - * drawPreview()'s. - * </p> - */ - public void clear() { - while (--nextIndex > 0) objectStack[nextIndex] = null; - nextIndex = 0; - } - public void draw(FigureDrawContext fdc) { - for (int i = 0; i < nextIndex; ++i) objectStack[i].draw(fdc); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - for (int i = 0; i < nextIndex; ++i) objectStack[i].addDamagedRegion(fdc, region); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ContinuousPaintSession.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ContinuousPaintSession.java deleted file mode 100644 index b415351a0a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ContinuousPaintSession.java +++ /dev/null @@ -1,234 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * The superclass for paint tools that draw continuously along the path - * traced by the mouse's movement while the button is depressed - */ -public abstract class ContinuousPaintSession extends BasicPaintSession { - /** - * True if a click-drag is in progress. - */ - private boolean dragInProgress = false; - - /** - * A cached Point array for drawing. - */ - private Point[] points = new Point[] { new Point(-1, -1), new Point(-1, -1) }; - - /** - * The time to wait between retriggers in milliseconds. - */ - private int retriggerInterval = 0; - - /** - * The currently valid RetriggerHandler - */ - protected Runnable retriggerHandler = null; - - /** - * Constructs a ContinuousPaintSession. - * - * @param paintSurface the drawing surface to use - */ - protected ContinuousPaintSession(PaintSurface paintSurface) { - super(paintSurface); - } - - /** - * Sets the retrigger timer. - * <p> - * After the timer elapses, if the mouse is still hovering over the same point with the - * drag button pressed, a new render order is issued and the timer is restarted. - * </p> - * @param interval the time in milliseconds to wait between retriggers, 0 to disable - */ - public void setRetriggerTimer(int interval) { - retriggerInterval = interval; - } - - /** - * Activates the tool. - */ - public void beginSession() { - getPaintSurface(). - setStatusMessage(PaintExample.getResourceString("session.ContinuousPaint.message")); - dragInProgress = false; - } - - /** - * Deactivates the tool. - */ - public void endSession() { - abortRetrigger(); - } - - /** - * Aborts the current operation. - */ - public void resetSession() { - abortRetrigger(); - } - - /** - * Handles a mouseDown event. - * - * @param event the mouse event detail information - */ - public final void mouseDown(MouseEvent event) { - if (event.button != 1) return; - if (dragInProgress) return; // spurious event - dragInProgress = true; - - points[0].x = event.x; - points[0].y = event.y; - render(points[0]); - prepareRetrigger(); - } - - /** - * Handles a mouseDoubleClick event. - * - * @param event the mouse event detail information - */ - public final void mouseDoubleClick(MouseEvent event) { - } - - /** - * Handles a mouseUp event. - * - * @param event the mouse event detail information - */ - public final void mouseUp(MouseEvent event) { - if (event.button != 1) return; - if (! dragInProgress) return; // spurious event - abortRetrigger(); - mouseSegmentFinished(event); - dragInProgress = false; - } - - /** - * Handles a mouseMove event. - * - * @param event the mouse event detail information - */ - public final void mouseMove(MouseEvent event) { - final PaintSurface ps = getPaintSurface(); - ps.setStatusCoord(ps.getCurrentPosition()); - if (! dragInProgress) return; - mouseSegmentFinished(event); - prepareRetrigger(); - } - - /** - * Handle a rendering segment - * - * @param event the mouse event detail information - */ - private final void mouseSegmentFinished(MouseEvent event) { - if (points[0].x == -1) return; // spurious event - if (points[0].x != event.x || points[0].y != event.y) { - // draw new segment - points[1].x = event.x; - points[1].y = event.y; - renderContinuousSegment(); - } - } - - /** - * Draws a continuous segment from points[0] to points[1]. - * Assumes points[0] has been drawn already. - * - * @post points[0] will refer to the same point as points[1] - */ - protected void renderContinuousSegment() { - /* A lazy but effective line drawing algorithm */ - final int dX = points[1].x - points[0].x; - final int dY = points[1].y - points[0].y; - int absdX = Math.abs(dX); - int absdY = Math.abs(dY); - - if ((dX == 0) && (dY == 0)) return; - - if (absdY > absdX) { - final int incfpX = (dX << 16) / absdY; - final int incY = (dY > 0) ? 1 : -1; - int fpX = points[0].x << 16; // X in fixedpoint format - - while (--absdY >= 0) { - points[0].y += incY; - points[0].x = (fpX += incfpX) >> 16; - render(points[0]); - } - if (points[0].x == points[1].x) return; - points[0].x = points[1].x; - } else { - final int incfpY = (dY << 16) / absdX; - final int incX = (dX > 0) ? 1 : -1; - int fpY = points[0].y << 16; // Y in fixedpoint format - - while (--absdX >= 0) { - points[0].x += incX; - points[0].y = (fpY += incfpY) >> 16; - render(points[0]); - } - if (points[0].y == points[1].y) return; - points[0].y = points[1].y; - } - render(points[0]); - } - - /** - * Prepare the retrigger timer - */ - private final void prepareRetrigger() { - if (retriggerInterval > 0) { - /* - * timerExec() provides a lightweight mechanism for running code at intervals from within - * the event loop when timing accuracy is not important. - * - * Since it is not possible to cancel a timerExec(), we remember the Runnable that is - * active in order to distinguish the valid one from the stale ones. In practice, - * if the interval is 1/100th of a second, then creating a few hundred new RetriggerHandlers - * each second will not cause a significant performance hit. - */ - Display display = getPaintSurface().getDisplay(); - retriggerHandler = new Runnable() { - public void run() { - if (retriggerHandler == this) { - render(points[0]); - prepareRetrigger(); - } - } - }; - display.timerExec(retriggerInterval, retriggerHandler); - } - } - - /** - * Aborts the retrigger timer - */ - private final void abortRetrigger() { - retriggerHandler = null; - } - - /** - * Template method: Renders a point. - * @param point, the point to render - */ - protected abstract void render(Point point); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/DragPaintSession.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/DragPaintSession.java deleted file mode 100644 index 0401ca2bbb..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/DragPaintSession.java +++ /dev/null @@ -1,136 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.graphics.*; - -/** - * The superclass for paint tools that use click-drag-release motions to - * draw objects. - */ -public abstract class DragPaintSession extends BasicPaintSession { - /** - * True if a click-drag is in progress - */ - private boolean dragInProgress = false; - - /** - * The position of the first click in a click-drag - */ - private Point anchorPosition = new Point(-1, -1); - - /** - * A temporary point - */ - private Point tempPosition = new Point(-1, -1); - - /** - * Constructs a PaintSession. - * - * @param getPaintSurface() the drawing surface to use - */ - protected DragPaintSession(PaintSurface paintSurface) { - super(paintSurface); - } - - /** - * Activates the tool. - */ - public void beginSession() { - getPaintSurface(). - setStatusMessage(PaintExample.getResourceString("session.DragInteractivePaint.message")); - anchorPosition.x = -1; - dragInProgress = false; - } - - /** - * Deactivates the tool. - */ - public void endSession() { - } - - /** - * Resets the tool. - * Aborts any operation in progress. - */ - public void resetSession() { - getPaintSurface().clearRubberbandSelection(); - anchorPosition.x = -1; - dragInProgress = false; - } - - /** - * Handles a mouseDown event. - * - * @param event the mouse event detail information - */ - public void mouseDown(MouseEvent event) { - if (event.button != 1) return; - if (dragInProgress) return; // spurious event - dragInProgress = true; - - anchorPosition.x = event.x; - anchorPosition.y = event.y; - } - - /** - * Handles a mouseDoubleClick event. - * - * @param event the mouse event detail information - */ - public void mouseDoubleClick(MouseEvent event) { - } - - /** - * Handles a mouseUp event. - * - * @param event the mouse event detail information - */ - public void mouseUp(MouseEvent event) { - if (event.button != 1) { - resetSession(); // abort if right or middle mouse button pressed - return; - } - if (! dragInProgress) return; // spurious event - dragInProgress = false; - if (anchorPosition.x == -1) return; // spurious event - - getPaintSurface().commitRubberbandSelection(); - } - - /** - * Handles a mouseMove event. - * - * @param event the mouse event detail information - */ - public void mouseMove(MouseEvent event) { - final PaintSurface ps = getPaintSurface(); - if (! dragInProgress) { - ps.setStatusCoord(ps.getCurrentPosition()); - return; - } - ps.setStatusCoordRange(anchorPosition, ps.getCurrentPosition()); - ps.clearRubberbandSelection(); - tempPosition.x = event.x; - tempPosition.y = event.y; - ps.addRubberbandSelection(createFigure(anchorPosition, tempPosition)); - } - - /** - * Template Method: Creates a Figure for drawing rubberband entities and the final product - * - * @param anchor the anchor point - * @param cursor the point marking the current pointer location - */ - protected abstract Figure createFigure(Point anchor, Point cursor); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/EllipseFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/EllipseFigure.java deleted file mode 100644 index ed07ef20e5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/EllipseFigure.java +++ /dev/null @@ -1,52 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * 2D Ellipse object - */ -public class EllipseFigure extends Figure { - private Color foregroundColor, backgroundColor; - private int lineStyle, x1, y1, x2, y2; - /** - * Constructs an Ellipse - * These objects are defined by any two diametrically opposing corners of a box - * bounding the ellipse. - * - * @param color the color for this object - * @param lineStyle the line style for this object - * @param x1 the virtual X coordinate of the first corner - * @param y1 the virtual Y coordinate of the first corner - * @param x2 the virtual X coordinate of the second corner - * @param y2 the virtual Y coordinate of the second corner - */ - public EllipseFigure(Color foregroundColor, Color backgroundColor, int lineStyle, int x1, int y1, int x2, int y2) { - this.foregroundColor = foregroundColor; - this.backgroundColor = backgroundColor; - this.lineStyle = lineStyle; - this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - } - public void draw(FigureDrawContext fdc) { - Rectangle r = fdc.toClientRectangle(x1, y1, x2, y2); - fdc.gc.setForeground(foregroundColor); - fdc.gc.setBackground(backgroundColor); - fdc.gc.setLineStyle(lineStyle); - fdc.gc.drawOval(r.x, r.y, r.width - 1, r.height - 1); - fdc.gc.setLineStyle(SWT.LINE_SOLID); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/EllipseTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/EllipseTool.java deleted file mode 100644 index 6611c76d57..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/EllipseTool.java +++ /dev/null @@ -1,63 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * A drawing tool. - */ -public class EllipseTool extends DragPaintSession implements PaintTool { - private ToolSettings settings; - - /** - * Constructs a EllipseTool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public EllipseTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.Ellipse.label"); - } - - /* - * Template methods for drawing - */ - protected Figure createFigure(Point a, Point b) { - ContainerFigure container = new ContainerFigure(); - if (settings.commonFillType != ToolSettings.ftNone) - container.add(new SolidEllipseFigure(settings.commonBackgroundColor, a.x, a.y, b.x, b.y)); - if (settings.commonFillType != ToolSettings.ftSolid) - container.add(new EllipseFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle, - a.x, a.y, b.x, b.y)); - return container; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/Figure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/Figure.java deleted file mode 100644 index 7fce7e624e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/Figure.java +++ /dev/null @@ -1,38 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * Superinterface for all drawing objects. - * All drawing objects know how to render themselved to the screen and can draw a - * temporary version of themselves for previewing the general appearance of the - * object onscreen before it gets committed. - */ -public abstract class Figure { - /** - * Draws this object. - * - * @param fdc a parameter block specifying drawing-related information - */ - public abstract void draw(FigureDrawContext fdc); - - /** - * Computes the damaged screen region caused by drawing this object (imprecise), then - * appends it to the supplied region. - * - * @param fdc a parameter block specifying drawing-related information - * @param region a region to which additional damage areas will be added - */ - public abstract void addDamagedRegion(FigureDrawContext fdc, Region region); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/FigureDrawContext.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/FigureDrawContext.java deleted file mode 100644 index c4ab18df58..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/FigureDrawContext.java +++ /dev/null @@ -1,40 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -public class FigureDrawContext { - /* - * <p> - * The GC must be set up as follows - * (it will be returned to this state upon completion of drawing operations) - * <ul> - * <li>setXORMode(false) - * </ul> - * </p> - */ - public GC gc = null; - public int xOffset = 0, yOffset = 0; // substract to get GC coords - public int xScale = 1, yScale = 1; - - public Rectangle toClientRectangle(int x1, int y1, int x2, int y2) { - return new Rectangle( - Math.min(x1, x2) * xScale - xOffset, - Math.min(y1, y2) * yScale - yOffset, - (Math.abs(x2 - x1) + 1) * xScale, - (Math.abs(y2 - y1) + 1) * yScale); - } - public Point toClientPoint(int x, int y) { - return new Point(x * xScale - xOffset, y * yScale - yOffset); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/LineFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/LineFigure.java deleted file mode 100644 index 023fd19e85..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/LineFigure.java +++ /dev/null @@ -1,52 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * 2D Line object - */ -public class LineFigure extends Figure { - private Color foregroundColor, backgroundColor; - private int lineStyle, x1, y1, x2, y2; - /** - * Constructs a Line - * These objects are defined by their two end-points. - * - * @param color the color for this object - * @param lineStyle the line style for this object - * @param x1 the virtual X coordinate of the first end-point - * @param y1 the virtual Y coordinate of the first end-point - * @param x2 the virtual X coordinate of the second end-point - * @param y2 the virtual Y coordinate of the second end-point - */ - public LineFigure(Color foregroundColor, Color backgroundColor, int lineStyle, int x1, int y1, int x2, int y2) { - this.foregroundColor = foregroundColor; - this.backgroundColor = backgroundColor; - this.lineStyle = lineStyle; - this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - } - public void draw(FigureDrawContext fdc) { - Point p1 = fdc.toClientPoint(x1, y1); - Point p2 = fdc.toClientPoint(x2, y2); - fdc.gc.setForeground(foregroundColor); - fdc.gc.setBackground(backgroundColor); - fdc.gc.setLineStyle(lineStyle); - fdc.gc.drawLine(p1.x, p1.y, p2.x, p2.y); - fdc.gc.setLineStyle(SWT.LINE_SOLID); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/LineTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/LineTool.java deleted file mode 100644 index e8a64a2dea..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/LineTool.java +++ /dev/null @@ -1,58 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * A line drawing tool - */ -public class LineTool extends DragPaintSession implements PaintTool { - private ToolSettings settings; - - /** - * Constructs a LineTool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public LineTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.Line.label"); - } - - /* - * Template methods for drawing - */ - protected Figure createFigure(Point a, Point b) { - return new LineFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle, - a.x, a.y, b.x, b.y); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintExample.java deleted file mode 100644 index 19a10a4597..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintExample.java +++ /dev/null @@ -1,584 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.accessibility.*; - -import java.io.*; -import java.text.*; -import java.util.*; - -public class PaintExample { - private static ResourceBundle resourceBundle = - ResourceBundle.getBundle("examples_paint"); - private Composite mainComposite; - private Canvas activeForegroundColorCanvas; - private Canvas activeBackgroundColorCanvas; - private Color paintColorBlack, paintColorWhite; // alias for paintColors[0] and [1] - private Color[] paintColors; - private Font paintDefaultFont; // do not free - private static final int numPaletteRows = 3; - private static final int numPaletteCols = 50; - private ToolSettings toolSettings; // current active settings - private PaintSurface paintSurface; // paint surface for drawing - - static final int Pencil_tool = 0; - static final int Airbrush_tool = 1; - static final int Line_tool = 2; - static final int PolyLine_tool = 3; - static final int Rectangle_tool = 4; - static final int RoundedRectangle_tool = 5; - static final int Ellipse_tool = 6; - static final int Text_tool = 7; - static final int None_fill = 8; - static final int Outline_fill = 9; - static final int Solid_fill = 10; - static final int Solid_linestyle = 11; - static final int Dash_linestyle = 12; - static final int Dot_linestyle = 13; - static final int DashDot_linestyle = 14; - static final int Font_options = 15; - - static final int Default_tool = Pencil_tool; - static final int Default_fill = None_fill; - static final int Default_linestyle = Solid_linestyle; - - public static final Tool[] tools = { - new Tool(Pencil_tool, "Pencil", "tool", SWT.RADIO), - new Tool(Airbrush_tool, "Airbrush", "tool", SWT.RADIO), - new Tool(Line_tool, "Line", "tool", SWT.RADIO), - new Tool(PolyLine_tool, "PolyLine", "tool", SWT.RADIO), - new Tool(Rectangle_tool, "Rectangle", "tool", SWT.RADIO), - new Tool(RoundedRectangle_tool, "RoundedRectangle", "tool", SWT.RADIO), - new Tool(Ellipse_tool, "Ellipse", "tool", SWT.RADIO), - new Tool(Text_tool, "Text", "tool", SWT.RADIO), - new Tool(None_fill, "None", "fill", SWT.RADIO, new Integer(ToolSettings.ftNone)), - new Tool(Outline_fill, "Outline", "fill", SWT.RADIO, new Integer(ToolSettings.ftOutline)), - new Tool(Solid_fill, "Solid", "fill", SWT.RADIO, new Integer(ToolSettings.ftSolid)), - new Tool(Solid_linestyle, "Solid", "linestyle", SWT.RADIO, new Integer(SWT.LINE_SOLID)), - new Tool(Dash_linestyle, "Dash", "linestyle", SWT.RADIO, new Integer(SWT.LINE_DASH)), - new Tool(Dot_linestyle, "Dot", "linestyle", SWT.RADIO, new Integer(SWT.LINE_DOT)), - new Tool(DashDot_linestyle, "DashDot", "linestyle", SWT.RADIO, new Integer(SWT.LINE_DASHDOT)), - new Tool(Font_options, "Font", "options", SWT.PUSH) - }; - - /** - * Creates an instance of a PaintExample embedded inside - * the supplied parent Composite. - * - * @param parent the container of the example - */ - public PaintExample(Composite parent) { - mainComposite = parent; - initResources(); - initActions(); - init(); - } - - /** - * Invokes as a standalone program. - */ - public static void main(String[] args) { - Display display = new Display(); - Shell shell = new Shell(display); - shell.setText(getResourceString("window.title")); - shell.setLayout(new GridLayout()); - PaintExample instance = new PaintExample(shell); - instance.createToolBar(shell); - Composite composite = new Composite(shell, SWT.NONE); - composite.setLayout(new FillLayout()); - composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - instance.createGUI(composite); - instance.setDefaults(); - setShellSize(display, shell); - shell.open(); - while (! shell.isDisposed()) { - if (! display.readAndDispatch()) display.sleep(); - } - instance.dispose(); - } - - /** - * Creates the toolbar. - * Note: Only called by standalone. - */ - private void createToolBar(Composite parent) { - ToolBar toolbar = new ToolBar (parent, SWT.NONE); - String group = null; - for (int i = 0; i < tools.length; i++) { - Tool tool = tools[i]; - if (group != null && !tool.group.equals(group)) { - new ToolItem (toolbar, SWT.SEPARATOR); - } - group = tool.group; - ToolItem item = addToolItem(toolbar, tool); - if (i == Default_tool || i == Default_fill || i == Default_linestyle) item.setSelection(true); - } - } - - /** - * Adds a tool item to the toolbar. - * Note: Only called by standalone. - */ - private ToolItem addToolItem(final ToolBar toolbar, final Tool tool) { - final String id = tool.group + '.' + tool.name; - ToolItem item = new ToolItem (toolbar, tool.type); - item.setText (getResourceString(id + ".label")); - item.setToolTipText(getResourceString(id + ".tooltip")); - item.setImage(tool.image); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - tool.action.run(); - } - }); - final int childID = toolbar.indexOf(item); - toolbar.getAccessible().addAccessibleListener(new AccessibleAdapter() { - public void getName(org.eclipse.swt.accessibility.AccessibleEvent e) { - if (e.childID == childID) { - e.result = getResourceString(id + ".description"); - } - } - }); - return item; - } - - /** - * Sets the default tool item states. - */ - public void setDefaults() { - setPaintTool(Default_tool); - setFillType(Default_fill); - setLineStyle(Default_linestyle); - setForegroundColor(paintColorBlack); - setBackgroundColor(paintColorWhite); - } - - /** - * Creates the GUI. - */ - public void createGUI(Composite parent) { - GridLayout gridLayout; - GridData gridData; - - /*** Create principal GUI layout elements ***/ - Composite displayArea = new Composite(parent, SWT.NONE); - gridLayout = new GridLayout(); - gridLayout.numColumns = 1; - displayArea.setLayout(gridLayout); - - // Creating these elements here avoids the need to instantiate the GUI elements - // in strict layout order. The natural layout ordering is an artifact of using - // SWT layouts, but unfortunately it is not the same order as that required to - // instantiate all of the non-GUI application elements to satisfy referential - // dependencies. It is possible to reorder the initialization to some extent, but - // this can be very tedious. - - // paint canvas - final Canvas paintCanvas = new Canvas(displayArea, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | - SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL); - paintCanvas.setLayoutData(gridData); - paintCanvas.setBackground(paintColorWhite); - - // color selector frame - final Composite colorFrame = new Composite(displayArea, SWT.NONE); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); - colorFrame.setLayoutData(gridData); - - // tool settings frame - final Composite toolSettingsFrame = new Composite(displayArea, SWT.NONE); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); - toolSettingsFrame.setLayoutData(gridData); - - // status text - final Text statusText = new Text(displayArea, SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY); - gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); - statusText.setLayoutData(gridData); - - /*** Create the remaining application elements inside the principal GUI layout elements ***/ - // paintSurface - paintSurface = new PaintSurface(paintCanvas, statusText, paintColorWhite); - - // finish initializing the tool data - tools[Pencil_tool].data = new PencilTool(toolSettings, paintSurface); - tools[Airbrush_tool].data = new AirbrushTool(toolSettings, paintSurface); - tools[Line_tool].data = new LineTool(toolSettings, paintSurface); - tools[PolyLine_tool].data = new PolyLineTool(toolSettings, paintSurface); - tools[Rectangle_tool].data = new RectangleTool(toolSettings, paintSurface); - tools[RoundedRectangle_tool].data = new RoundedRectangleTool(toolSettings, paintSurface); - tools[Ellipse_tool].data = new EllipseTool(toolSettings, paintSurface); - tools[Text_tool].data = new TextTool(toolSettings, paintSurface); - - // colorFrame - gridLayout = new GridLayout(); - gridLayout.numColumns = 3; - gridLayout.marginHeight = 0; - gridLayout.marginWidth = 0; - colorFrame.setLayout(gridLayout); - - // activeForegroundColorCanvas, activeBackgroundColorCanvas - activeForegroundColorCanvas = new Canvas(colorFrame, SWT.BORDER); - gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gridData.heightHint = 24; - gridData.widthHint = 24; - activeForegroundColorCanvas.setLayoutData(gridData); - - activeBackgroundColorCanvas = new Canvas(colorFrame, SWT.BORDER); - gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gridData.heightHint = 24; - gridData.widthHint = 24; - activeBackgroundColorCanvas.setLayoutData(gridData); - - // paletteCanvas - final Canvas paletteCanvas = new Canvas(colorFrame, SWT.BORDER | SWT.NO_BACKGROUND); - gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.heightHint = 24; - paletteCanvas.setLayoutData(gridData); - paletteCanvas.addListener(SWT.MouseDown, new Listener() { - public void handleEvent(Event e) { - Rectangle bounds = paletteCanvas.getClientArea(); - Color color = getColorAt(bounds, e.x, e.y); - - if (e.button == 1) setForegroundColor(color); - else setBackgroundColor(color); - } - private Color getColorAt(Rectangle bounds, int x, int y) { - if (bounds.height <= 1 && bounds.width <= 1) return paintColorWhite; - final int row = (y - bounds.y) * numPaletteRows / bounds.height; - final int col = (x - bounds.x) * numPaletteCols / bounds.width; - return paintColors[Math.min(Math.max(row * numPaletteCols + col, 0), paintColors.length - 1)]; - } - }); - Listener refreshListener = new Listener() { - public void handleEvent(Event e) { - if (e.gc == null) return; - Rectangle bounds = paletteCanvas.getClientArea(); - for (int row = 0; row < numPaletteRows; ++row) { - for (int col = 0; col < numPaletteCols; ++col) { - final int x = bounds.width * col / numPaletteCols; - final int y = bounds.height * row / numPaletteRows; - final int width = Math.max(bounds.width * (col + 1) / numPaletteCols - x, 1); - final int height = Math.max(bounds.height * (row + 1) / numPaletteRows - y, 1); - e.gc.setBackground(paintColors[row * numPaletteCols + col]); - e.gc.fillRectangle(bounds.x + x, bounds.y + y, width, height); - } - } - } - }; - paletteCanvas.addListener(SWT.Resize, refreshListener); - paletteCanvas.addListener(SWT.Paint, refreshListener); - //paletteCanvas.redraw(); - - // toolSettingsFrame - gridLayout = new GridLayout(); - gridLayout.numColumns = 4; - gridLayout.marginHeight = 0; - gridLayout.marginWidth = 0; - toolSettingsFrame.setLayout(gridLayout); - - Label label = new Label(toolSettingsFrame, SWT.NONE); - label.setText(getResourceString("settings.AirbrushRadius.text")); - - final Scale airbrushRadiusScale = new Scale(toolSettingsFrame, SWT.HORIZONTAL); - airbrushRadiusScale.setMinimum(5); - airbrushRadiusScale.setMaximum(50); - airbrushRadiusScale.setSelection(toolSettings.airbrushRadius); - airbrushRadiusScale.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL)); - airbrushRadiusScale.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - toolSettings.airbrushRadius = airbrushRadiusScale.getSelection(); - updateToolSettings(); - } - }); - - label = new Label(toolSettingsFrame, SWT.NONE); - label.setText(getResourceString("settings.AirbrushIntensity.text")); - - final Scale airbrushIntensityScale = new Scale(toolSettingsFrame, SWT.HORIZONTAL); - airbrushIntensityScale.setMinimum(1); - airbrushIntensityScale.setMaximum(100); - airbrushIntensityScale.setSelection(toolSettings.airbrushIntensity); - airbrushIntensityScale.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL)); - airbrushIntensityScale.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - toolSettings.airbrushIntensity = airbrushIntensityScale.getSelection(); - updateToolSettings(); - } - }); - } - - /** - * Disposes of all resources associated with a particular - * instance of the PaintExample. - */ - public void dispose() { - if (paintSurface != null) paintSurface.dispose(); - if (paintColors != null) { - for (int i = 0; i < paintColors.length; ++i) { - final Color color = paintColors[i]; - if (color != null) color.dispose(); - } - } - paintDefaultFont = null; - paintColors = null; - paintSurface = null; - freeResources(); - } - - /** - * Frees the resource bundle resources. - */ - public void freeResources() { - for (int i = 0; i < tools.length; ++i) { - Tool tool = tools[i]; - final Image image = tool.image; - if (image != null) image.dispose(); - tool.image = null; - } - } - - /** - * Returns the Display. - * - * @return the display we're using - */ - public Display getDisplay() { - return mainComposite.getDisplay(); - } - - /** - * Gets a string from the resource bundle. - * We don't want to crash because of a missing String. - * Returns the key if not found. - */ - public static String getResourceString(String key) { - try { - return resourceBundle.getString(key); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Gets a string from the resource bundle and binds it - * with the given arguments. If the key is not found, - * return the key. - */ - public static String getResourceString(String key, Object[] args) { - try { - return MessageFormat.format(getResourceString(key), args); - } catch (MissingResourceException e) { - return key; - } catch (NullPointerException e) { - return "!" + key + "!"; - } - } - - /** - * Initialize colors, fonts, and tool settings. - */ - private void init() { - Display display = mainComposite.getDisplay(); - - paintColorWhite = new Color(display, 255, 255, 255); - paintColorBlack = new Color(display, 0, 0, 0); - - paintDefaultFont = display.getSystemFont(); - - paintColors = new Color[numPaletteCols * numPaletteRows]; - paintColors[0] = paintColorBlack; - paintColors[1] = paintColorWhite; - for (int i = 2; i < paintColors.length; i++) { - paintColors[i] = new Color(display, - ((i*7)%255),((i*23)%255), ((i*51)%255)); - } - - toolSettings = new ToolSettings(); - toolSettings.commonForegroundColor = paintColorBlack; - toolSettings.commonBackgroundColor = paintColorWhite; - toolSettings.commonFont = paintDefaultFont; - } - - /** - * Sets the action field of the tools - */ - private void initActions() { - for (int i = 0; i < tools.length; ++i) { - final Tool tool = tools[i]; - String group = tool.group; - if (group.equals("tool")) { - tool.action = new Runnable() { - public void run() { - setPaintTool(tool.id); - } - }; - } else if (group.equals("fill")) { - tool.action = new Runnable() { - public void run() { - setFillType(tool.id); - } - }; - } else if (group.equals("linestyle")) { - tool.action = new Runnable() { - public void run() { - setLineStyle(tool.id); - } - }; - } else if (group.equals("options")) { - tool.action = new Runnable() { - public void run() { - FontDialog fontDialog = new FontDialog(paintSurface.getShell(), SWT.PRIMARY_MODAL); - FontData[] fontDatum = toolSettings.commonFont.getFontData(); - if (fontDatum != null && fontDatum.length > 0) { - fontDialog.setFontList(fontDatum); - } - fontDialog.setText(getResourceString("options.Font.dialog.title")); - - paintSurface.hideRubberband(); - FontData fontData = fontDialog.open(); - paintSurface.showRubberband(); - if (fontData != null) { - try { - Font font = new Font(mainComposite.getDisplay(), fontData); - toolSettings.commonFont = font; - updateToolSettings(); - } catch (SWTException ex) { - } - } - } - }; - } - } - } - - /** - * Loads the image resources. - */ - public void initResources() { - final Class clazz = PaintExample.class; - if (resourceBundle != null) { - try { - for (int i = 0; i < tools.length; ++i) { - Tool tool = tools[i]; - String id = tool.group + '.' + tool.name; - InputStream sourceStream = clazz.getResourceAsStream(getResourceString(id + ".image")); - ImageData source = new ImageData(sourceStream); - ImageData mask = source.getTransparencyMask(); - tool.image = new Image(null, source, mask); - try { - sourceStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return; - } catch (Throwable t) { - } - } - String error = (resourceBundle != null) ? - getResourceString("error.CouldNotLoadResources") : - "Unable to load resources"; - freeResources(); - throw new RuntimeException(error); - } - - /** - * Grabs input focus. - */ - public void setFocus() { - mainComposite.setFocus(); - } - - /** - * Sets the tool foreground color. - * - * @param color the new color to use - */ - public void setForegroundColor(Color color) { - if (activeForegroundColorCanvas != null) - activeForegroundColorCanvas.setBackground(color); - toolSettings.commonForegroundColor = color; - updateToolSettings(); - } - - /** - * Set the tool background color. - * - * @param color the new color to use - */ - public void setBackgroundColor(Color color) { - if (activeBackgroundColorCanvas != null) - activeBackgroundColorCanvas.setBackground(color); - toolSettings.commonBackgroundColor = color; - updateToolSettings(); - } - - /** - * Selects a tool given its ID. - */ - public void setPaintTool(int id) { - PaintTool paintTool = (PaintTool) tools[id].data; - paintSurface.setPaintSession(paintTool); - updateToolSettings(); - } - - /** - * Selects a filltype given its ID. - */ - public void setFillType(int id) { - Integer fillType = (Integer) tools[id].data; - toolSettings.commonFillType = fillType.intValue(); - updateToolSettings(); - } - - /** - * Selects line type given its ID. - */ - public void setLineStyle(int id) { - Integer lineType = (Integer) tools[id].data; - toolSettings.commonLineStyle = lineType.intValue(); - updateToolSettings(); - } - - /** - * Sets the size of the shell to it's "packed" size, - * unless that makes it bigger than the display, - * in which case set it to 9/10 of display size. - */ - private static void setShellSize (Display display, Shell shell) { - Rectangle bounds = display.getBounds(); - Point size = shell.computeSize (SWT.DEFAULT, SWT.DEFAULT); - if (size.x > bounds.width) size.x = bounds.width * 9 / 10; - if (size.y > bounds.height) size.y = bounds.height * 9 / 10; - shell.setSize (size); - } - - /** - * Notifies the tool that its settings have changed. - */ - private void updateToolSettings() { - final PaintTool activePaintTool = paintSurface.getPaintTool(); - if (activePaintTool == null) return; - - activePaintTool.endSession(); - activePaintTool.set(toolSettings); - activePaintTool.beginSession(); - } -} - diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintSession.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintSession.java deleted file mode 100644 index 2fa86f5752..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintSession.java +++ /dev/null @@ -1,58 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.events.*; - -/** - * Manages an interactive paint session. - * Note that the coordinates received via the listener interfaces are virtualized to zero-origin - * relative to the painting surface. - */ -public interface PaintSession extends MouseListener, MouseMoveListener { - /** - * Returns the paint surface associated with this paint session - * - * @return the associated PaintSurface - */ - public PaintSurface getPaintSurface(); - - /** - * Activates the session. - * - * Note: When overriding this method, call super.beginSession() at method start. - */ - public abstract void beginSession(); - - /** - * Deactivates the session. - * - * Note: When overriding this method, call super.endSession() at method exit. - */ - public abstract void endSession(); - - /** - * Resets the session. - * Aborts any operation in progress. - * - * Note: When overriding this method, call super.resetSession() at method exit. - */ - public abstract void resetSession(); - - - /** - * Returns the name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName(); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintSurface.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintSurface.java deleted file mode 100644 index 6866409b83..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintSurface.java +++ /dev/null @@ -1,521 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -/** - * Manages a simple drawing surface. - */ -public class PaintSurface { - private Point currentPosition = new Point(0, 0); - private Canvas paintCanvas; - - private PaintSession paintSession; - private Image image; - private Image paintImage; // buffer for refresh blits - private int imageWidth, imageHeight; - private int visibleWidth, visibleHeight; - - private FigureDrawContext displayFDC = new FigureDrawContext(); - private FigureDrawContext imageFDC = new FigureDrawContext(); - private FigureDrawContext paintFDC = new FigureDrawContext(); - - /* Rubberband */ - private ContainerFigure rubberband = new ContainerFigure(); - // the active rubberband selection - private int rubberbandHiddenNestingCount = 0; - // always >= 0, if > 0 rubberband has been hidden - - /* Status */ - private Text statusText; - private String statusActionInfo, statusMessageInfo, statusCoordInfo; - - /** - * Constructs a PaintSurface. - * <p> - * paintCanvas must have SWT.NO_REDRAW_RESIZE and SWT.NO_BACKGROUND styles, - * and may have SWT.V_SCROLL and/or SWT.H_SCROLL. - * </p> - * @param paintCanvas the Canvas object in which to render - * @param paintStatus the PaintStatus object to use for providing user feedback - * @param fillColor the color to fill the canvas with initially - */ - public PaintSurface(Canvas paintCanvas, Text statusText, Color fillColor) { - this.paintCanvas = paintCanvas; - this.statusText = statusText; - clearStatus(); - - /* Set up the drawing surface */ - Rectangle displayRect = paintCanvas.getDisplay().getClientArea(); - imageWidth = displayRect.width; - imageHeight = displayRect.height; - image = new Image(paintCanvas.getDisplay(), imageWidth, imageHeight); - - imageFDC.gc = new GC(image); - imageFDC.gc.setBackground(fillColor); - imageFDC.gc.fillRectangle(0, 0, imageWidth, imageHeight); - displayFDC.gc = new GC(paintCanvas); - - /* Initialize the session */ - setPaintSession(null); - - /* Add our listeners */ - paintCanvas.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - displayFDC.gc.dispose(); - } - }); - paintCanvas.addMouseListener(new MouseAdapter() { - public void mouseDown(MouseEvent event) { - processMouseEventCoordinates(event); - if (paintSession != null) paintSession.mouseDown(event); - } - public void mouseUp(MouseEvent event) { - processMouseEventCoordinates(event); - if (paintSession != null) paintSession.mouseUp(event); - } - public void mouseDoubleClick(MouseEvent event) { - processMouseEventCoordinates(event); - if (paintSession != null) paintSession.mouseDoubleClick(event); - } - }); - paintCanvas.addMouseMoveListener(new MouseMoveListener() { - public void mouseMove(MouseEvent event) { - processMouseEventCoordinates(event); - if (paintSession != null) paintSession.mouseMove(event); - } - }); - paintCanvas.addPaintListener(new PaintListener() { - public void paintControl(PaintEvent event) { - if (rubberband.isEmpty()) { - // Nothing to merge, so we just refresh - event.gc.drawImage(image, - displayFDC.xOffset + event.x, displayFDC.yOffset + event.y, event.width, event.height, - event.x, event.y, event.width, event.height); - } else { - /* - * Avoid flicker when merging overlayed objects by constructing the image on - * a backbuffer first, then blitting it to the screen. - */ - // Check that the backbuffer is large enough - if (paintImage != null) { - Rectangle rect = paintImage.getBounds(); - if ((event.width + event.x > rect.width) || - (event.height + event.y > rect.height)) { - paintFDC.gc.dispose(); - paintImage.dispose(); - paintImage = null; - } - } - if (paintImage == null) { - Display display = getDisplay(); - Rectangle rect = display.getClientArea(); - paintImage = new Image(display, - Math.max(rect.width, event.width + event.x), - Math.max(rect.height, event.height + event.y)); - paintFDC.gc = new GC(paintImage); - } - // Setup clipping and the FDC - Region clipRegion = new Region(); - event.gc.getClipping(clipRegion); - paintFDC.gc.setClipping(clipRegion); - clipRegion.dispose(); - - paintFDC.xOffset = displayFDC.xOffset; - paintFDC.yOffset = displayFDC.yOffset; - paintFDC.xScale = displayFDC.xScale; - paintFDC.yScale = displayFDC.yScale; - - // Merge the overlayed objects into the image, then blit - paintFDC.gc.drawImage(image, - displayFDC.xOffset + event.x, displayFDC.yOffset + event.y, event.width, event.height, - event.x, event.y, event.width, event.height); - rubberband.draw(paintFDC); - event.gc.drawImage(paintImage, - event.x, event.y, event.width, event.height, - event.x, event.y, event.width, event.height); - } - } - }); - paintCanvas.addControlListener(new ControlAdapter() { - public void controlResized(ControlEvent event) { - handleResize(); - } - }); - - /* Set up the paint canvas scroll bars */ - ScrollBar horizontal = paintCanvas.getHorizontalBar(); - horizontal.setVisible(true); - horizontal.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollHorizontally((ScrollBar)event.widget); - } - }); - ScrollBar vertical = paintCanvas.getVerticalBar(); - vertical.setVisible(true); - vertical.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - scrollVertically((ScrollBar)event.widget); - } - }); - handleResize(); - } - - /** - * Disposes of the PaintSurface's resources. - */ - public void dispose() { - imageFDC.gc.dispose(); - image.dispose(); - if (paintImage != null) { - paintImage.dispose(); - paintFDC.gc.dispose(); - } - - currentPosition = null; - paintCanvas = null; - paintSession = null; - image = null; - paintImage = null; - displayFDC = null; - imageFDC = null; - paintFDC = null; - rubberband = null; - statusText = null; - statusActionInfo = null; - statusMessageInfo = null; - statusCoordInfo = null; - } - - /** - * Called when we must grab focus. - */ - public void setFocus() { - paintCanvas.setFocus(); - } - - /** - * Returns the Display on which the PaintSurface resides. - * @return the Display - */ - public Display getDisplay() { - return paintCanvas.getDisplay(); - } - - /** - * Returns the Shell in which the PaintSurface resides. - * @return the Shell - */ - public Shell getShell() { - return paintCanvas.getShell(); - } - - /** - * Sets the current paint session. - * <p> - * If oldPaintSession != paintSession calls oldPaintSession.end() - * and paintSession.begin() - * </p> - * - * @param paintSession the paint session to activate; null to disable all sessions - */ - public void setPaintSession(PaintSession paintSession) { - if (this.paintSession != null) { - if (this.paintSession == paintSession) return; - this.paintSession.endSession(); - } - this.paintSession = paintSession; - clearStatus(); - if (paintSession != null) { - setStatusAction(paintSession.getDisplayName()); - paintSession.beginSession(); - } else { - setStatusAction(PaintExample.getResourceString("tool.Null.label")); - setStatusMessage(PaintExample.getResourceString("session.Null.message")); - } - } - - /** - * Returns the current paint session. - * - * @return the current paint session, null if none is active - */ - public PaintSession getPaintSession() { - return paintSession; - } - - /** - * Returns the current paint tool. - * - * @return the current paint tool, null if none is active (though some other session - * might be) - */ - public PaintTool getPaintTool() { - return (paintSession != null && paintSession instanceof PaintTool) ? - (PaintTool)paintSession : null; - } - - /** - * Returns the current position in an interactive operation. - * - * @return the last known position of the pointer - */ - public Point getCurrentPosition() { - return currentPosition; - } - - /** - * Draws a Figure object to the screen and to the backing store permanently. - * - * @param object the object to draw onscreen - */ - public void drawFigure(Figure object) { - object.draw(imageFDC); - object.draw(displayFDC); - } - - /** - * Adds a Figure object to the active rubberband selection. - * <p> - * This object will be drawn to the screen as a preview and refreshed appropriately - * until the selection is either cleared or committed. - * </p> - * - * @param object the object to add to the selection - */ - public void addRubberbandSelection(Figure object) { - rubberband.add(object); - if (! isRubberbandHidden()) object.draw(displayFDC); - } - - /** - * Clears the active rubberband selection. - * <p> - * Erases any rubberband objects on the screen then clears the selection. - * </p> - */ - public void clearRubberbandSelection() { - if (! isRubberbandHidden()) { - Region region = new Region(); - rubberband.addDamagedRegion(displayFDC, region); - Rectangle r = region.getBounds(); - paintCanvas.redraw(r.x, r.y, r.width, r.height, true); - region.dispose(); - } - rubberband.clear(); - - } - - /** - * Commits the active rubberband selection. - * <p> - * Redraws any rubberband objects on the screen as permanent objects then clears the selection. - * </p> - */ - public void commitRubberbandSelection() { - rubberband.draw(imageFDC); - if (isRubberbandHidden()) rubberband.draw(displayFDC); - rubberband.clear(); - } - - /** - * Hides the rubberband (but does not eliminate it). - * <p> - * Increments by one the rubberband "hide" nesting count. The rubberband - * is hidden from view (but remains active) if it wasn't already hidden. - * </p> - */ - public void hideRubberband() { - if (rubberbandHiddenNestingCount++ <= 0) { - Region region = new Region(); - rubberband.addDamagedRegion(displayFDC, region); - Rectangle r = region.getBounds(); - paintCanvas.redraw(r.x, r.y, r.width, r.height, true); - region.dispose(); - } - } - - /** - * Shows (un-hides) the rubberband. - * <p> - * Decrements by one the rubberband "hide" nesting count. The rubberband - * is only made visible when showRubberband() has been called once for each - * previous hideRubberband(). It is not permitted to call showRubberband() if - * the rubber band is not presently hidden. - * </p> - */ - public void showRubberband() { - if (rubberbandHiddenNestingCount <= 0) - throw new IllegalStateException("rubberbandHiddenNestingCount > 0"); - if (--rubberbandHiddenNestingCount == 0) { - rubberband.draw(displayFDC); - } - } - - /** - * Determines if the rubberband is hidden. - * - * @return true iff the rubber is hidden - */ - public boolean isRubberbandHidden() { - return rubberbandHiddenNestingCount > 0; - } - - /** - * Handles a horizontal scroll event - * - * @param scrollbar the horizontal scroll bar that posted this event - */ - public void scrollHorizontally(ScrollBar scrollBar) { - if (image == null) return; - if (imageWidth > visibleWidth) { - final int oldOffset = displayFDC.xOffset; - final int newOffset = Math.min(scrollBar.getSelection(), imageWidth - visibleWidth); - if (oldOffset != newOffset) { - paintCanvas.update(); - displayFDC.xOffset = newOffset; - paintCanvas.scroll(Math.max(oldOffset - newOffset, 0), 0, Math.max(newOffset - oldOffset, 0), 0, - visibleWidth, visibleHeight, false); - } - } - } - - /** - * Handles a vertical scroll event - * - * @param scrollbar the vertical scroll bar that posted this event - */ - public void scrollVertically(ScrollBar scrollBar) { - if (image == null) return; - if (imageHeight > visibleHeight) { - final int oldOffset = displayFDC.yOffset; - final int newOffset = Math.min(scrollBar.getSelection(), imageHeight - visibleHeight); - if (oldOffset != newOffset) { - paintCanvas.update(); - displayFDC.yOffset = newOffset; - paintCanvas.scroll(0, Math.max(oldOffset - newOffset, 0), 0, Math.max(newOffset - oldOffset, 0), - visibleWidth, visibleHeight, false); - } - } - } - - /** - * Handles resize events - */ - private void handleResize() { - paintCanvas.update(); - - Rectangle visibleRect = paintCanvas.getClientArea(); - visibleWidth = visibleRect.width; - visibleHeight = visibleRect.height; - - ScrollBar horizontal = paintCanvas.getHorizontalBar(); - if (horizontal != null) { - displayFDC.xOffset = Math.min(horizontal.getSelection(), imageWidth - visibleWidth); - if (imageWidth <= visibleWidth) { - horizontal.setEnabled(false); - horizontal.setSelection(0); - } else { - horizontal.setEnabled(true); - horizontal.setValues(displayFDC.xOffset, 0, imageWidth, visibleWidth, - 8, visibleWidth); - } - } - - ScrollBar vertical = paintCanvas.getVerticalBar(); - if (vertical != null) { - displayFDC.yOffset = Math.min(vertical.getSelection(), imageHeight - visibleHeight); - if (imageHeight <= visibleHeight) { - vertical.setEnabled(false); - vertical.setSelection(0); - } else { - vertical.setEnabled(true); - vertical.setValues(displayFDC.yOffset, 0, imageHeight, visibleHeight, - 8, visibleHeight); - } - } - } - - /** - * Virtualizes MouseEvent coordinates and stores the current position. - */ - private void processMouseEventCoordinates(MouseEvent event) { - currentPosition.x = event.x = - Math.min(Math.max(event.x, 0), visibleWidth - 1) + displayFDC.xOffset; - currentPosition.y = event.y = - Math.min(Math.max(event.y, 0), visibleHeight - 1) + displayFDC.yOffset; - } - - /** - * Clears the status bar. - */ - public void clearStatus() { - statusActionInfo = ""; - statusMessageInfo = ""; - statusCoordInfo = ""; - updateStatus(); - } - - /** - * Sets the status bar action text. - * - * @param action the action in progress, null to clear - */ - public void setStatusAction(String action) { - statusActionInfo = (action != null) ? action : ""; - updateStatus(); - } - - /** - * Sets the status bar message text. - * - * @param message the message to display, null to clear - */ - public void setStatusMessage(String message) { - statusMessageInfo = (message != null) ? message : ""; - updateStatus(); - } - - /** - * Sets the coordinates in the status bar. - * - * @param coord the coordinates to display, null to clear - */ - public void setStatusCoord(Point coord) { - statusCoordInfo = (coord != null) ? PaintExample.getResourceString("status.Coord.format", new Object[] - { new Integer(coord.x), new Integer(coord.y)}) : ""; - updateStatus(); - } - - /** - * Sets the coordinate range in the status bar. - * - * @param a the "from" coordinate, must not be null - * @param b the "to" coordinate, must not be null - */ - public void setStatusCoordRange(Point a, Point b) { - statusCoordInfo = PaintExample.getResourceString("status.CoordRange.format", new Object[] - { new Integer(a.x), new Integer(a.y), new Integer(b.x), new Integer(b.y)}); - updateStatus(); - } - - /** - * Updates the display. - */ - private void updateStatus() { - statusText.setText( - PaintExample.getResourceString("status.Bar.format", new Object[] - { statusActionInfo, statusMessageInfo, statusCoordInfo })); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintTool.java deleted file mode 100644 index ad5614ed40..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PaintTool.java +++ /dev/null @@ -1,20 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - -public interface PaintTool extends PaintSession { - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PencilTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PencilTool.java deleted file mode 100644 index 167e503eef..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PencilTool.java +++ /dev/null @@ -1,58 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * A pencil tool. - */ -public class PencilTool extends ContinuousPaintSession implements PaintTool { - private ToolSettings settings; - - /** - * Constructs a pencil tool. - * - * @param toolSettings the new tool settings - * @param getPaintSurface() the PaintSurface we will render on. - */ - public PencilTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns the name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.Pencil.label"); - } - - /* - * Template method for drawing - */ - public void render(final Point point) { - final PaintSurface ps = getPaintSurface(); - ps.drawFigure(new PointFigure(settings.commonForegroundColor, point.x, point.y)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PointFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PointFigure.java deleted file mode 100644 index d5283172f8..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PointFigure.java +++ /dev/null @@ -1,40 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * 2D Point object - */ -public class PointFigure extends Figure { - private Color color; - private int x, y; - /** - * Constructs a Point - * - * @param color the color for this object - * @param x the virtual X coordinate of the first end-point - * @param y the virtual Y coordinate of the first end-point - */ - public PointFigure(Color color, int x, int y) { - this.color = color; this.x = x; this.y = y; - } - public void draw(FigureDrawContext fdc) { - Point p = fdc.toClientPoint(x, y); - fdc.gc.setBackground(color); - fdc.gc.fillRectangle(p.x, p.y, 1, 1); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x, y, x, y)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PolyLineTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PolyLineTool.java deleted file mode 100644 index 2498155049..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/PolyLineTool.java +++ /dev/null @@ -1,75 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * A polyline drawing tool. - */ -public class PolyLineTool extends SegmentedPaintSession implements PaintTool { - private ToolSettings settings; - - /** - * Constructs a PolyLineTool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public PolyLineTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns the name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.PolyLine.label"); - } - - /* - * Template methods for drawing - */ - protected Figure createFigure(Point[] points, int numPoints, boolean closed) { - ContainerFigure container = new ContainerFigure(); - if (closed && settings.commonFillType != ToolSettings.ftNone && numPoints >= 3) { - container.add(new SolidPolygonFigure(settings.commonBackgroundColor, points, numPoints)); - } - if (! closed || settings.commonFillType != ToolSettings.ftSolid || numPoints < 3) { - for (int i = 0; i < numPoints - 1; ++i) { - final Point a = points[i]; - final Point b = points[i + 1]; - container.add(new LineFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle, - a.x, a.y, b.x, b.y)); - } - if (closed) { - final Point a = points[points.length - 1]; - final Point b = points[0]; - container.add(new LineFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle, - a.x, a.y, b.x, b.y)); - } - } - return container; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RectangleFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RectangleFigure.java deleted file mode 100644 index 1d80e60328..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RectangleFigure.java +++ /dev/null @@ -1,51 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * 2D Rectangle object - */ -public class RectangleFigure extends Figure { - private Color foregroundColor, backgroundColor; - private int lineStyle, x1, y1, x2, y2; - /** - * Constructs a Rectangle - * These objects are defined by any two diametrically opposing corners. - * - * @param color the color for this object - * @param lineStyle the line style for this object - * @param x1 the virtual X coordinate of the first corner - * @param y1 the virtual Y coordinate of the first corner - * @param x2 the virtual X coordinate of the second corner - * @param y2 the virtual Y coordinate of the second corner - */ - public RectangleFigure(Color foregroundColor, Color backgroundColor, int lineStyle, int x1, int y1, int x2, int y2) { - this.foregroundColor = foregroundColor; - this.backgroundColor = backgroundColor; - this.lineStyle = lineStyle; - this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - } - public void draw(FigureDrawContext fdc) { - Rectangle r = fdc.toClientRectangle(x1, y1, x2, y2); - fdc.gc.setForeground(foregroundColor); - fdc.gc.setBackground(backgroundColor); - fdc.gc.setLineStyle(lineStyle); - fdc.gc.drawRectangle(r.x, r.y, r.width - 1, r.height - 1); - fdc.gc.setLineStyle(SWT.LINE_SOLID); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RectangleTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RectangleTool.java deleted file mode 100644 index 0473bbd011..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RectangleTool.java +++ /dev/null @@ -1,71 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * A drawing tool. - */ -public class RectangleTool extends DragPaintSession implements PaintTool { - private ToolSettings settings; - - /** - * Constructs a RectangleTool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public RectangleTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.Rectangle.label"); - } - - /* - * Template method for drawing - */ - protected Figure createFigure(Point a, Point b) { - switch (settings.commonFillType) { - default: - case ToolSettings.ftNone: - return new RectangleFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle, - a.x, a.y, b.x, b.y); - case ToolSettings.ftSolid: - return new SolidRectangleFigure(settings.commonBackgroundColor, a.x, a.y, b.x, b.y); - case ToolSettings.ftOutline: { - ContainerFigure container = new ContainerFigure(); - container.add(new SolidRectangleFigure(settings.commonBackgroundColor, a.x, a.y, b.x, b.y)); - container.add(new RectangleFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle, - a.x, a.y, b.x, b.y)); - return container; - } - } - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RoundedRectangleFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RoundedRectangleFigure.java deleted file mode 100644 index 4c71d67263..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RoundedRectangleFigure.java +++ /dev/null @@ -1,53 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * 2D Rectangle object - */ -public class RoundedRectangleFigure extends Figure { - private Color foregroundColor, backgroundColor; - private int lineStyle, x1, y1, x2, y2, diameter; - /** - * Constructs a Rectangle - * These objects are defined by any two diametrically opposing corners. - * - * @param color the color for this object - * @param lineStyle the line style for this object - * @param x1 the virtual X coordinate of the first corner - * @param y1 the virtual Y coordinate of the first corner - * @param x2 the virtual X coordinate of the second corner - * @param y2 the virtual Y coordinate of the second corner - * @param diameter the diameter of curvature of all four corners - */ - public RoundedRectangleFigure(Color foregroundColor, Color backgroundColor, int lineStyle, int x1, int y1, int x2, int y2, int diameter) { - this.foregroundColor = foregroundColor; - this.backgroundColor = backgroundColor; - this.lineStyle = lineStyle; - this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - this.diameter = diameter; - } - public void draw(FigureDrawContext fdc) { - Rectangle r = fdc.toClientRectangle(x1, y1, x2, y2); - fdc.gc.setForeground(foregroundColor); - fdc.gc.setBackground(backgroundColor); - fdc.gc.setLineStyle(lineStyle); - fdc.gc.drawRoundRectangle(r.x, r.y, r.width - 1, r.height - 1, diameter, diameter); - fdc.gc.setLineStyle(SWT.LINE_SOLID); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RoundedRectangleTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RoundedRectangleTool.java deleted file mode 100644 index 3b5c06461a..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/RoundedRectangleTool.java +++ /dev/null @@ -1,64 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * A drawing tool. - */ -public class RoundedRectangleTool extends DragPaintSession implements PaintTool { - private ToolSettings settings; - - /** - * Constructs a RoundedRectangleTool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public RoundedRectangleTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.RoundedRectangle.label"); - } - - /* - * Template methods for drawing - */ - protected Figure createFigure(Point a, Point b) { - ContainerFigure container = new ContainerFigure(); - if (settings.commonFillType != ToolSettings.ftNone) - container.add(new SolidRoundedRectangleFigure(settings.commonBackgroundColor, - a.x, a.y, b.x, b.y, settings.roundedRectangleCornerDiameter)); - if (settings.commonFillType != ToolSettings.ftSolid) - container.add(new RoundedRectangleFigure(settings.commonForegroundColor, settings.commonBackgroundColor, - settings.commonLineStyle, a.x, a.y, b.x, b.y, settings.roundedRectangleCornerDiameter)); - return container; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SegmentedPaintSession.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SegmentedPaintSession.java deleted file mode 100644 index 4ffa99db60..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SegmentedPaintSession.java +++ /dev/null @@ -1,157 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; - -import java.util.*; - -/** - * The superclass for paint tools that contruct objects from individually - * picked segments. - */ -public abstract class SegmentedPaintSession extends BasicPaintSession { - /** - * The set of control points making up the segmented selection - */ - private Vector /* of Point */ controlPoints = new Vector(); - - /** - * The previous figure (so that we can abort with right-button) - */ - private Figure previousFigure = null; - - /** - * The current figure (so that we can abort with right-button) - */ - private Figure currentFigure = null; - - /** - * Constructs a PaintSession. - * - * @param paintSurface the drawing surface to use - */ - protected SegmentedPaintSession(PaintSurface paintSurface) { - super(paintSurface); - } - - /** - * Activates the tool. - */ - public void beginSession() { - getPaintSurface().setStatusMessage(PaintExample.getResourceString( - "session.SegmentedInteractivePaint.message.anchorMode")); - previousFigure = null; - currentFigure = null; - controlPoints.clear(); - } - - /** - * Deactivates the tool. - */ - public void endSession() { - getPaintSurface().clearRubberbandSelection(); - if (previousFigure != null) getPaintSurface().drawFigure(previousFigure); - } - - /** - * Resets the tool. - * Aborts any operation in progress. - */ - public void resetSession() { - getPaintSurface().clearRubberbandSelection(); - if (previousFigure != null) getPaintSurface().drawFigure(previousFigure); - - getPaintSurface().setStatusMessage(PaintExample.getResourceString( - "session.SegmentedInteractivePaint.message.anchorMode")); - previousFigure = null; - currentFigure = null; - controlPoints.clear(); - } - - /** - * Handles a mouseDown event. - * - * @param event the mouse event detail information - */ - public void mouseDown(MouseEvent event) { - if (event.button != 1) return; - - getPaintSurface().setStatusMessage(PaintExample.getResourceString( - "session.SegmentedInteractivePaint.message.interactiveMode")); - previousFigure = currentFigure; - - if (controlPoints.size() > 0) { - final Point lastPoint = (Point) controlPoints.elementAt(controlPoints.size() - 1); - if (lastPoint.x == event.x || lastPoint.y == event.y) return; // spurious event - } - controlPoints.add(new Point(event.x, event.y)); - } - - /** - * Handles a mouseDoubleClick event. - * - * @param event the mouse event detail information - */ - public void mouseDoubleClick(MouseEvent event) { - if (event.button != 1) return; - if (controlPoints.size() >= 2) { - getPaintSurface().clearRubberbandSelection(); - previousFigure = createFigure( - (Point[]) controlPoints.toArray(new Point[controlPoints.size()]), - controlPoints.size(), true); - } - resetSession(); - } - - /** - * Handles a mouseUp event. - * - * @param event the mouse event detail information - */ - public void mouseUp(MouseEvent event) { - if (event.button != 1) { - resetSession(); // abort if right or middle mouse button pressed - return; - } - } - - /** - * Handles a mouseMove event. - * - * @param event the mouse event detail information - */ - public void mouseMove(MouseEvent event) { - final PaintSurface ps = getPaintSurface(); - if (controlPoints.size() == 0) { - ps.setStatusCoord(ps.getCurrentPosition()); - return; // spurious event - } - ps.setStatusCoordRange((Point) controlPoints.elementAt(controlPoints.size() - 1), - ps.getCurrentPosition()); - ps.clearRubberbandSelection(); - Point[] points = (Point[]) controlPoints.toArray(new Point[controlPoints.size() + 1]); - points[controlPoints.size()] = ps.getCurrentPosition(); - currentFigure = createFigure(points, points.length, false); - ps.addRubberbandSelection(currentFigure); - } - - /** - * Template Method: Creates a Figure for drawing rubberband entities and the final product - * - * @param points the array of control points - * @param numPoints the number of valid points in the array (n >= 2) - * @param closed true if the user double-clicked on the final control point - */ - protected abstract Figure createFigure(Point[] points, int numPoints, boolean closed); -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidEllipseFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidEllipseFigure.java deleted file mode 100644 index a7e9ada352..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidEllipseFigure.java +++ /dev/null @@ -1,44 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * 2D Solid Ellipse object - */ -public class SolidEllipseFigure extends Figure { - private Color color; - private int x1, y1, x2, y2; - /** - * Constructs a SolidEllipse - * These objects are defined by any two diametrically opposing corners of a box - * bounding the ellipse. - * - * @param color the color for this object - * @param x1 the virtual X coordinate of the first corner - * @param y1 the virtual Y coordinate of the first corner - * @param x2 the virtual X coordinate of the second corner - * @param y2 the virtual Y coordinate of the second corner - */ - public SolidEllipseFigure(Color color, int x1, int y1, int x2, int y2) { - this.color = color; this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - } - public void draw(FigureDrawContext fdc) { - Rectangle r = fdc.toClientRectangle(x1, y1, x2, y2); - fdc.gc.setBackground(color); - fdc.gc.fillOval(r.x, r.y, r.width, r.height); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidPolygonFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidPolygonFigure.java deleted file mode 100644 index 0051400428..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidPolygonFigure.java +++ /dev/null @@ -1,59 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * 2D Line object - */ -public class SolidPolygonFigure extends Figure { - private Color color; - private int[] points; - /** - * Constructs a SolidPolygon - * These objects are defined by a sequence of vertices. - * - * @param color the color for this object - * @param vertices the array of vertices making up the polygon - * @param numPoint the number of valid points in the array (n >= 3) - */ - public SolidPolygonFigure(Color color, Point[] vertices, int numPoints) { - this.color = color; - this.points = new int[numPoints * 2]; - for (int i = 0; i < numPoints; ++i) { - points[i * 2] = vertices[i].x; - points[i * 2 + 1] = vertices[i].y; - } - } - public void draw(FigureDrawContext fdc) { - int[] drawPoints = new int[points.length]; - for (int i = 0; i < points.length; i += 2) { - drawPoints[i] = points[i] * fdc.xScale - fdc.xOffset; - drawPoints[i + 1] = points[i + 1] * fdc.yScale - fdc.yOffset; - } - fdc.gc.setBackground(color); - fdc.gc.fillPolygon(drawPoints); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - int xmin = Integer.MAX_VALUE, ymin = Integer.MAX_VALUE; - int xmax = Integer.MIN_VALUE, ymax = Integer.MIN_VALUE; - - for (int i = 0; i < points.length; i += 2) { - if (points[i] < xmin) xmin = points[i]; - if (points[i] > xmax) xmax = points[i]; - if (points[i+1] < ymin) ymin = points[i+1]; - if (points[i+1] > ymax) ymax = points[i+1]; - } - region.add(fdc.toClientRectangle(xmin, ymin, xmax, ymax)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidRectangleFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidRectangleFigure.java deleted file mode 100644 index f3f2fb904c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidRectangleFigure.java +++ /dev/null @@ -1,43 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * 2D SolidRectangle object - */ -public class SolidRectangleFigure extends Figure { - private Color color; - private int x1, y1, x2, y2; - /** - * Constructs a SolidRectangle - * These objects are defined by any two diametrically opposing corners. - * - * @param color the color for this object - * @param x1 the virtual X coordinate of the first corner - * @param y1 the virtual Y coordinate of the first corner - * @param x2 the virtual X coordinate of the second corner - * @param y2 the virtual Y coordinate of the second corner - */ - public SolidRectangleFigure(Color color, int x1, int y1, int x2, int y2) { - this.color = color; this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - } - public void draw(FigureDrawContext fdc) { - Rectangle r = fdc.toClientRectangle(x1, y1, x2, y2); - fdc.gc.setBackground(color); - fdc.gc.fillRectangle(r.x, r.y, r.width, r.height); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidRoundedRectangleFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidRoundedRectangleFigure.java deleted file mode 100644 index 9c0d2eccd4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/SolidRoundedRectangleFigure.java +++ /dev/null @@ -1,45 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * 2D SolidRectangle object - */ -public class SolidRoundedRectangleFigure extends Figure { - private Color color; - private int x1, y1, x2, y2, diameter; - /** - * Constructs a SolidRectangle - * These objects are defined by any two diametrically opposing corners. - * - * @param color the color for this object - * @param x1 the virtual X coordinate of the first corner - * @param y1 the virtual Y coordinate of the first corner - * @param x2 the virtual X coordinate of the second corner - * @param y2 the virtual Y coordinate of the second corner - * @param diameter the diameter of curvature of all four corners - */ - public SolidRoundedRectangleFigure(Color color, int x1, int y1, int x2, int y2, int diameter) { - this.color = color; this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; - this.diameter = diameter; - } - public void draw(FigureDrawContext fdc) { - Rectangle r = fdc.toClientRectangle(x1, y1, x2, y2); - fdc.gc.setBackground(color); - fdc.gc.fillRoundRectangle(r.x, r.y, r.width, r.height, diameter, diameter); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - region.add(fdc.toClientRectangle(x1, y1, x2, y2)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/TextFigure.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/TextFigure.java deleted file mode 100644 index cabd0c3f9b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/TextFigure.java +++ /dev/null @@ -1,49 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.graphics.*; - -/** - * 2D Rectangle object - */ -public class TextFigure extends Figure { - private Color color; - private Font font; - private String text; - private int x, y; - /** - * Constructs a TextFigure - * - * @param color the color for this object - * @param font the font for this object - * @param text the text to draw, tab and new-line expansion is performed - * @param x the virtual X coordinate of the top-left corner of the text bounding box - * @param y the virtual Y coordinate of the top-left corner of the text bounding box - */ - public TextFigure(Color color, Font font, String text, int x, int y) { - this.color = color; this.font = font; this.text = text; this.x = x; this.y = y; - } - public void draw(FigureDrawContext fdc) { - Point p = fdc.toClientPoint(x, y); - fdc.gc.setFont(font); - fdc.gc.setForeground(color); - fdc.gc.drawText(text, p.x, p.y, true); - } - public void addDamagedRegion(FigureDrawContext fdc, Region region) { - Font oldFont = fdc.gc.getFont(); - fdc.gc.setFont(font); - Point textExtent = fdc.gc.textExtent(text); - fdc.gc.setFont(oldFont); - region.add(fdc.toClientRectangle(x, y, x + textExtent.x, y + textExtent.y)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/TextTool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/TextTool.java deleted file mode 100644 index 766787e812..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/TextTool.java +++ /dev/null @@ -1,160 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; - -/** - * A text drawing tool. - */ -public class TextTool extends BasicPaintSession implements PaintTool { - private ToolSettings settings; - private String drawText = PaintExample.getResourceString("tool.Text.settings.defaulttext"); - - /** - * Constructs a PaintTool. - * - * @param toolSettings the new tool settings - * @param paintSurface the PaintSurface we will render on. - */ - public TextTool(ToolSettings toolSettings, PaintSurface paintSurface) { - super(paintSurface); - set(toolSettings); - } - - /** - * Sets the tool's settings. - * - * @param toolSettings the new tool settings - */ - public void set(ToolSettings toolSettings) { - settings = toolSettings; - } - - /** - * Returns name associated with this tool. - * - * @return the localized name of this tool - */ - public String getDisplayName() { - return PaintExample.getResourceString("tool.Text.label"); - } - - /** - * Activates the tool. - */ - public void beginSession() { - getPaintSurface().setStatusMessage(PaintExample.getResourceString( - "session.Text.message")); - } - - /** - * Deactivates the tool. - */ - public void endSession() { - getPaintSurface().clearRubberbandSelection(); - } - - /** - * Aborts the current operation. - */ - public void resetSession() { - getPaintSurface().clearRubberbandSelection(); - } - - /** - * Handles a mouseDown event. - * - * @param event the mouse event detail information - */ - public void mouseDown(MouseEvent event) { - if (event.button == 1) { - // draw with left mouse button - getPaintSurface().commitRubberbandSelection(); - } else { - // set text with right mouse button - getPaintSurface().clearRubberbandSelection(); - Shell shell = getPaintSurface().getShell(); - final Shell dialog = new Shell(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); - dialog.setText(PaintExample.getResourceString("tool.Text.dialog.title")); - dialog.setLayout(new GridLayout()); - Label label = new Label(dialog, SWT.NONE); - label.setText(PaintExample.getResourceString("tool.Text.dialog.message")); - label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - final Text field = new Text(dialog, SWT.SINGLE | SWT.BORDER); - field.setText(drawText); - field.selectAll(); - field.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - Composite buttons = new Composite(dialog, SWT.NONE); - GridLayout layout = new GridLayout(2, true); - layout.marginWidth = 0; - buttons.setLayout(layout); - buttons.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false)); - Button ok = new Button(buttons, SWT.PUSH); - ok.setText(PaintExample.getResourceString("OK")); - ok.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - ok.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - drawText = field.getText(); - dialog.dispose(); - } - }); - Button cancel = new Button(buttons, SWT.PUSH); - cancel.setText(PaintExample.getResourceString("Cancel")); - cancel.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - dialog.dispose(); - } - }); - dialog.setDefaultButton(ok); - dialog.pack(); - dialog.open(); - Display display = dialog.getDisplay(); - while (! shell.isDisposed() && ! dialog.isDisposed()) { - if (! display.readAndDispatch()) display.sleep(); - } - } - } - - /** - * Handles a mouseDoubleClick event. - * - * @param event the mouse event detail information - */ - public void mouseDoubleClick(MouseEvent event) { - } - - /** - * Handles a mouseUp event. - * - * @param event the mouse event detail information - */ - public void mouseUp(MouseEvent event) { - } - - /** - * Handles a mouseMove event. - * - * @param event the mouse event detail information - */ - public void mouseMove(MouseEvent event) { - final PaintSurface ps = getPaintSurface(); - ps.setStatusCoord(ps.getCurrentPosition()); - ps.clearRubberbandSelection(); - ps.addRubberbandSelection( - new TextFigure(settings.commonForegroundColor, settings.commonFont, - drawText, event.x, event.y)); - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/Tool.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/Tool.java deleted file mode 100644 index 5b51ce2d19..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/Tool.java +++ /dev/null @@ -1,36 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - -import org.eclipse.swt.graphics.*; - -public class Tool { - public int id; - public String name; - public String group; - public int type; - public Runnable action; - public Image image = null; - public Object data; - - public Tool(int id, String name, String group, int type) { - super(); - this.id = id; - this.name = name; - this.group = group; - this.type = type; - } - - public Tool(int id, String name, String group, int type, Object data) { - this(id, name, group, type); - this.data = data; - } -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ToolSettings.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ToolSettings.java deleted file mode 100644 index b69bedcc8f..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/ToolSettings.java +++ /dev/null @@ -1,62 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.paint; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -/** - * Tool Settings objects group tool-related configuration information. - */ -public class ToolSettings { - public static final int ftNone = 0, ftOutline = 1, ftSolid = 2; - - /** - * commonForegroundColor: current tool foreground colour - */ - public Color commonForegroundColor; - - /** - * commonBackgroundColor: current tool background colour - */ - public Color commonBackgroundColor; - - /** - * commonFont: current font - */ - public Font commonFont; - - /** - * commonFillType: current fill type - * <p>One of ftNone, ftOutline, ftSolid.</p> - */ - public int commonFillType = ftNone; - - /** - * commonLineStyle: current line type - */ - public int commonLineStyle = SWT.LINE_SOLID; - - /** - * airbrushRadius: coverage radius in pixels - */ - public int airbrushRadius = 10; - - /** - * airbrushIntensity: average surface area coverage in region defined by radius per "jot" - */ - public int airbrushIntensity = 30; - - /** - * roundedRectangleCornerDiameter: the diameter of curvature of corners in a rounded rectangle - */ - public int roundedRectangleCornerDiameter = 16; -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_none.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_none.gif Binary files differdeleted file mode 100644 index d26dd584e7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_none.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_outline.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_outline.gif Binary files differdeleted file mode 100644 index c6ccfee10e..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_outline.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_solid.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_solid.gif Binary files differdeleted file mode 100644 index cb34e64a30..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/fill_solid.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dash.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dash.gif Binary files differdeleted file mode 100644 index fb57bb38b7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dash.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dashdot.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dashdot.gif Binary files differdeleted file mode 100644 index 322968c30b..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dashdot.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dot.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dot.gif Binary files differdeleted file mode 100644 index 4937ccb06d..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_dot.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_solid.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_solid.gif Binary files differdeleted file mode 100644 index 70a57ce2c4..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/linestyle_solid.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/options_font.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/options_font.gif Binary files differdeleted file mode 100644 index 965fe08560..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/options_font.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_airbrush.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_airbrush.gif Binary files differdeleted file mode 100644 index a310edddb2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_airbrush.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_ellipse.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_ellipse.gif Binary files differdeleted file mode 100644 index dc2142f8e2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_ellipse.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_line.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_line.gif Binary files differdeleted file mode 100644 index 2ff819f129..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_line.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_pencil.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_pencil.gif Binary files differdeleted file mode 100644 index f16a234c13..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_pencil.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_polyline.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_polyline.gif Binary files differdeleted file mode 100644 index aa384e9b30..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_polyline.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_rectangle.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_rectangle.gif Binary files differdeleted file mode 100644 index d26dd584e7..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_rectangle.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_roundedrectangle.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_roundedrectangle.gif Binary files differdeleted file mode 100644 index bf845d7602..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_roundedrectangle.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_text.gif b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_text.gif Binary files differdeleted file mode 100644 index 0d7457ffa3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/paint/tool_text.gif +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/Images.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/Images.java deleted file mode 100755 index dc75536a88..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/Images.java +++ /dev/null @@ -1,77 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.texteditor; - - -import java.io.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -public class Images { - - // Bitmap Images - public Image Bold; - public Image Italic; - public Image Underline; - public Image Strikeout; - public Image Red; - public Image Green; - public Image Blue; - public Image Erase; - - Image [] AllBitmaps; - -Images () { -} - -public void freeAll () { - for (int i=0; i<AllBitmaps.length; i++) AllBitmaps [i].dispose (); - AllBitmaps = null; -} - -Image createBitmapImage(Display display, String fileName) { - InputStream sourceStream = Images.class.getResourceAsStream (fileName + ".bmp"); - InputStream maskStream = Images.class.getResourceAsStream (fileName + "_mask.bmp"); - 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) { - e.printStackTrace (); - } - return result; -} - -public void loadAll (Display display) { - // Bitmap Images - Bold = createBitmapImage (display, "bold"); - Italic = createBitmapImage (display, "italic"); - Underline = createBitmapImage (display, "underline"); - Strikeout = createBitmapImage (display, "strikeout"); - Red = createBitmapImage (display, "red"); - Green = createBitmapImage (display, "green"); - Blue = createBitmapImage (display, "blue"); - Erase = createBitmapImage (display, "erase"); - - AllBitmaps = new Image [] { - Bold, - Italic, - Underline, - Strikeout, - Red, - Green, - Blue, - Erase, - }; -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java deleted file mode 100755 index 989acc5edf..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java +++ /dev/null @@ -1,358 +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 - *******************************************************************************/ -package org.eclipse.swt.examples.texteditor; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import java.util.*; - -/** - */ -public class TextEditor { - Shell shell; - ToolBar toolBar; - StyledText text; - - Images images = new Images(); - Vector cachedStyles = new Vector(); - Color RED = null; - Color BLUE = null; - Color GREEN = null; - Font font = null; - ToolItem boldButton, italicButton, underlineButton, strikeoutButton; - - static ResourceBundle resources = ResourceBundle.getBundle("examples_texteditor"); - -Menu createEditMenu() { - Menu bar = shell.getMenuBar (); - Menu menu = new Menu (bar); - - MenuItem item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Cut_menuitem")); - item.setAccelerator(SWT.MOD1 + 'X'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - handleCutCopy(); - text.cut(); - } - }); - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Copy_menuitem")); - item.setAccelerator(SWT.MOD1 + 'C'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - handleCutCopy(); - text.copy(); - } - }); - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Paste_menuitem")); - item.setAccelerator(SWT.MOD1 + 'V'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - text.paste(); - } - }); - new MenuItem (menu, SWT.SEPARATOR); - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Font_menuitem")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - setFont(); - } - }); - return menu; -} - -Menu createFileMenu() { - Menu bar = shell.getMenuBar (); - Menu menu = new Menu (bar); - - MenuItem item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Exit_menuitem")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - shell.close (); - } - }); - - return menu; -} - -/* - * Set a style - */ -void setStyle(Widget widget) { - Point sel = text.getSelectionRange(); - if ((sel == null) || (sel.y == 0)) return; - StyleRange style; - for (int i = sel.x; i<sel.x+sel.y; i++) { - StyleRange range = text.getStyleRangeAtOffset(i); - if (range != null) { - style = (StyleRange)range.clone(); - style.start = i; - style.length = 1; - } else { - style = new StyleRange(i, 1, null, null, SWT.NORMAL); - } - if (widget == boldButton) { - style.fontStyle ^= SWT.BOLD; - } else if (widget == italicButton) { - style.fontStyle ^= SWT.ITALIC; - } else if (widget == underlineButton) { - style.underline = !style.underline; - } else if (widget == strikeoutButton) { - style.strikeout = !style.strikeout; - } - text.setStyleRange(style); - } - text.setSelectionRange(sel.x + sel.y, 0); -} - -/* - * Clear all style data for the selected text. - */ -void clear() { - Point sel = text.getSelectionRange(); - if (sel.y != 0) { - StyleRange style; - style = new StyleRange(sel.x, sel.y, null, null, SWT.NORMAL); - text.setStyleRange(style); - } - text.setSelectionRange(sel.x + sel.y, 0); -} -/* - * Set the foreground color for the selected text. - */ -void fgColor(Color fg) { - Point sel = text.getSelectionRange(); - if ((sel == null) || (sel.y == 0)) return; - StyleRange style, range; - for (int i = sel.x; i<sel.x+sel.y; i++) { - range = text.getStyleRangeAtOffset(i); - if (range != null) { - style = (StyleRange)range.clone(); - style.start = i; - style.length = 1; - style.foreground = fg; - } else { - style = new StyleRange (i, 1, fg, null, SWT.NORMAL); - } - text.setStyleRange(style); - } - text.setSelectionRange(sel.x + sel.y, 0); -} -void createMenuBar () { - Menu bar = new Menu (shell, SWT.BAR); - shell.setMenuBar (bar); - - MenuItem fileItem = new MenuItem (bar, SWT.CASCADE); - fileItem.setText (resources.getString("File_menuitem")); - fileItem.setMenu (createFileMenu ()); - - MenuItem editItem = new MenuItem (bar, SWT.CASCADE); - editItem.setText (resources.getString("Edit_menuitem")); - editItem.setMenu (createEditMenu ()); -} - -void createShell (Display display) { - shell = new Shell (display); - shell.setText (resources.getString("Window_title")); - images.loadAll (display); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - shell.setLayout(layout); - shell.addDisposeListener (new DisposeListener () { - public void widgetDisposed (DisposeEvent e) { - if (font != null) font.dispose(); - images.freeAll (); - RED.dispose(); - GREEN.dispose(); - BLUE.dispose(); - } - }); -} -void createStyledText() { - initializeColors(); - text = new StyledText (shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - GridData spec = new GridData(); - spec.horizontalAlignment = GridData.FILL; - spec.grabExcessHorizontalSpace = true; - spec.verticalAlignment = GridData.FILL; - spec.grabExcessVerticalSpace = true; - text.setLayoutData(spec); - text.addExtendedModifyListener(new ExtendedModifyListener() { - public void modifyText(ExtendedModifyEvent e) { - handleExtendedModify(e); - } - }); -} - -void createToolBar() { - toolBar = new ToolBar(shell, SWT.NONE); - SelectionAdapter listener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - setStyle (event.widget); - } - }; - boldButton = new ToolItem(toolBar, SWT.CHECK); - boldButton.setImage(images.Bold); - boldButton.setToolTipText(resources.getString("Bold")); - boldButton.addSelectionListener(listener); - italicButton = new ToolItem(toolBar, SWT.CHECK); - italicButton.setImage(images.Italic); - italicButton.setToolTipText(resources.getString("Italic")); - italicButton.addSelectionListener(listener); - underlineButton = new ToolItem(toolBar, SWT.CHECK); - underlineButton.setImage(images.Underline); - underlineButton.setToolTipText(resources.getString("Underline")); - underlineButton.addSelectionListener(listener); - strikeoutButton = new ToolItem(toolBar, SWT.CHECK); - strikeoutButton.setImage(images.Strikeout); - strikeoutButton.setToolTipText(resources.getString("Strikeout")); - strikeoutButton.addSelectionListener(listener); - - ToolItem item = new ToolItem(toolBar, SWT.SEPARATOR); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Red); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - fgColor(RED); - } - }); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Green); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - fgColor(GREEN); - } - }); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Blue); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - fgColor(BLUE); - } - }); - item = new ToolItem(toolBar, SWT.SEPARATOR); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Erase); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - clear(); - } - }); -} -/* - * Cache the style information for text that has been cut or copied. - */ -void handleCutCopy() { - // Save the cut/copied style info so that during paste we will maintain - // the style information. Cut/copied text is put in the clipboard in - // RTF format, but is not pasted in RTF format. The other way to - // handle the pasting of styles would be to access the Clipboard directly and - // parse the RTF text. - cachedStyles = new Vector(); - Point sel = text.getSelectionRange(); - int startX = sel.x; - for (int i=sel.x; i<=sel.x+sel.y-1; i++) { - StyleRange style = text.getStyleRangeAtOffset(i); - if (style != null) { - style.start = style.start - startX; - if (!cachedStyles.isEmpty()) { - StyleRange lastStyle = (StyleRange)cachedStyles.lastElement(); - if (lastStyle.similarTo(style) && lastStyle.start + lastStyle.length == style.start) { - lastStyle.length++; - } else { - cachedStyles.addElement(style); - } - } else { - cachedStyles.addElement(style); - } - } - } -} -void handleExtendedModify(ExtendedModifyEvent event) { - if (event.length == 0) return; - StyleRange style; - if (event.length == 1 || text.getTextRange(event.start, event.length).equals(text.getLineDelimiter())) { - // Have the new text take on the style of the text to its right (during - // typing) if no style information is active. - int caretOffset = text.getCaretOffset(); - style = null; - if (caretOffset < text.getCharCount()) style = text.getStyleRangeAtOffset(caretOffset); - if (style != null) { - style = (StyleRange) style.clone (); - style.start = event.start; - style.length = event.length; - } else { - style = new StyleRange(event.start, event.length, null, null, SWT.NORMAL); - } - if (boldButton.getSelection()) style.fontStyle |= SWT.BOLD; - if (italicButton.getSelection()) style.fontStyle |= SWT.ITALIC; - style.underline = underlineButton.getSelection(); - style.strikeout = strikeoutButton.getSelection(); - if (!style.isUnstyled()) text.setStyleRange(style); - } else { - // paste occurring, have text take on the styles it had when it was - // cut/copied - for (int i=0; i<cachedStyles.size(); i++) { - style = (StyleRange)cachedStyles.elementAt(i); - StyleRange newStyle = (StyleRange)style.clone(); - newStyle.start = style.start + event.start; - text.setStyleRange(newStyle); - } - } -} - -public static void main (String [] args) { - Display display = new Display (); - TextEditor example = new TextEditor (); - Shell shell = example.open (display); - while (!shell.isDisposed ()) - if (!display.readAndDispatch ()) display.sleep (); - display.dispose (); -} - -public Shell open (Display display) { - createShell (display); - createMenuBar (); - createToolBar (); - createStyledText (); - shell.setSize(500, 300); - shell.open (); - return shell; -} - -void setFont() { - FontDialog fontDialog = new FontDialog(shell); - fontDialog.setFontList((text.getFont()).getFontData()); - FontData fontData = fontDialog.open(); - if (fontData != null) { - Font newFont = new Font(shell.getDisplay(), fontData); - text.setFont(newFont); - if (font != null) font.dispose(); - font = newFont; - } -} - -void initializeColors() { - Display display = Display.getDefault(); - RED = new Color (display, new RGB(255,0,0)); - BLUE = new Color (display, new RGB(0,0,255)); - GREEN = new Color (display, new RGB(0,255,0)); -} -} diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/blue.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/blue.bmp Binary files differdeleted file mode 100755 index 84c7ac9a46..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/blue.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/blue_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/blue_mask.bmp Binary files differdeleted file mode 100755 index 6ce92645e5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/blue_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/bold.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/bold.bmp Binary files differdeleted file mode 100755 index a3184bb26c..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/bold.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/bold_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/bold_mask.bmp Binary files differdeleted file mode 100755 index 382751efa3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/bold_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/erase.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/erase.bmp Binary files differdeleted file mode 100755 index 1d2ace7ee3..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/erase.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/erase_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/erase_mask.bmp Binary files differdeleted file mode 100755 index f6ab21e471..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/erase_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/green.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/green.bmp Binary files differdeleted file mode 100755 index cca023fd57..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/green.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/green_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/green_mask.bmp Binary files differdeleted file mode 100755 index 6ce92645e5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/green_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/italic.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/italic.bmp Binary files differdeleted file mode 100644 index 4136720d83..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/italic.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/italic_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/italic_mask.bmp Binary files differdeleted file mode 100644 index 0c4762c943..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/italic_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/red.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/red.bmp Binary files differdeleted file mode 100755 index 88c63be336..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/red.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/red_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/red_mask.bmp Binary files differdeleted file mode 100755 index 6ce92645e5..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/red_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/strikeout.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/strikeout.bmp Binary files differdeleted file mode 100644 index 7cd29841b2..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/strikeout.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/strikeout_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/strikeout_mask.bmp Binary files differdeleted file mode 100644 index d39ab32f09..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/strikeout_mask.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/underline.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/underline.bmp Binary files differdeleted file mode 100644 index de3acfdcbd..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/underline.bmp +++ /dev/null diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/underline_mask.bmp b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/underline_mask.bmp Binary files differdeleted file mode 100644 index a29de994fa..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/underline_mask.bmp +++ /dev/null |