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
\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
\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