]> source.dussan.org Git - vaadin-framework.git/commitdiff
TextFields now support width properly
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 14 Mar 2008 07:59:12 +0000 (07:59 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 14 Mar 2008 07:59:12 +0000 (07:59 +0000)
svn changeset:4045/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IPopupCalendar.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java

index 098967b8d90c54237d1d6d76680c9e33b10f7334..c398c1b74278d048952f812fcab8a0f13adcb18e 100644 (file)
@@ -111,4 +111,12 @@ public class IPopupCalendar extends ITextualDate implements Paintable,
         calendar.setFocus(focus);\r
     }\r
 \r
+    protected int getFieldExtraWidth() {\r
+        if (fieldExtraWidth < 0) {\r
+            fieldExtraWidth = super.getFieldExtraWidth();\r
+            fieldExtraWidth += calendarToggle.getOffsetWidth();\r
+        }\r
+        return fieldExtraWidth;\r
+    }\r
+\r
 }\r
index beff13d1c5ee3a21f99180c84a8dae0efb60f716..02a401833ddbc2e2037f2b6d1e6db9d2f1c4aa6e 100644 (file)
@@ -8,13 +8,14 @@ import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.ui.ChangeListener;\r
 import com.google.gwt.user.client.ui.Widget;\r
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
+import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener;\r
 import com.itmill.toolkit.terminal.gwt.client.DateLocale;\r
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
 import com.itmill.toolkit.terminal.gwt.client.util.SimpleDateFormat;\r
 \r
 public class ITextualDate extends IDateField implements Paintable,\r
-        ChangeListener {\r
+        ChangeListener, ContainerResizedListener {\r
 \r
     private final ITextField text;\r
 \r
@@ -22,6 +23,12 @@ public class ITextualDate extends IDateField implements Paintable,
 \r
     private DateLocale dl;\r
 \r
+    private String width;\r
+\r
+    private boolean needLayout;\r
+\r
+    protected int fieldExtraWidth = -1;\r
+\r
     public ITextualDate() {\r
         super();\r
         text = new ITextField();\r
@@ -237,4 +244,43 @@ public class ITextualDate extends IDateField implements Paintable,
 \r
         return format.trim();\r
     }\r
+\r
+    public void setWidth(String newWidth) {\r
+        if (!"".equals(newWidth) && (width == null || !newWidth.equals(width))) {\r
+            needLayout = true;\r
+            width = newWidth;\r
+            super.setWidth(width);\r
+            iLayout();\r
+            if (newWidth.indexOf("%") < 0) {\r
+                needLayout = false;\r
+            }\r
+        } else {\r
+            if (width != null && !"".equals(width)) {\r
+                super.setWidth("");\r
+                needLayout = true;\r
+                iLayout();\r
+                needLayout = false;\r
+                width = null;\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     * Returns pixels in x-axis reserved for other than textfield content.\r
+     * \r
+     * @return extra width in pixels\r
+     */\r
+    protected int getFieldExtraWidth() {\r
+        if (fieldExtraWidth < 0) {\r
+            text.setWidth("0px");\r
+            fieldExtraWidth = text.getOffsetWidth();\r
+        }\r
+        return fieldExtraWidth;\r
+    }\r
+\r
+    public void iLayout() {\r
+        if (needLayout) {\r
+            text.setWidth((getOffsetWidth() - getFieldExtraWidth()) + "px");\r
+        }\r
+    }\r
 }\r