public class DefaultWidgetFactory implements WidgetFactory {
- public Widget createWidget(UIDL uidl) {
+ public Widget createWidget(UIDL uidl) {
- String className = resolveWidgetTypeName(uidl);
-
- if ("com.itmill.toolkit.terminal.gwt.client.ui.ICheckBox".equals(className)) {
- return new ICheckBox();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IButton".equals(className)) {
- return new IButton();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IView".equals(className)) {
- // TODO remove IView?
- return new IView();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IWindow".equals(className)) {
- return new IWindow();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutVertical".equals(className)) {
- return new IOrderedLayoutVertical();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutHorizontal".equals(className)) {
- return new IOrderedLayoutHorizontal();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ILabel".equals(className)) {
- return new ILabel();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ILink".equals(className)) {
- return new ILink();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout".equals(className)) {
- return new IGridLayout();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITree".equals(className)) {
- return new ITree();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IOptionGroup".equals(className)) {
- return new IOptionGroup();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITwinColSelect".equals(className)) {
- return new ITwinColSelect();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ISelect".equals(className)) {
- return new ISelect();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IPanel".equals(className)) {
- return new IPanel();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IComponent".equals(className)) {
- return new IComponent();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITabsheet".equals(className)) {
- return new ITabsheet();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded".equals(className)) {
- return new IEmbedded();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ICustomLayout".equals(className)) {
- return new ICustomLayout();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITextArea".equals(className)) {
- return new ITextArea();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IPasswordField".equals(className)) {
- return new IPasswordField();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITextField".equals(className)) {
- return new ITextField();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging".equals(className)) {
- return new ITablePaging();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IScrollTable".equals(className)) {
- return new IScrollTable();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ICalendar".equals(className)) {
- return new ICalendar();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITextualDate".equals(className)) {
- return new ITextualDate();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IPopupCalendar".equals(className)) {
- return new IPopupCalendar();
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ISlider".equals(className)) {
- return new ISlider();
- }
- return new IUnknownComponent();
-
- /* TODO: Class based impl, use when GWT supports
+ String className = resolveWidgetTypeName(uidl);
+
+ if ("com.itmill.toolkit.terminal.gwt.client.ui.ICheckBox".equals(className)) {
+ return new ICheckBox();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IButton".equals(className)) {
+ return new IButton();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IView".equals(className)) {
+ // TODO remove IView?
+ return new IView();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IWindow".equals(className)) {
+ return new IWindow();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutVertical".equals(className)) {
+ return new IOrderedLayoutVertical();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutHorizontal".equals(className)) {
+ return new IOrderedLayoutHorizontal();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ILabel".equals(className)) {
+ return new ILabel();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ILink".equals(className)) {
+ return new ILink();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout".equals(className)) {
+ return new IGridLayout();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITree".equals(className)) {
+ return new ITree();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IOptionGroup".equals(className)) {
+ return new IOptionGroup();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITwinColSelect".equals(className)) {
+ return new ITwinColSelect();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ISelect".equals(className)) {
+ return new ISelect();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IPanel".equals(className)) {
+ return new IPanel();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IComponent".equals(className)) {
+ return new IComponent();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITabsheet".equals(className)) {
+ return new ITabsheet();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded".equals(className)) {
+ return new IEmbedded();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ICustomLayout".equals(className)) {
+ return new ICustomLayout();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITextArea".equals(className)) {
+ return new ITextArea();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IPasswordField".equals(className)) {
+ return new IPasswordField();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITextField".equals(className)) {
+ return new ITextField();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging".equals(className)) {
+ return new ITablePaging();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IScrollTable".equals(className)) {
+ return new IScrollTable();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ICalendar".equals(className)) {
+ return new ICalendar();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ITextualDate".equals(className)) {
+ return new ITextualDate();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IPopupCalendar".equals(className)) {
+ return new IPopupCalendar();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ISlider".equals(className)) {
+ return new ISlider();
+ }
+ return new IUnknownComponent();
+
+ /* TODO: Class based impl, use when GWT supports
return (Widget)GWT.create(resolveWidgetClass(uidl));
- */
- }
+ */
+ }
- private String resolveWidgetTypeName(UIDL uidl) {
+ private String resolveWidgetTypeName(UIDL uidl) {
- String tag = uidl.getTag();
- if ("button".equals(tag)) {
- if ("switch".equals(uidl.getStringAttribute("type"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ICheckBox";
- } else {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IButton";
- }
- } else if ("window".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IWindow";
- } else if ("orderedlayout".equals(tag)) {
- if ("horizontal".equals(uidl.getStringAttribute("orientation"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutHorizontal";
- } else {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutVertical";
- }
- } else if ("label".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ILabel";
- } else if ("link".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ILink";
- } else if ("gridlayout".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout";
- } else if ("tree".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITree";
- } else if ("select".equals(tag)) {
- if ("optiongroup".equals(uidl.getStringAttribute("style"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IOptionGroup";
- } else if ("twincol".equals(uidl.getStringAttribute("style"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITwinColSelect";
- } else {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ISelect";
- }
- } else if ("panel".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IPanel";
- } else if ("component".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IComponent";
- } else if ("tabsheet".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITabsheet";
- } else if ("embedded".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded";
- } else if ("customlayout".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ICustomLayout";
- } else if ("textfield".equals(tag)) {
- if (uidl.hasAttribute("multiline")) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITextArea";
- } else if (uidl.getBooleanAttribute("secret")) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IPasswordField";
- } else {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITextField";
- }
- } else if ("table".equals(tag)) {
- if (uidl.hasAttribute("style")) {
- if ("paging".equals(uidl.getStringAttribute("style"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging";
+ String tag = uidl.getTag();
+ if ("button".equals(tag)) {
+ if ("switch".equals(uidl.getStringAttribute("type"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ICheckBox";
+ } else {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IButton";
+ }
+ } else if ("window".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IWindow";
+ } else if ("orderedlayout".equals(tag)) {
+ if ("horizontal".equals(uidl.getStringAttribute("orientation"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutHorizontal";
+ } else {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutVertical";
+ }
+ } else if ("label".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ILabel";
+ } else if ("link".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ILink";
+ } else if ("gridlayout".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout";
+ } else if ("tree".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITree";
+ } else if ("select".equals(tag)) {
+ if ("optiongroup".equals(uidl.getStringAttribute("style"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IOptionGroup";
+ } else if ("twincol".equals(uidl.getStringAttribute("style"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITwinColSelect";
+ } else {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ISelect";
+ }
+ } else if ("panel".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IPanel";
+ } else if ("component".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IComponent";
+ } else if ("tabsheet".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITabsheet";
+ } else if ("embedded".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded";
+ } else if ("customlayout".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ICustomLayout";
+ } else if ("textfield".equals(tag)) {
+ if (uidl.hasAttribute("multiline")) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITextArea";
+ } else if (uidl.getBooleanAttribute("secret")) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IPasswordField";
+ } else {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITextField";
+ }
+ } else if ("table".equals(tag)) {
+ if (uidl.hasAttribute("style")) {
+ if ("paging".equals(uidl.getStringAttribute("style"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging";
+ }
+ } else {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IScrollTable";
+ }
+ } else if ("datefield".equals(tag)) {
+ if (uidl.hasAttribute("style")) {
+ if ("calendar".equals(uidl.getStringAttribute("style"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ICalendar";
+ } else if ("text".equals(uidl.getStringAttribute("style"))) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ITextualDate";
+ }
+ } else {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IPopupCalendar";
+ }
+ } else if ("slider".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ISlider";
}
- } else {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IScrollTable";
- }
- } else if ("datefield".equals(tag)) {
- if (uidl.hasAttribute("style")) {
- if ("calendar".equals(uidl.getStringAttribute("style"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ICalendar";
- } else if ("text".equals(uidl.getStringAttribute("style"))) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ITextualDate";
- }
- } else {
- return "com.itmill.toolkit.terminal.gwt.client.ui.IPopupCalendar";
- }
- } else if ("slider".equals(tag)) {
- return "com.itmill.toolkit.terminal.gwt.client.ui.ISlider";
- }
-
- return "com.itmill.toolkit.terminal.gwt.client.ui.IUnknownComponent";
-
- /* TODO: Class based impl, use when GWT supports
+
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IUnknownComponent";
+
+ /* TODO: Class based impl, use when GWT supports
if ("button".equals(tag)) {
return IButton.class;
} else if ("window".equals(tag)) {
}
return IUnknownComponent.class;
- */
- }
+ */
+ }
- public boolean isCorrectImplementation(Widget currentWidget, UIDL uidl) {
- return GWT.getTypeName(currentWidget).equals(resolveWidgetTypeName(uidl));
- }
+ public boolean isCorrectImplementation(Widget currentWidget, UIDL uidl) {
+ return GWT.getTypeName(currentWidget).equals(resolveWidgetTypeName(uidl));
+ }
}