+package org.simantics.utils.ui.color;\r
+\r
+import org.eclipse.jface.dialogs.Dialog;\r
+import org.eclipse.jface.layout.GridDataFactory;\r
+import org.eclipse.jface.layout.GridLayoutFactory;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.graphics.Point;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Group;\r
+import org.eclipse.swt.widgets.Shell;\r
+\r
+public class ColorDialog extends Dialog{\r
+ protected ColorComposite colorComposite;\r
+ protected Color value;\r
+ \r
+ public ColorDialog(Shell parentShell) {\r
+ super(parentShell); \r
+ }\r
+ \r
+ @Override\r
+ protected void configureShell(Shell newShell) {\r
+ super.configureShell(newShell);\r
+ newShell.setText("Color");\r
+ }\r
+\r
+ \r
+ public void setInitialValue(Color initialValue) {\r
+ this.value = new Color(initialValue);\r
+ }\r
+ \r
+ @Override\r
+ protected Point getInitialSize() {\r
+ return new Point(400, 400);\r
+ }\r
+ \r
+ @Override\r
+ protected Control createDialogArea(Composite parent) {\r
+ Composite composite = new Composite(parent, SWT.NONE);\r
+ GridLayoutFactory.fillDefaults().numColumns(1).margins(6, 0).applyTo(composite);\r
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.TOP).applyTo(composite);\r
+ colorComposite = new ColorComposite(composite, 0);\r
+ GridData childData = new GridData(GridData.FILL_BOTH);\r
+ colorComposite.setLayoutData(childData); \r
+ if (value != null)\r
+ colorComposite.setColor(value);\r
+ Group builtinGroup = new Group(composite, SWT.NONE);\r
+ builtinGroup.setText("System colors");\r
+ GridLayoutFactory.fillDefaults().numColumns(8).spacing(2, 2).margins(4, 4).applyTo(builtinGroup);\r
+ for (int i = SWT.COLOR_WHITE; i <= SWT.COLOR_DARK_GRAY; i++) {\r
+ org.eclipse.swt.graphics.Color c = Display.getCurrent().getSystemColor(i);\r
+ Color color = new Color(c.getRGB());\r
+ createColorButton(builtinGroup, color);\r
+ }\r
+ \r
+\r
+ return composite;\r
+ }\r
+ \r
+ protected Button createColorButton(Composite parent, Color color) {\r
+ Button button = new Button(parent, SWT.PUSH);\r
+ button.setImage(ColorIconCreator.createImage(color, 32, SWT.BORDER));\r
+ button.setData(color);\r
+ button.addSelectionListener(new SelectionAdapter() {\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ colorComposite.setColor(color);\r
+ }\r
+ });\r
+ return button;\r
+ }\r
+\r
+ \r
+ public Color getColor() {\r
+ return colorComposite.getColor();\r
+ }\r
+ \r
+\r
+}\r