]> source.dussan.org Git - vaadin-framework.git/commitdiff
Partial fix for #1656 (modified and error styles to fields)
authorMarc Englund <marc.englund@itmill.com>
Fri, 16 May 2008 14:13:09 +0000 (14:13 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 16 May 2008 14:13:09 +0000 (14:13 +0000)
svn changeset:4531/svn branch:trunk

16 files changed:
WebContent/ITMILL/themes/default/caption/caption.css
WebContent/ITMILL/themes/default/common/common.css
WebContent/ITMILL/themes/default/styles.css
src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
src/com/itmill/toolkit/terminal/gwt/client/ErrorMessage.java
src/com/itmill/toolkit/terminal/gwt/client/ui/Field.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java
src/com/itmill/toolkit/terminal/gwt/client/ui/INativeSelect.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroupBase.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupCalendar.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ISlider.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITextField.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java
src/com/itmill/toolkit/terminal/gwt/client/ui/richtextarea/IRichTextArea.java

index 22dad5bd31ea36985a69a24fb149793c9e2813bd..7407033d53ad40d96370d3b411cbf595ab31b763 100644 (file)
@@ -21,8 +21,8 @@
        vertical-align: middle;
 }
 
-.i-error {
-       padding-left: 15px;
-       background: #fff;
-       border: 1px solid red;
+.i-errormessage {
+       padding: 7px;
+       background-color: #FFE0E0;
+       border: 1px solid #FFB0B0;
 }
\ No newline at end of file
index 55f2a78b086c3ed891107dfb43a3dc66f9c9c89a..2ffb82d6ce2951ef7a80e61ce9db811ccf1f51c0 100644 (file)
        opacity: 0.3;
        filter: Alpha(opacity=30);
 }
-
 .i-required-field-indicator {
        padding-left:2px;
        color: red;
 }
+\r
+/* Field modified & error */\r
+input.i-modified,\r
+.i-richtextarea.i-modified iframe.gwt-RichTextArea,\r
+.i-checkbox.i-modified,\r
+.i-modified .i-select-option,\r
+.i-modified .i-textfield,\r
+.i-modified .i-datefield-calendarpanel,\r
+.i-modified .i-select-select,\r
+.i-modified .i-select-twincol-selections,\r
+.i-modified .i-select-twincol-options,\r
+.i-modified .i-slider-base {\r
+       background-color: #FFFFE0;\r
+}\r
+
+input.i-error,\r
+.i-richtextarea.i-error iframe.gwt-RichTextArea,\r
+.i-checkbox.i-error,\r
+.i-error .i-select-option,\r
+.i-error .i-textfield,\r
+.i-error .i-datefield-calendarpanel,\r
+.i-error .i-select-select,\r
+.i-error .i-select-twincol-selections,\r
+.i-error .i-select-twincol-options,\r
+.i-error .i-slider-base {\r
+       background-color: #FFE0E0;\r
+}
 
 /**
  * Context menu styles 
index c8454d72182eae789189bb1480ff5d700f45d96b..32e1f2dd98c819857e6c55215008c462363a77bc 100644 (file)
        vertical-align: middle;
 }
 
-.i-error {
-       padding-left: 15px;
-       background: #fff;
-       border: 1px solid red;
+.i-errormessage {
+       padding: 7px;
+       background-color: #FFE0E0;
+       border: 1px solid #FFB0B0;
 }
 /* body tag created by servlet */
 .i-generated-body {
        opacity: 0.3;
        filter: Alpha(opacity=30);
 }
-
 .i-required-field-indicator {
        padding-left:2px;
        color: red;
 }
 
+/* Field modified & error */
+input.i-modified,
+.i-richtextarea.i-modified iframe.gwt-RichTextArea,
+.i-checkbox.i-modified,
+.i-modified .i-select-option,
+.i-modified .i-textfield,
+.i-modified .i-datefield-calendarpanel,
+.i-modified .i-select-select,
+.i-modified .i-select-twincol-selections,
+.i-modified .i-select-twincol-options,
+.i-modified .i-slider-base {
+       background-color: #FFFFE0;
+}
+
+input.i-error,
+.i-richtextarea.i-error iframe.gwt-RichTextArea,
+.i-checkbox.i-error,
+.i-error .i-select-option,
+.i-error .i-textfield,
+.i-error .i-datefield-calendarpanel,
+.i-error .i-select-select,
+.i-error .i-select-twincol-selections,
+.i-error .i-select-twincol-options,
+.i-error .i-slider-base {
+       background-color: #FFE0E0;
+}
+
 /**
  * Context menu styles 
  */
index b9f1b9b86885c1b1a0d138d2fff581bb3b167d84..330f8595c13058e07e38c124aa847d2f73ab7325 100755 (executable)
@@ -32,6 +32,7 @@ import com.google.gwt.user.client.ui.HasFocus;
 import com.google.gwt.user.client.ui.HasWidgets;
 import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.ui.ContextMenu;
+import com.itmill.toolkit.terminal.gwt.client.ui.Field;
 import com.itmill.toolkit.terminal.gwt.client.ui.IView;
 import com.itmill.toolkit.terminal.gwt.client.ui.Notification;
 import com.itmill.toolkit.terminal.gwt.client.ui.Notification.HideEvent;
@@ -40,6 +41,8 @@ import com.itmill.toolkit.terminal.gwt.client.ui.Notification.HideEvent;
  * Entry point classes define <code>onModuleLoad()</code>.
  */
 public class ApplicationConnection {
+    public static final String MODIFIED_CLASSNAME = "i-modified";
+    public static final String ERROR_CLASSNAME = "i-error";
 
     public static final String VAR_RECORD_SEPARATOR = "\u001e";
 
@@ -555,6 +558,11 @@ public class ApplicationConnection {
 
     private void addVariableToQueue(String paintableId, String variableName,
             String encodedValue, boolean immediate, char type) {
+        Paintable p = getPaintable(paintableId);
+        if (p instanceof Widget && p instanceof Field) {
+            // Mark as modified if it's a Field
+            ((Widget) p).addStyleName(MODIFIED_CLASSNAME);
+        }
         final String id = paintableId + VAR_FIELD_SEPARATOR + variableName
                 + VAR_FIELD_SEPARATOR + type;
         for (int i = 1; i < pendingVariables.size(); i += 2) {
@@ -771,10 +779,22 @@ public class ApplicationConnection {
             }
         }
 
+        // add modified classname to Fields
+        if (component instanceof Field && uidl.hasAttribute("modified")) {
+            component.addStyleName(MODIFIED_CLASSNAME);
+        }
+        // add error classname to components w/ error
+        if (uidl.hasAttribute("error")) {
+            component.addStyleName(ERROR_CLASSNAME);
+        }
+
         if (usePaintableIdsInDOM) {
             DOM.setElementProperty(component.getElement(), "id", uidl.getId());
         }
 
+        // TODO this should really build one string with all the classnames
+        // and setStyleName() once
+
         return false;
     }
 
index a90a00807dcb67315521474c95f43ed0f8df8e14..80b170a09a24e2952b5c2af5dacdd8d47e6ca5aa 100644 (file)
@@ -13,7 +13,7 @@ import com.google.gwt.user.client.ui.HTML;
 import com.itmill.toolkit.terminal.gwt.client.ui.ToolkitOverlay;
 
 public class ErrorMessage extends FlowPanel {
-    public static final String CLASSNAME = "i-error";
+    public static final String CLASSNAME = "i-errormessage";
 
     public ErrorMessage() {
         super();
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Field.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Field.java
new file mode 100644 (file)
index 0000000..d0e1d0b
--- /dev/null
@@ -0,0 +1,13 @@
+/**\r
+ * \r
+ */\r
+package com.itmill.toolkit.terminal.gwt.client.ui;\r
+\r
+/**\r
+ * This interface indicates that the component is a Field (serverside), and\r
+ * wants (for instance) to automatically get the i-modified classname.\r
+ * \r
+ */\r
+public interface Field {\r
+\r
+}\r
index b326e6e42d76edb7804079c0efb85e2bb90f0488..46ce4eeaa2e4a9729348d2f015d0f448009f0c8e 100644 (file)
@@ -15,7 +15,7 @@ import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
 public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements
-        Paintable {
+        Paintable, Field {
 
     public static final String CLASSNAME = "i-checkbox";
 
index c064164035e49d6a9ec01938fe6ab6c2382458b3..eac7e5c740cacbfd24c16e5e8435544f5af2042e 100644 (file)
@@ -13,7 +13,7 @@ import com.itmill.toolkit.terminal.gwt.client.LocaleNotLoadedException;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 \r
-public class IDateField extends FlowPanel implements Paintable {\r
+public class IDateField extends FlowPanel implements Paintable, Field {\r
 \r
     public static final String CLASSNAME = "i-datefield";\r
 \r
index 1d416642f7af7851200d3057f38c9842d5beaf0a..8b84dd6f59bf95933e7515ffa7d423abd473bb80 100644 (file)
@@ -37,7 +37,7 @@ import com.itmill.toolkit.terminal.gwt.client.Util;
  * 
  * TODO needs major refactoring (to be extensible etc)
  */
-public class IFilterSelect extends Composite implements Paintable,
+public class IFilterSelect extends Composite implements Paintable, Field,
         KeyboardListener, ClickListener, FocusListener, Focusable {
 
     public class FilterSelectSuggestion implements Suggestion, Command {
index 24ee76c5038c53db09e9b16dd4c671a62e7f0ff5..9d536ba8b33dd15b9858566252eab34cf977f7dc 100644 (file)
@@ -11,7 +11,7 @@ import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
-public class INativeSelect extends IOptionGroupBase {
+public class INativeSelect extends IOptionGroupBase implements Field {
 
     public static final String CLASSNAME = "i-select";
 
index 5c77ac33c4f4dfe499a0a1883622c31e973cc05f..d639c075e8b9082e30e1c5216df9429ed84f4939 100644 (file)
@@ -17,7 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 \r
-abstract class IOptionGroupBase extends Composite implements Paintable,\r
+abstract class IOptionGroupBase extends Composite implements Paintable, Field,\r
         ClickListener, ChangeListener, KeyboardListener {\r
 \r
     public static final String CLASSNAME_OPTION = "i-select-option";\r
index c398c1b74278d048952f812fcab8a0f13adcb18e..3bc0a9a03c060fd54f6aca8953f45ebc5541fa03 100644 (file)
@@ -16,7 +16,7 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 \r
-public class IPopupCalendar extends ITextualDate implements Paintable,\r
+public class IPopupCalendar extends ITextualDate implements Paintable, Field,\r
         ClickListener, PopupListener {\r
 \r
     private final IButton calendarToggle;\r
index dc8f18ee6761c67dd0b7a42d1b5ba252e7ccf77e..a7e5ef02d1f6435e3c02eb6f14b5aa9938337bee 100644 (file)
@@ -17,7 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 import com.itmill.toolkit.terminal.gwt.client.Util;\r
 \r
-public class ISlider extends Widget implements Paintable,\r
+public class ISlider extends Widget implements Paintable, Field,\r
         ContainerResizedListener {\r
 \r
     public static final String CLASSNAME = "i-slider";\r
index 94a893b10698df2a909ccfed7e0078e184c2bb3e..d1aa4c176943be874a123cfd9452e9f3d1982527 100644 (file)
@@ -20,14 +20,13 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL;
  * @author IT Mill Ltd.
  * 
  */
-public class ITextField extends TextBoxBase implements Paintable,
+public class ITextField extends TextBoxBase implements Paintable, Field,
         ChangeListener, FocusListener {
 
     /**
      * The input node CSS classname.
      */
     public static final String CLASSNAME = "i-textfield";
-
     /**
      * This CSS classname is added to the input node on hover.
      */
index 560e02f822b1f08cdc5d2e04844ad0640f2b5abf..29013f422feac50e5e15b8660818a30ff02a62b9 100644 (file)
@@ -16,7 +16,7 @@ import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 import com.itmill.toolkit.terminal.gwt.client.Util;\r
 \r
-public class ITextualDate extends IDateField implements Paintable,\r
+public class ITextualDate extends IDateField implements Paintable, Field,\r
         ChangeListener, ContainerResizedListener, Focusable {\r
 \r
     private final ITextField text;\r
@@ -38,7 +38,7 @@ public class ITextualDate extends IDateField implements Paintable,
 \r
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
         // remove possibly added invalid value indication\r
-        text.removeStyleName(ITextField.CLASSNAME + "-error");\r
+        removeStyleName("i-error");\r
 \r
         int origRes = currentResolution;\r
         super.updateFromUIDL(uidl, client);\r
@@ -97,7 +97,7 @@ public class ITextualDate extends IDateField implements Paintable,
      * \r
      */\r
     protected void buildDate() {\r
-\r
+        removeStyleName("i-error");\r
         // Create the initial text for the textfield\r
         String dateText;\r
         if (date != null) {\r
@@ -114,6 +114,7 @@ public class ITextualDate extends IDateField implements Paintable,
         } else {\r
             text.removeStyleName("i-readonly");\r
         }\r
+\r
     }\r
 \r
     public void onChange(Widget sender) {\r
@@ -123,10 +124,10 @@ public class ITextualDate extends IDateField implements Paintable,
                     date = DateTimeFormat.getFormat(getFormatString()).parse(\r
                             text.getText());\r
                     // remove possibly added invalid value indication\r
-                    text.removeStyleName(ITextField.CLASSNAME + "-error");\r
+                    removeStyleName("i-error");\r
                 } catch (final Exception e) {\r
                     ApplicationConnection.getConsole().log(e.getMessage());\r
-                    text.addStyleName(ITextField.CLASSNAME + "-error");\r
+                    addStyleName("i-error");\r
                     client.updateVariable(id, "lastInvalidDateString", text\r
                             .getText(), false);\r
                     date = null;\r
@@ -134,7 +135,7 @@ public class ITextualDate extends IDateField implements Paintable,
             } else {\r
                 date = null;\r
                 // remove possibly added invalid value indication\r
-                text.removeStyleName(ITextField.CLASSNAME + "-error");\r
+                removeStyleName("i-error");\r
             }\r
 \r
             // Update variables\r
index 2eaeed723d737f9eec91f4890ecf45398a30b05f..f0ea0c07d8391f3622fb3255b6fc3514c68bd35d 100644 (file)
@@ -14,6 +14,7 @@ import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
+import com.itmill.toolkit.terminal.gwt.client.ui.Field;
 
 /**
  * This class represents a basic text input field with one row.
@@ -21,7 +22,7 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL;
  * @author IT Mill Ltd.
  * 
  */
-public class IRichTextArea extends Composite implements Paintable,
+public class IRichTextArea extends Composite implements Paintable, Field,
         ChangeListener, FocusListener {
 
     /**