]> source.dussan.org Git - vaadin-framework.git/commitdiff
Remove need for "NoEntry" widgetset definitions, fail if multiple widgetsets get...
authorMarc Englund <marc.englund@itmill.com>
Tue, 27 Jan 2009 06:52:20 +0000 (06:52 +0000)
committerMarc Englund <marc.englund@itmill.com>
Tue, 27 Jan 2009 06:52:20 +0000 (06:52 +0000)
svn changeset:6639/svn branch:trunk

src/com/itmill/toolkit/demo/colorpicker/gwt/ColorPickerWidgetSet.gwt.xml
src/com/itmill/toolkit/demo/reservation/gwt/ReservationWidgetSet.gwt.xml
src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml
src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSet.gwt.xml
src/com/itmill/toolkit/terminal/gwt/DefaultWidgetSetNoEntry.gwt.xml
src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java

index 798a5e68cb5a9ae0a96b076bfe348ac0042b5e69..b04380772e6471a139f1a0ab1a49ca7f130c5e4a 100644 (file)
@@ -1,6 +1,6 @@
 <module>
-       <!-- Inherit the NoEntry version to avoid multiple entrypoints -->\r
-       <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry" /> \r
+       <!-- Inherit DefaultWidgetSet -->\r
+       <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSet" /> \r
        \r
        <!-- WidgetSet default theme -->        
        <stylesheet src="colorpicker/styles.css"/>
index f68a043fe37f801fb0241b3b1880baa41f3af9a7..a15cd4185f5518c32b903af425ab2d7ca863f7fd 100644 (file)
@@ -1,6 +1,6 @@
 <module>
-       <!-- Inherit the NoEntry version to avoid multiple entrypoints -->\r
-       <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry" /> \r
+       <!-- Inherit DefaultWidgetSet -->\r
+       <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSet" /> \r
        \r
        <!-- The googlemaps_gwt module -->
        <inherits name="com.google.gwt.maps.GoogleMaps" />
index c294d883f5155caf8213b09af98c2431cf8d9083..6f09f7a86554a13f11a8ab95760850e805eafdd1 100644 (file)
@@ -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"/>
index a2262923944673256fd58baa9355b0514c3fdd92..1139506cc4c3483e9f8197460a376b184d500fc3 100644 (file)
@@ -1,7 +1,29 @@
 <module>
-       <source path="client"/>\r
-\r
-       <!-- 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>
index 752001967632300abdb01fecf0e84f282b120e00..3745d3f2c06a30cac8ea88117f6b511a27372e28 100644 (file)
@@ -1,46 +1,6 @@
 <module>
-       <!-- \r
-               This is the NoEntry version of DefaultWidgetSet.\r
-               This is the module you want to extend when creating an extended\r
-               widget set.\r
-       -->\r
-
-       <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"/>\r
-
-       <source path="client"/>
-       
-       <source path="gwtwidgets"/>
-       
-       <!-- \r
-               Default theme for this widget set. \r
-               Please name the sub directory differently when creating a extended widget set\r
-               (e.g. src="mywidgets/styles.css") to avoid naming conflicts.\r
-       
-       <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
index 919ab0807c0149d6db348f21515fae1e81ef39b9..06dee4db43d91fa3d215866fa5c2d53ba2c2e203 100644 (file)
@@ -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);