diff --git a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/plugin.xml b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/plugin.xml index afe0342e6..cb66b3872 100644 --- a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/plugin.xml +++ b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/plugin.xml @@ -38,6 +38,15 @@ + + + + + + + + + diff --git a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/src/org/eclipse/nebula/widgets/cdatetime/css/CDateTimePropertyHandler.java b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/src/org/eclipse/nebula/widgets/cdatetime/css/CDateTimePropertyHandler.java index 8f18914bd..5781de10a 100644 --- a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/src/org/eclipse/nebula/widgets/cdatetime/css/CDateTimePropertyHandler.java +++ b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.css/src/org/eclipse/nebula/widgets/cdatetime/css/CDateTimePropertyHandler.java @@ -122,7 +122,36 @@ public boolean applyCSSProperty(final Object element, final String property, fin final Color newColor = (Color) engine.convert(value, Color.class, cdt.getDisplay()); cdt.setButtonSelectedBackgroundColor(newColor); } + + // Ok, Cancel & clear buttons + if ("cdt-ok-color".equals(property)) { + final Color newColor = (Color) engine.convert(value, Color.class, cdt.getDisplay()); + cdt.setOkButtonColor(newColor); + } + if ("cdt-cancel-color".equals(property)) { + final Color newColor = (Color) engine.convert(value, Color.class, cdt.getDisplay()); + cdt.setCancelButtonColor(newColor); + } + if ("cdt-clear-color".equals(property)) { + final Color newColor = (Color) engine.convert(value, Color.class, cdt.getDisplay()); + cdt.setClearButtonForegroundColor(newColor); + } + if ("cdt-clear-font".equals(property)) { + applyCSSPropertyFont(cdt, value, true); + } + if ("cdt-clear-font-style".equals(property)) { + applyCSSPropertyStyle(cdt, value, true); + } + if ("cdt-clear-font-size".equals(property)) { + applyCSSPropertySize(cdt, value, true); + } + if ("cdt-clear-font-weight".equals(property)) { + applyCSSPropertyWeight(cdt, value, true); + } + if ("cdt-clear-font-family".equals(property)) { + applyCSSPropertyFamily(cdt, value, true); + } return true; } diff --git a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/css/default.css b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/css/default.css index f4a8fc644..ff828ea5e 100644 --- a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/css/default.css +++ b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/css/default.css @@ -54,6 +54,13 @@ CDateTime#four,CDateTime#five,CDateTime#six { cdt-button-selected-background-color: red; } +CDateTime#okcancelclear { + cdt-ok-color: red; + cdt-cancel-color: green; + cdt-clear-color: cyan; + cdt-clear-font: Verdana 11px; +} + CDateTime#big_one { cdt-picker-font: Verdana 10px; cdt-picker-color: magenta; @@ -75,3 +82,4 @@ CDateTime#big_one { CDateTime#big_two { cdt-background-color: darkred; } + diff --git a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/src/org/eclipse/nebula/widgets/cdatetime/example/e4/parts/SimpleWidgetsPart.java b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/src/org/eclipse/nebula/widgets/cdatetime/example/e4/parts/SimpleWidgetsPart.java index 62abb1d53..777b820ce 100644 --- a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/src/org/eclipse/nebula/widgets/cdatetime/example/e4/parts/SimpleWidgetsPart.java +++ b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime.example.e4/src/org/eclipse/nebula/widgets/cdatetime/example/e4/parts/SimpleWidgetsPart.java @@ -104,6 +104,18 @@ public void createComposite(final Composite parent) { year.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); year.setData(CSS_ID, "six"); + // Last + label = new Label(group, SWT.NONE); + label.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false)); + label.setText("Date widget with pop-up shell\n(custom ok/cancel/clear button"); + + final CDateTime cdt6 = new CDateTime(group, CDT.BORDER | CDT.COMPACT | CDT.DROP_DOWN | CDT.DATE_LONG | CDT.TIME_MEDIUM); + final GridData gd6 = new GridData(SWT.BEGINNING, SWT.CENTER, true, false); + gd6.widthHint = 150; + cdt6.setLayoutData(gd6); + cdt6.setSelection(new Date()); + cdt6.setData(CSS_ID, "okcancelclear"); + } @Focus diff --git a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime/src/org/eclipse/nebula/widgets/cdatetime/CDateTime.java b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime/src/org/eclipse/nebula/widgets/cdatetime/CDateTime.java index 625927df7..e7a33993e 100644 --- a/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime/src/org/eclipse/nebula/widgets/cdatetime/CDateTime.java +++ b/widgets/cdatetime/org.eclipse.nebula.widgets.cdatetime/src/org/eclipse/nebula/widgets/cdatetime/CDateTime.java @@ -313,8 +313,10 @@ private static int convertStyle(int style) { break; case SWT.MouseWheel: Control focusedControl = getDisplay().getFocusControl(); - if (getTextWidget() != null && getTextWidget().getControl() != focusedControl) { - // Do not handle mousewheel events if the widget does not have focus + if (getTextWidget() != null + && getTextWidget().getControl() != focusedControl) { + // Do not handle mousewheel events if the widget does not have + // focus break; } if (event.count > 0) { @@ -371,7 +373,11 @@ private static int convertStyle(int style) { Color pickerActiveDayColor, pickerInactiveDayColor, pickerTodayColor; Color pickerMinutesColor, pickerMinutesBackgroundColor; - + + Color okButtonColor, cancelButtonColor, clearButtonForegroundColor; + Font clearButtonFont; + private VButton okButton, clearButton, cancelButton; + /** * Constructs a new instance of this class given its parent and a style * value describing its behavior and appearance. The current date and the @@ -515,7 +521,7 @@ private void createPicker() { if (pickerFont != null) { pickerPanel.setFont(pickerFont); } - + if (isDate) { DatePicker dp = new DatePicker(this); dp.setScrollable(scrollable); @@ -552,47 +558,50 @@ private void createPickerToolbar(VPanel parent) { tb.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false)); tb.setData(CDT.PickerPart, PickerPart.Toolbar); - VButton b = new VButton(tb, SWT.OK | SWT.NO_FOCUS); - b.setData(CDT.PickerPart, PickerPart.OkButton); - b.setToolTipText(Resources.getString("accept.text", locale)); //$NON-NLS-1$ - b.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); - b.addListener(SWT.Selection, event -> setOpen(false)); - b.setHoverBackgroundColor(buttonHoverBackgroundColor); - b.setHoverBorderColor(buttonHoverBorderColor); - b.setSelectedBackgroundColor(buttonSelectedBackgroundColor); - b.setSelectedBorderColor(buttonSelectedBorderColor); - - b = new VButton(tb, SWT.CANCEL | SWT.NO_FOCUS); - b.setData(CDT.PickerPart, PickerPart.CancelButton); - b.setToolTipText(Resources.getString("cancel.text", locale)); //$NON-NLS-1$ - b.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); - b.addListener(SWT.Selection, event -> { + okButton = new VButton(tb, SWT.OK | SWT.NO_FOCUS); + okButton.setData(CDT.PickerPart, PickerPart.OkButton); + okButton.setToolTipText(Resources.getString("accept.text", locale)); //$NON-NLS-1$ + okButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); + okButton.addListener(SWT.Selection, event -> setOpen(false)); + okButton.setHoverBackgroundColor(buttonHoverBackgroundColor); + okButton.setHoverBorderColor(buttonHoverBorderColor); + okButton.setSelectedBackgroundColor(buttonSelectedBackgroundColor); + okButton.setSelectedBorderColor(buttonSelectedBorderColor); + okButton.setForeground(okButtonColor); + + cancelButton = new VButton(tb, SWT.CANCEL | SWT.NO_FOCUS); + cancelButton.setData(CDT.PickerPart, PickerPart.CancelButton); + cancelButton.setToolTipText(Resources.getString("cancel.text", locale)); //$NON-NLS-1$ + cancelButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); + cancelButton.addListener(SWT.Selection, event -> { setSelection(cancelDate); fireSelectionChanged(); setOpen(false); }); - b.setHoverBackgroundColor(buttonHoverBackgroundColor); - b.setHoverBorderColor(buttonHoverBorderColor); - b.setSelectedBackgroundColor(buttonSelectedBackgroundColor); - b.setSelectedBorderColor(buttonSelectedBorderColor); - - b = new VButton(tb, SWT.NO_FOCUS); - b.setData(CDT.PickerPart, PickerPart.ClearButton); - b.setText(Resources.getString("clear.text", locale)); //$NON-NLS-1$ - b.setToolTipText(Resources.getString("clear.text", locale)); //$NON-NLS-1$ - b.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); - b.addListener(SWT.Selection, event -> { + cancelButton.setHoverBackgroundColor(buttonHoverBackgroundColor); + cancelButton.setHoverBorderColor(buttonHoverBorderColor); + cancelButton.setSelectedBackgroundColor(buttonSelectedBackgroundColor); + cancelButton.setSelectedBorderColor(buttonSelectedBorderColor); + cancelButton.setForeground(cancelButtonColor); + + clearButton = new VButton(tb, SWT.NO_FOCUS); + clearButton.setData(CDT.PickerPart, PickerPart.ClearButton); + clearButton.setText(Resources.getString("clear.text", locale)); //$NON-NLS-1$ + clearButton.setToolTipText(Resources.getString("clear.text", locale)); //$NON-NLS-1$ + clearButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); + clearButton.addListener(SWT.Selection, event -> { setOpen(false); setSelection(null); fireSelectionChanged(); }); - b.setForeground(parent.getForeground()); - b.setFont(parent.getFont()); - b.setHoverBackgroundColor(buttonHoverBackgroundColor); - b.setHoverBorderColor(buttonHoverBorderColor); - b.setSelectedBackgroundColor(buttonSelectedBackgroundColor); - b.setSelectedBorderColor(buttonSelectedBorderColor); - + clearButton.setForeground(clearButtonForegroundColor!=null?clearButtonForegroundColor:parent.getForeground()); + clearButton.setFont(clearButtonFont!=null?clearButtonFont:parent.getFont()); + clearButton.setHoverBackgroundColor(buttonHoverBackgroundColor); + clearButton.setHoverBorderColor(buttonHoverBorderColor); + clearButton.setSelectedBackgroundColor(buttonSelectedBackgroundColor); + clearButton.setSelectedBorderColor(buttonSelectedBorderColor); + + VLabel sep = new VLabel(parent, SWT.SEPARATOR | SWT.HORIZONTAL); sep.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); } @@ -1389,8 +1398,7 @@ private void init(int style) { } spinner = VNative.create(Spinner.class, panel, sStyle); if (win32) { - spinner.setBackground( - text.getControl().getBackground()); + spinner.setBackground(text.getControl().getBackground()); } spinner.getControl().setMinimum(0); spinner.getControl().setMaximum(50); @@ -2253,8 +2261,6 @@ public void setBackground(Color color) { } } - - public void setForeground(Color color) { super.setForeground(color); if (picker != null) { @@ -2285,7 +2291,7 @@ public void setButtonHoverBorderColor(Color color) { picker.updateColorsAndFont(); } } - + /** * @param color * @since 1.5 @@ -2329,7 +2335,7 @@ public void setPickerForegroundColor(Color pickerForegroundColor) { if (pickerForegroundColor != null && pickerPanel != null) { pickerPanel.setForeground(pickerForegroundColor); } - if (picker != null && pickerPanel != null&& pickerPanel != null) { + if (picker != null && pickerPanel != null && pickerPanel != null) { picker.updateColorsAndFont(); } } @@ -2515,7 +2521,8 @@ public Color getPickerMinutesBackgroundColor() { * @param pickerMinutesBackgroundColor * @since 1.5 */ - public void setPickerMinutesBackgroundColor(Color pickerMinutesBackgroundColor) { + public void setPickerMinutesBackgroundColor( + Color pickerMinutesBackgroundColor) { checkWidget(); this.pickerMinutesBackgroundColor = pickerMinutesBackgroundColor; if (picker != null) { @@ -2523,5 +2530,73 @@ public void setPickerMinutesBackgroundColor(Color pickerMinutesBackgroundColor) } } - + /** + * @return the foreground color of the "Ok" button + */ + public Color getOkButtonColor() { + checkWidget(); + return okButtonColor; + } + + /** + * @param okButtonColor the new foreground color of the "ok" button + */ + public void setOkButtonColor(Color okButtonColor) { + checkWidget(); + this.okButtonColor = okButtonColor; + if (okButton != null) okButton.setForeground(okButtonColor); + } + + /** + * @return the foreground color of the "Cancel" button + */ + public Color getCancelButtonColor() { + checkWidget(); + return cancelButtonColor; + } + + /** + * @param cancelButtonColor the new foreground color of the "cancel" button + */ + public void setCancelButtonColor(Color cancelButtonColor) { + checkWidget(); + this.cancelButtonColor = cancelButtonColor; + if (cancelButton != null) cancelButton.setForeground(cancelButtonColor); + } + + /** + * @return the foreground color of the "clear" button + */ + public Color getClearButtonForegroundColor() { + checkWidget(); + return clearButtonForegroundColor; + } + + /** + * @param clearButtonForegroundColor the new foreground color of the "clear" button + */ + public void setClearButtonForegroundColor( + Color clearButtonForegroundColor) { + checkWidget(); + this.clearButtonForegroundColor = clearButtonForegroundColor; + if (clearButton != null) clearButton.setForeground(clearButtonForegroundColor); + } + + /** + * @return the font of the "clear" button + */ + public Font getClearButtonFont() { + checkWidget(); + return clearButtonFont; + } + + /** + * @param clearButtonFont the new font of the "clear" button + */ + public void setClearButtonFont(Font clearButtonFont) { + checkWidget(); + this.clearButtonFont = clearButtonFont; + if (clearButton != null) clearButton.setFont(clearButtonFont); + } + } diff --git a/widgets/cwt/org.eclipse.nebula.cwt/META-INF/MANIFEST.MF b/widgets/cwt/org.eclipse.nebula.cwt/META-INF/MANIFEST.MF index 9d3e28d18..cc4125d4f 100644 --- a/widgets/cwt/org.eclipse.nebula.cwt/META-INF/MANIFEST.MF +++ b/widgets/cwt/org.eclipse.nebula.cwt/META-INF/MANIFEST.MF @@ -14,4 +14,4 @@ Export-Package: org.eclipse.nebula.cwt.animation, org.eclipse.nebula.cwt.svg, org.eclipse.nebula.cwt.v Automatic-Module-Name: org.eclipse.nebula.cwt -Require-Bundle: org.eclipse.swt;bundle-version="3.1.0" +Require-Bundle: org.eclipse.swt diff --git a/widgets/cwt/org.eclipse.nebula.cwt/src/org/eclipse/nebula/cwt/v/VControl.java b/widgets/cwt/org.eclipse.nebula.cwt/src/org/eclipse/nebula/cwt/v/VControl.java index 824da61f8..701b4d01f 100644 --- a/widgets/cwt/org.eclipse.nebula.cwt/src/org/eclipse/nebula/cwt/v/VControl.java +++ b/widgets/cwt/org.eclipse.nebula.cwt/src/org/eclipse/nebula/cwt/v/VControl.java @@ -54,10 +54,12 @@ * or oval). * */ +@SuppressWarnings("javadoc") public abstract class VControl { public enum Type { - Button, Custom, Label, Native, Panel, Text, Spacer + Button, Custom, Label, + Native, Panel, Text, Spacer } /** @@ -150,15 +152,13 @@ protected final static boolean containsControl(Control control, Map> listeners = new HashMap>(); private Set eventTypes = new HashSet(); - private Listener listener = new Listener() { - public void handleEvent(Event event) { - if (event.type == SWT.FocusIn) { - if (VControl.this == VTracker.getFocusControl()) { - return; - } + private Listener listener = event -> { + if (event.type == SWT.FocusIn) { + if (VControl.this == VTracker.getFocusControl()) { + return; } - VControl.this.handleEvent(event); } + VControl.this.handleEvent(event); }; private boolean activatable = true; @@ -177,12 +177,10 @@ public VControl(VPanel panel, int style) { if ((style & SWT.OK) != 0) { setPolygon(Points_OK); - setForeground( - Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN)); + if (foreground == null) setForeground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN)); } else if ((style & SWT.CANCEL) != 0) { setPolygon(Points_Cancel); - setForeground( - Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED)); + if (foreground == null) setForeground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED)); } else if ((style & SWT.ARROW) != 0) { if ((style & SWT.DOWN) != 0) { setPolygon(Points_Down); @@ -530,7 +528,7 @@ public String getText() { } public String getToolTipText() { - return (tooltipText != null) ? tooltipText : ""; + return (tooltipText != null) ? tooltipText : ""; //$NON-NLS-1$ } public abstract Type getType(); @@ -627,7 +625,7 @@ public void notifyListeners(int eventType, Event event) { event.data = this; event.type = eventType; if (this instanceof VNative && eventType == SWT.FocusOut) { - System.out.println("wtf"); + System.out.println("wtf"); //$NON-NLS-1$ } for (Listener listener : getListeners(eventType)) { listener.handleEvent(event); @@ -1086,7 +1084,7 @@ public Point toDisplay(int x, int y) { @Override public String toString() { - return super.toString() + " {" + text + "}"; + return super.toString() + " {" + text + "}"; //$NON-NLS-1$ //$NON-NLS-2$ } public void update() {