diff options
Diffstat (limited to 'examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTreeTab.java')
-rw-r--r-- | examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTreeTab.java | 157 |
1 files changed, 155 insertions, 2 deletions
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTreeTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTreeTab.java index c414a74c3a..bf833b2b07 100644 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTreeTab.java +++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/TableTreeTab.java @@ -15,16 +15,24 @@ 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 TableTreeTab extends ScrollableTab { /* Example widgets and groups that contain them */ TableTree tree1; - Group treeGroup; + TableTreeItem node1; + Group treeGroup, itemGroup; /* Style widgets added to the "Style" group */ Button checkButton, fullSelectionButton; + /* Controls and resources added to the "Colors" group */ + Button itemForegroundButton, itemBackgroundButton, itemFontButton; + Color itemForegroundColor, itemBackgroundColor; + Image itemForegroundImage, itemBackgroundImage; + Font itemFont; + /* Other widgets added to the "Other" group */ Button headerVisibleButton, linesVisibleButton; @@ -36,6 +44,93 @@ class TableTreeTab extends ScrollableTab { } /** + * Creates the "Colors" group. + */ + void createColorGroup () { + super.createColorGroup(); + + itemGroup = new Group (colorGroup, SWT.NONE); + itemGroup.setText (ControlExample.getResourceString ("Tree_Item_Colors")); + GridData data = new GridData (); + data.horizontalSpan = 2; + itemGroup.setLayoutData (data); + itemGroup.setLayout (new GridLayout (2, false)); + new Label (itemGroup, SWT.NONE).setText (ControlExample.getResourceString ("Foreground_Color")); + itemForegroundButton = new Button (itemGroup, SWT.PUSH); + new Label (itemGroup, SWT.NONE).setText (ControlExample.getResourceString ("Background_Color")); + itemBackgroundButton = new Button (itemGroup, SWT.PUSH); + itemFontButton = new Button (itemGroup, SWT.PUSH); + itemFontButton.setText(ControlExample.getResourceString("Font")); + itemFontButton.setLayoutData(new GridData (GridData.HORIZONTAL_ALIGN_FILL)); + + Shell shell = colorGroup.getShell (); + final ColorDialog foregroundDialog = new ColorDialog (shell); + final ColorDialog backgroundDialog = new ColorDialog (shell); + final FontDialog fontDialog = new FontDialog (shell); + + int imageSize = 12; + Display display = shell.getDisplay (); + itemForegroundImage = new Image(display, imageSize, imageSize); + itemBackgroundImage = new Image(display, imageSize, imageSize); + + /* Add listeners to set the colors and font */ + itemForegroundButton.setImage(itemForegroundImage); + itemForegroundButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent event) { + Color oldColor = itemForegroundColor; + if (oldColor == null) oldColor = node1.getForeground (); + foregroundDialog.setRGB(oldColor.getRGB()); + RGB rgb = foregroundDialog.open(); + if (rgb == null) return; + oldColor = itemForegroundColor; + itemForegroundColor = new Color (event.display, rgb); + setItemForeground (); + if (oldColor != null) oldColor.dispose (); + } + }); + itemBackgroundButton.setImage(itemBackgroundImage); + itemBackgroundButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent event) { + Color oldColor = itemBackgroundColor; + if (oldColor == null) oldColor = node1.getBackground (); + backgroundDialog.setRGB(oldColor.getRGB()); + RGB rgb = backgroundDialog.open(); + if (rgb == null) return; + oldColor = itemBackgroundColor; + itemBackgroundColor = new Color (event.display, rgb); + setItemBackground (); + if (oldColor != null) oldColor.dispose (); + } + }); + itemFontButton.addSelectionListener(new SelectionAdapter () { + public void widgetSelected (SelectionEvent event) { + Font oldFont = itemFont; + if (oldFont == null) oldFont = node1.getFont (); + fontDialog.setFontList(oldFont.getFontData()); + FontData fontData = fontDialog.open (); + if (fontData == null) return; + oldFont = itemFont; + itemFont = new Font (event.display, fontData); + setItemFont (); + setExampleWidgetSize (); + if (oldFont != null) oldFont.dispose (); + } + }); + shell.addDisposeListener(new DisposeListener() { + public void widgetDisposed(DisposeEvent event) { + if (itemBackgroundImage != null) itemBackgroundImage.dispose(); + if (itemForegroundImage != null) itemForegroundImage.dispose(); + if (itemBackgroundColor != null) itemBackgroundColor.dispose(); + if (itemForegroundColor != null) itemForegroundColor.dispose(); + if (itemFont != null) itemFont.dispose(); + itemBackgroundColor = null; + itemForegroundColor = null; + itemFont = null; + } + }); + } + + /** * Creates the "Other" group. */ void createOtherGroup () { @@ -93,7 +188,7 @@ class TableTreeTab extends ScrollableTab { column.setWidth(100); column.setText(ControlExample.getResourceString("TableTree_column") + ": " + i); } - TableTreeItem node1 = new TableTreeItem (tree1, SWT.NONE); + node1 = new TableTreeItem (tree1, SWT.NONE); for (int i = 0; i < 3; i++) { node1.setText (i, ControlExample.getResourceString("Node_1") + "-" + i); } @@ -201,15 +296,73 @@ class TableTreeTab extends ScrollableTab { } /** + * 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 (); + setExampleWidgetSize (); + if (oldFont != null) oldFont.dispose(); + } + + /** * Sets the state of the "Example" widgets. */ void setExampleWidgetState () { super.setExampleWidgetState (); + setItemBackground (); + setItemForeground (); + setItemFont (); + setExampleWidgetSize (); setWidgetHeaderVisible (); setWidgetLinesVisible (); } /** + * Sets the background color of the Node 1 TreeItems. + */ + void setItemBackground () { + node1.setBackground (itemBackgroundColor); + /* Set the background button's color to match the color just set. */ + Color color = itemBackgroundColor; + if (color == null) color = node1.getBackground (); + drawImage (itemBackgroundImage, color); + itemBackgroundButton.setImage (itemBackgroundImage); + } + + /** + * Sets the foreground color of the Node 1 TreeItems. + */ + void setItemForeground () { + node1.setForeground (itemForegroundColor); + /* Set the foreground button's color to match the color just set. */ + Color color = itemForegroundColor; + if (color == null) color = node1.getForeground (); + drawImage (itemForegroundImage, color); + itemForegroundButton.setImage (itemForegroundImage); + } + + /** + * Sets the font of the Node 1 TreeItems. + */ + void setItemFont () { + node1.setFont (itemFont); + } + + /** * Sets the header visible state of the "Example" widgets. */ void setWidgetHeaderVisible () { |