]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTrackedStyledText.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.views.swt.client / src / org / simantics / views / swt / client / impl / SWTTrackedStyledText.java
diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTrackedStyledText.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTrackedStyledText.java
new file mode 100644 (file)
index 0000000..8617acf
--- /dev/null
@@ -0,0 +1,129 @@
+package org.simantics.views.swt.client.impl;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.eclipse.jface.dialogs.IInputValidator;\r
+import org.eclipse.swt.custom.StyledText;\r
+import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.simantics.datatypes.literal.RGB;\r
+import org.simantics.scl.runtime.function.Function1;\r
+import org.simantics.ui.colors.Colors;\r
+import org.simantics.utils.ui.widgets.ITrackedColorProvider;\r
+import org.simantics.utils.ui.widgets.TrackedModifyEvent;\r
+import org.simantics.utils.ui.widgets.TrackedModifyListener;\r
+import org.simantics.utils.ui.widgets.TrackedStyledText;\r
+import org.simantics.views.swt.client.base.SingleSWTViewNode;\r
+\r
+public class SWTTrackedStyledText extends SingleSWTViewNode<StyledText> {\r
+       \r
+       private static final RGB.Integer WHITE = new RGB.Integer(255, 255, 255);\r
+       \r
+       private static final long serialVersionUID = 7932335224632082902L;\r
+       \r
+       private TrackedStyledText tt;\r
+       \r
+       protected Color invalidBackgroundColor;\r
+       protected Color inactiveBackgroundColor;\r
+       protected Color hoverBackgroundColor;\r
+       protected Color editingBackgroundColor;\r
+\r
+       public Function1<String, String> modifier;\r
+       public Function1<String, String> validator;\r
+       \r
+       public RGB.Integer invalidBackground = WHITE;\r
+       public RGB.Integer inactiveBackground = WHITE;\r
+       public RGB.Integer hoverBackground = WHITE;\r
+       public RGB.Integer editingBackground = WHITE;\r
+\r
+       protected ArrayList<TrackedModifyListener> listeners = new ArrayList<TrackedModifyListener>();\r
+       \r
+       public void addModifyListener(TrackedModifyListener listener) {\r
+               this.listeners.add(listener);\r
+       }\r
+       \r
+       @Override\r
+       public void createControls(Composite parent) {\r
+               \r
+               tt = new TrackedStyledText(parent, style);\r
+               control = tt.getWidget();\r
+\r
+               setProperties();\r
+               \r
+               tt.setColorProvider(new ITrackedColorProvider() {\r
+                       \r
+                       @Override\r
+                       public Color getInvalidBackground() {\r
+                               return invalidBackgroundColor;\r
+                       }\r
+                       \r
+                       @Override\r
+                       public Color getInactiveBackground() {\r
+                               return inactiveBackgroundColor;\r
+                       }\r
+                       \r
+                       @Override\r
+                       public Color getHoverBackground() {\r
+                               return hoverBackgroundColor;\r
+                       }\r
+                       \r
+                       @Override\r
+                       public Color getEditingBackground() {\r
+                               return editingBackgroundColor;\r
+                       }\r
+                       \r
+               });\r
+               \r
+               tt.setInputValidator(new IInputValidator() {\r
+                       \r
+                       @Override\r
+                       public String isValid(String newText) {\r
+                               if(validator != null) return validator.apply(newText);\r
+                               else return null;\r
+                       }\r
+                       \r
+               });\r
+               \r
+               tt.addModifyListener(new TrackedModifyListener() {\r
+                       \r
+                       @Override\r
+                       public void modifyText(TrackedModifyEvent e) {\r
+                               if(modifier != null)\r
+                                       modifier.apply(e.getText());\r
+                               for(TrackedModifyListener listener : listeners) listener.modifyText(e);\r
+                       }\r
+                       \r
+               });\r
+               \r
+       }\r
+\r
+       @Override\r
+       public void synchronizeText(String text) {\r
+               if(text != null) control.setText(text);\r
+       }\r
+       \r
+       final public void synchronizeInvalidBackground(RGB.Integer invalidBackground) {\r
+               if(invalidBackground != null) invalidBackgroundColor = Colors.swt(control.getDisplay(), invalidBackground);\r
+       }\r
+\r
+       final public void synchronizeInactiveBackground(RGB.Integer inactiveBackground) {\r
+               if(inactiveBackground != null) inactiveBackgroundColor = Colors.swt(control.getDisplay(), inactiveBackground);\r
+       }\r
+\r
+       final public void synchronizeHoverBackground(RGB.Integer hoverBackground) {\r
+               if(hoverBackground != null) hoverBackgroundColor = Colors.swt(control.getDisplay(), hoverBackground);\r
+       }\r
+\r
+       final public void synchronizeEditingBackground(RGB.Integer editingBackground) {\r
+               if(editingBackground != null) editingBackgroundColor = Colors.swt(control.getDisplay(), editingBackground);\r
+       }\r
+       \r
+       final public void synchronizeValidator(Function1<String, String> validator) {\r
+               \r
+       }\r
+\r
+       final public void synchronizeModifier(Function1<String, String> modifier) {\r
+               \r
+       }\r
+       \r
+}\r