From: Marc Englund Date: Tue, 18 Sep 2007 11:32:41 +0000 (+0000) Subject: WidgetSet extending initial commit X-Git-Tag: 6.7.0.beta1~6010 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fc78593ebc656986b2c92785f00749339728527b;p=vaadin-framework.git WidgetSet extending initial commit svn changeset:2308/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/demo/reservation/gwt/WidgetSet.gwt.xml b/src/com/itmill/toolkit/demo/reservation/gwt/WidgetSet.gwt.xml new file mode 100644 index 0000000000..2a360b6179 --- /dev/null +++ b/src/com/itmill/toolkit/demo/reservation/gwt/WidgetSet.gwt.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/com/itmill/toolkit/demo/reservation/gwt/client/WidgetSet.java b/src/com/itmill/toolkit/demo/reservation/gwt/client/WidgetSet.java new file mode 100644 index 0000000000..b17de6263f --- /dev/null +++ b/src/com/itmill/toolkit/demo/reservation/gwt/client/WidgetSet.java @@ -0,0 +1,34 @@ +package com.itmill.toolkit.demo.reservation.gwt.client; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.Widget; +import com.itmill.toolkit.demo.reservation.gwt.client.ui.IGoogleMap; +import com.itmill.toolkit.terminal.gwt.client.DefaultWidgetSet; +import com.itmill.toolkit.terminal.gwt.client.UIDL; + +public class WidgetSet extends DefaultWidgetSet { + public Widget createWidget(UIDL uidl) { + String className = resolveWidgetTypeName(uidl); + if ("com.itmill.toolkit.terminal.gwt.client.ui.IGoogleMap" + .equals(className)) { + return new IGoogleMap(); + } + + return super.createWidget(uidl); + } + + protected String resolveWidgetTypeName(UIDL uidl) { + + String tag = uidl.getTag(); + if ("googlemap".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.IGoogleMap"; + } + + return super.resolveWidgetTypeName(uidl); + } + + public boolean isCorrectImplementation(Widget currentWidget, UIDL uidl) { + return GWT.getTypeName(currentWidget).equals( + resolveWidgetTypeName(uidl)); + } +} diff --git a/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java b/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java new file mode 100644 index 0000000000..2aa244f3ae --- /dev/null +++ b/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java @@ -0,0 +1,91 @@ +package com.itmill.toolkit.demo.reservation.gwt.client.ui; + +import java.util.Iterator; + +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.mapitz.gwt.googleMaps.client.GLatLng; +import com.mapitz.gwt.googleMaps.client.GMap2; +import com.mapitz.gwt.googleMaps.client.GMap2EventManager; +import com.mapitz.gwt.googleMaps.client.GMap2Widget; +import com.mapitz.gwt.googleMaps.client.GMarker; +import com.mapitz.gwt.googleMaps.client.GMarkerEventClickListener; +import com.mapitz.gwt.googleMaps.client.GMarkerEventManager; + +public class IGoogleMap extends GMap2Widget implements Paintable { + + GMap2EventManager mapEventManager; + GMarkerEventManager markerEventManager; + GMap2 map; + + public IGoogleMap() { + mapEventManager = GMap2EventManager.getInstance(); + map = this.getGmap(); + } + + public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { + GLatLng pos = null; + for (Iterator it = uidl.getChildIterator(); it.hasNext();) { + UIDL u = (UIDL) it.next(); + if (u.getTag().equals("markers")) { + + for (Iterator m = u.getChildIterator(); m.hasNext();) { + UIDL umarker = (UIDL) m.next(); + String html = umarker.getStringAttribute("html"); + float x = umarker.getFloatAttribute("x"); + float y = umarker.getFloatAttribute("y"); + pos = new GLatLng(x, y); + GMarker marker = new GMarker(pos); + map.addOverlay(marker); + if (html != null) { + addMarkerPopup(marker, html); + } + } + } + } + if (uidl.hasAttribute("width")) { + setWidth(""+uidl.getIntAttribute("width")); + } + if (uidl.hasAttribute("height")) { + setHeight(""+uidl.getIntAttribute("height")); + } + if (uidl.hasAttribute("zoom")) { + map.setZoom(uidl.getIntAttribute("zoom")); + } + if (uidl.hasAttribute("centerX") && uidl.hasAttribute("centerY")) { + GLatLng center = new GLatLng(uidl.getFloatAttribute("centerX"), + uidl.getFloatAttribute("centerY")); + map.setCenter(center); + } else if (pos!=null) { + // use last marker position + map.setCenter(pos); + } + + } + + private void addMarkerPopup(GMarker marker, String html) { + if (markerEventManager == null) { + markerEventManager = GMarkerEventManager.getInstance(); + } + + markerEventManager.addOnClickListener(marker, new MarkerEventListener( + html)); + + } + + private class MarkerEventListener implements GMarkerEventClickListener { + String html; + + public MarkerEventListener(String html) { + this.html = html; + } + + public void onClick(GMarker marker) { + marker.openInfoWindowHtml(html); + } + + public void onDblClick(GMarker marker) { + } + } +} diff --git a/src/com/itmill/toolkit/terminal/gwt/Client.gwt.xml b/src/com/itmill/toolkit/terminal/gwt/Client.gwt.xml deleted file mode 100644 index 71353c5262..0000000000 --- a/src/com/itmill/toolkit/terminal/gwt/Client.gwt.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/com/itmill/toolkit/terminal/gwt/WidgetSet.gwt.xml b/src/com/itmill/toolkit/terminal/gwt/WidgetSet.gwt.xml new file mode 100644 index 0000000000..a5d027be61 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/WidgetSet.gwt.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/com/itmill/toolkit/terminal/gwt/WidgetSetNoEntry.gwt.xml b/src/com/itmill/toolkit/terminal/gwt/WidgetSetNoEntry.gwt.xml new file mode 100644 index 0000000000..62b16184c7 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/WidgetSetNoEntry.gwt.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java index 4b9977b512..e95d435443 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java @@ -28,7 +28,7 @@ import com.itmill.toolkit.terminal.gwt.client.ui.IView; /** * Entry point classes define onModuleLoad(). */ -public class ApplicationConnection implements EntryPoint, FocusListener { +public class ApplicationConnection implements FocusListener { private String appUri; @@ -42,38 +42,26 @@ public class ApplicationConnection implements EntryPoint, FocusListener { private HashMap paintableToId = new HashMap(); - private final WidgetFactory widgetFactory; + private final WidgetSet widgetSet; private IContextMenu contextMenu = null; private IView view = new IView(); - public ApplicationConnection() { - widgetFactory = createWidgetFactory(); - } - - /** - * This is the entry point method. - */ - public void onModuleLoad() { - + public ApplicationConnection(WidgetSet widgetSet) { + this.widgetSet = widgetSet; appUri = getAppUri(); - - if(isDebugMode()) { - console = new DebugConsole(); + + if (isDebugMode()) { + console = new DebugConsole(); } else { - console = new NullConsole(); + console = new NullConsole(); } makeUidlRequest("repaintAll=1"); - + // TODO remove hardcoded id name RootPanel.get("itmtk-ajax-window").add(view); - - } - - protected static WidgetFactory createWidgetFactory() { - return new DefaultWidgetFactory(); } public static Console getConsole() { @@ -367,10 +355,10 @@ public class ApplicationConnection implements EntryPoint, FocusListener { boolean manageCaption) { // Switch to correct implementation if needed - if (!widgetFactory.isCorrectImplementation(component, uidl)) { + if (!widgetSet.isCorrectImplementation(component, uidl)) { Layout parent = getParentLayout(component); if (parent != null) { - Widget w = widgetFactory.createWidget(uidl); + Widget w = widgetSet.createWidget(uidl); parent.replaceChildComponent(component, w); registerPaintable(uidl.getId(), (Paintable) w); ((Paintable) w).updateFromUIDL(uidl, this); @@ -431,7 +419,7 @@ public class ApplicationConnection implements EntryPoint, FocusListener { Widget w = (Widget) getPaintable(id); if (w != null) return w; - w = widgetFactory.createWidget(uidl); + w = widgetSet.createWidget(uidl); registerPaintable(id, (Paintable) w); return w; } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java new file mode 100644 index 0000000000..d0ccf5d800 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java @@ -0,0 +1,258 @@ +package com.itmill.toolkit.terminal.gwt.client; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.Widget; +import com.itmill.toolkit.terminal.gwt.client.ui.IButton; +import com.itmill.toolkit.terminal.gwt.client.ui.ICalendar; +import com.itmill.toolkit.terminal.gwt.client.ui.ICheckBox; +import com.itmill.toolkit.terminal.gwt.client.ui.ICustomLayout; +import com.itmill.toolkit.terminal.gwt.client.ui.IDateFieldCalendar; +import com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded; +import com.itmill.toolkit.terminal.gwt.client.ui.IFilterSelect; +import com.itmill.toolkit.terminal.gwt.client.ui.IForm; +import com.itmill.toolkit.terminal.gwt.client.ui.IFormLayout; +import com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout; +import com.itmill.toolkit.terminal.gwt.client.ui.ILabel; +import com.itmill.toolkit.terminal.gwt.client.ui.ILink; +import com.itmill.toolkit.terminal.gwt.client.ui.IOptionGroup; +import com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutHorizontal; +import com.itmill.toolkit.terminal.gwt.client.ui.IOrderedLayoutVertical; +import com.itmill.toolkit.terminal.gwt.client.ui.IPanel; +import com.itmill.toolkit.terminal.gwt.client.ui.IPasswordField; +import com.itmill.toolkit.terminal.gwt.client.ui.IPopupCalendar; +import com.itmill.toolkit.terminal.gwt.client.ui.IScrollTable; +import com.itmill.toolkit.terminal.gwt.client.ui.ISelect; +import com.itmill.toolkit.terminal.gwt.client.ui.ISlider; +import com.itmill.toolkit.terminal.gwt.client.ui.ISplitPanelHorizontal; +import com.itmill.toolkit.terminal.gwt.client.ui.ISplitPanelVertical; +import com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging; +import com.itmill.toolkit.terminal.gwt.client.ui.ITabsheet; +import com.itmill.toolkit.terminal.gwt.client.ui.ITextArea; +import com.itmill.toolkit.terminal.gwt.client.ui.ITextField; +import com.itmill.toolkit.terminal.gwt.client.ui.ITextualDate; +import com.itmill.toolkit.terminal.gwt.client.ui.ITree; +import com.itmill.toolkit.terminal.gwt.client.ui.ITwinColSelect; +import com.itmill.toolkit.terminal.gwt.client.ui.IUnknownComponent; +import com.itmill.toolkit.terminal.gwt.client.ui.IUpload; +import com.itmill.toolkit.terminal.gwt.client.ui.IView; +import com.itmill.toolkit.terminal.gwt.client.ui.IWindow; + +public class DefaultWidgetSet implements WidgetSet { + + protected ApplicationConnection appConn; + + /** + * This is the entry point method. + */ + public void onModuleLoad() { + appConn = new ApplicationConnection(this); + } + + 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.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.IDateFieldCalendar" + .equals(className)) { + return new IDateFieldCalendar(); + } 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(); + } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IForm" + .equals(className)) { + return new IForm(); + } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IFormLayout" + .equals(className)) { + return new IFormLayout(); + } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IUpload" + .equals(className)) { + return new IUpload(); + } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ISplitPanelHorizontal" + .equals(className)) { + return new ISplitPanelHorizontal(); + } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ISplitPanelVertical" + .equals(className)) { + return new ISplitPanelVertical(); + } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IFilterSelect" + .equals(className)) { + return new IFilterSelect(); + } + return new IUnknownComponent(); + + /* + * TODO: Class based impl, use when GWT supports return + * (Widget)GWT.create(resolveWidgetClass(uidl)); + */ + } + + protected 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.IFilterSelect"; + } + } else if ("panel".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.IPanel"; + } 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 ("calendarfield".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.ICalendar"; + } else if ("slider".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.ISlider"; + } else if ("form".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.IForm"; + } else if ("formlayout".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.IFormLayout"; + } else if ("upload".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.IUpload"; + } else if ("hsplitpanel".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.ISplitPanelHorizontal"; + } else if ("vsplitpanel".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.ISplitPanelVertical"; + } + + return "com.itmill.toolkit.terminal.gwt.client.ui.IUnknownComponent"; + + /* + * TODO: use class based impl when GWT supports it + */ + } + + public boolean isCorrectImplementation(Widget currentWidget, UIDL uidl) { + return GWT.getTypeName(currentWidget).equals( + resolveWidgetTypeName(uidl)); + } + +} diff --git a/src/com/itmill/toolkit/terminal/gwt/client/WidgetFactory.java b/src/com/itmill/toolkit/terminal/gwt/client/WidgetFactory.java deleted file mode 100644 index 72b327df19..0000000000 --- a/src/com/itmill/toolkit/terminal/gwt/client/WidgetFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.itmill.toolkit.terminal.gwt.client; - -import com.google.gwt.user.client.ui.Widget; - -public interface WidgetFactory { - - /** Create an uninitialized component that best matches given UIDL. - * - * @param uidl UIDL to be painted with returned component. - * @return New uninitialized and unregistered component that can paint given UIDL. - */ - Widget createWidget(UIDL uidl); - - /** Test if the given component implementation conforms to UIDL. - * - * @param currentWidget Current implementation of the component - * @param uidl UIDL to test against - * @return true iff createWidget would return a new component of the same class than currentWidget - */ - boolean isCorrectImplementation(Widget currentWidget, UIDL uidl); -} diff --git a/src/com/itmill/toolkit/terminal/gwt/client/WidgetSet.java b/src/com/itmill/toolkit/terminal/gwt/client/WidgetSet.java new file mode 100644 index 0000000000..bec94e3a4c --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/WidgetSet.java @@ -0,0 +1,22 @@ +package com.itmill.toolkit.terminal.gwt.client; + +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.user.client.ui.Widget; + +public interface WidgetSet extends EntryPoint { + + /** Create an uninitialized component that best matches given UIDL. + * + * @param uidl UIDL to be painted with returned component. + * @return New uninitialized and unregistered component that can paint given UIDL. + */ + public Widget createWidget(UIDL uidl); + + /** Test if the given component implementation conforms to UIDL. + * + * @param currentWidget Current implementation of the component + * @param uidl UIDL to test against + * @return true iff createWidget would return a new component of the same class than currentWidget + */ + public boolean isCorrectImplementation(Widget currentWidget, UIDL uidl); +} diff --git a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java index 0eba8a1323..cd76d4c1e7 100644 --- a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java +++ b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java @@ -438,7 +438,7 @@ public class ApplicationServlet extends HttpServlet { .write("\n"); - page.write("\n\nIT Mill Toolkit 5\n" + + page.write("\n\nIT Mill Toolkit 5\n" + "\n" + - "" + + ""+ + + "" + "" + "\n\n" +