diff options
6 files changed, 64 insertions, 56 deletions
diff --git a/src/com/itmill/toolkit/demo/colorpicker/gwt/ColorPickerWidgetSet.gwt.xml b/src/com/itmill/toolkit/demo/colorpicker/gwt/ColorPickerWidgetSet.gwt.xml index 798a5e68cb..b04380772e 100644 --- a/src/com/itmill/toolkit/demo/colorpicker/gwt/ColorPickerWidgetSet.gwt.xml +++ b/src/com/itmill/toolkit/demo/colorpicker/gwt/ColorPickerWidgetSet.gwt.xml @@ -1,6 +1,6 @@ <module> - <!-- Inherit the NoEntry version to avoid multiple entrypoints -->
- <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry" />
+ <!-- Inherit DefaultWidgetSet -->
+ <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSet" />
<!-- WidgetSet default theme --> <stylesheet src="colorpicker/styles.css"/> diff --git a/src/com/itmill/toolkit/demo/reservation/gwt/ReservationWidgetSet.gwt.xml b/src/com/itmill/toolkit/demo/reservation/gwt/ReservationWidgetSet.gwt.xml index f68a043fe3..a15cd4185f 100644 --- a/src/com/itmill/toolkit/demo/reservation/gwt/ReservationWidgetSet.gwt.xml +++ b/src/com/itmill/toolkit/demo/reservation/gwt/ReservationWidgetSet.gwt.xml @@ -1,6 +1,6 @@ <module> - <!-- Inherit the NoEntry version to avoid multiple entrypoints -->
- <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry" />
+ <!-- Inherit DefaultWidgetSet -->
+ <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSet" />
<!-- The googlemaps_gwt module --> <inherits name="com.google.gwt.maps.GoogleMaps" /> diff --git a/src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml b/src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml index c294d883f5..6f09f7a865 100644 --- a/src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml +++ b/src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml @@ -1,6 +1,6 @@ <module> - <!-- Inherit the NoEntry version to avoid multiple entrypoints --> - <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry" /> + <!-- Inherit the DefaultWidgetSet --> + <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSet" /> <!-- WidgetSet default theme --> <stylesheet src="sampler/styles.css"/> diff --git a/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSet.gwt.xml b/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSet.gwt.xml index a226292394..1139506cc4 100644 --- a/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSet.gwt.xml +++ b/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSet.gwt.xml @@ -1,7 +1,29 @@ <module> - <source path="client"/>
-
- <!-- This module just defines a entrypoint for the DefaultWidgetSet --> - <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry"/> - <entry-point class="com.itmill.toolkit.terminal.gwt.client.DefaultWidgetSet"/> + <!-- + This GWT module defines the IT Mill Toolkit DefaultWidgetSet. This is + the module you want to extend when creating an extended widget set, or + when creating a specialized widget set with a subset of the + components. + --> + <!-- + NOTE that your WidgetSet entry-point (.java) should have the same + "logical" name (a.k.a SimpleName) as the specification (.gwt.xml). + --> + <!-- + E.g: com/example/gwt/MyWidgetSet.gwt.xml should point to the + entry-point + com.example.gwt.client[.some.package].MyWidgetSet.java + --> + + <inherits name="com.google.gwt.user.User" /> + + <inherits name="com.google.gwt.http.HTTP" /> + + <inherits name="com.google.gwt.xml.XML" /> + + <inherits name="com.google.gwt.json.JSON" /> + + <source path="client" /> + + <entry-point class="com.itmill.toolkit.terminal.gwt.client.DefaultWidgetSet" /> </module> diff --git a/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSetNoEntry.gwt.xml b/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSetNoEntry.gwt.xml index 7520019676..3745d3f2c0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSetNoEntry.gwt.xml +++ b/src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSetNoEntry.gwt.xml @@ -1,46 +1,6 @@ <module> - <!--
- This is the NoEntry version of DefaultWidgetSet.
- This is the module you want to extend when creating an extended
- widget set.
- -->
- - <inherits name="com.google.gwt.user.User"/> - - <inherits name="com.google.gwt.http.HTTP"/> - - <inherits name="com.google.gwt.xml.XML"/> - - <inherits name="com.google.gwt.json.JSON"/>
- - <source path="client"/> - - <source path="gwtwidgets"/> - - <!--
- Default theme for this widget set.
- Please name the sub directory differently when creating a extended widget set
- (e.g. src="mywidgets/styles.css") to avoid naming conflicts.
- - <stylesheet src="default/common/common.css"/> - <stylesheet src="default/button/button.css"/> - <stylesheet src="default/textfield/textfield.css"/> - <stylesheet src="default/select/select.css"/> - <stylesheet src="default/panel/panel.css"/> - <stylesheet src="default/tabsheet/tabsheet.css"/> - <stylesheet src="default/datefield/datefield.css"/> - <stylesheet src="default/table/table.css"/> - <stylesheet src="default/slider/slider.css"/> - <stylesheet src="default/window/window.css"/> - <stylesheet src="default/window/notification.css"/> - <stylesheet src="default/caption/caption.css"/> - <stylesheet src="default/tree/tree.css"/> - <stylesheet src="default/splitpanel/splitpanel.css"/> - <stylesheet src="default/select/filterselect.css"/> - <stylesheet src="default/progressindicator/progressindicator.css"/> - <stylesheet src="default/expandlayout/expandlayout.css"/> - <stylesheet src="default/orderedlayout/orderedlayout.css"/> - <stylesheet src="default/accordion/accordion.css"/> - --> - -</module> + <!-- + "NoEntry" -concept deprecated, inherit DefaultWidgetSet instead. + --> + <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSet" /> +</module>
\ No newline at end of file diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java index 919ab0807c..06dee4db43 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java @@ -4,10 +4,14 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.JavaScriptObject; public class ApplicationConfiguration { + // can only be inited once, to avoid multiple-entrypoint-problem + private static WidgetSet initedWidgetSet; + private String id; private String themeUri; private String pathInfo; @@ -105,6 +109,28 @@ public class ApplicationConfiguration { * the widgetset that is running the apps */ public static void initConfigurations(WidgetSet widgetset) { + String wsname = widgetset.getClass().getName(); + String module = GWT.getModuleName(); + int lastdot = module.lastIndexOf("."); + String base = module.substring(0, lastdot); + String simpleName = module.substring(lastdot + 1); + if (!wsname.startsWith(base) || !wsname.endsWith(simpleName)) { + // WidgetSet module name does not match implementation name; + // probably inherited WidgetSet with entry-point. Skip. + GWT.log("Ignored init for " + wsname + " when starting " + module, + null); + return; + } + + if (initedWidgetSet != null) { + // Something went wrong: multiple widgetsets inited + String msg = "Tried to init " + widgetset.getClass().getName() + + ", but " + initedWidgetSet.getClass().getName() + + " is already inited."; + System.err.println(msg); + throw new IllegalStateException(msg); + } + initedWidgetSet = widgetset; ArrayList appIds = new ArrayList(); loadAppIdListFromDOM(appIds); |