]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed memory leak in sampler
authorArtur Signell <artur.signell@itmill.com>
Thu, 12 Mar 2009 13:25:36 +0000 (13:25 +0000)
committerArtur Signell <artur.signell@itmill.com>
Thu, 12 Mar 2009 13:25:36 +0000 (13:25 +0000)
svn changeset:7069/svn branch:6.0

src/com/itmill/toolkit/demo/sampler/ExampleUtil.java
src/com/itmill/toolkit/demo/sampler/SamplerApplication.java

index 5de67b3b631bc4608384886ff1e72647ee34c0c0..0444cedb866a1a5a1fa28156d33d1b5c29026673 100644 (file)
@@ -113,31 +113,12 @@ public final class ExampleUtil {
     public static final Object iso3166_PROPERTY_SHORT = "short";
     public static final Object iso3166_PROPERTY_FLAG = "flag";
     public static final Object hw_PROPERTY_NAME = "name";
-    private static final IndexedContainer iso3166Container = new IndexedContainer();
-    static {
-        fillIso3166Container(iso3166Container);
-    }
 
     public static final Object locale_PROPERTY_LOCALE = "locale";
     public static final Object locale_PROPERTY_NAME = "name";
     private static final String[][] locales = { { "fi", "FI", "Finnish" },
             { "de", "DE", "German" }, { "en", "US", "US - English" },
             { "sv", "SE", "Swedish" } };
-    private static final IndexedContainer localeContainer = new IndexedContainer();
-    static {
-        localeContainer.addContainerProperty(locale_PROPERTY_LOCALE,
-                Locale.class, null);
-        localeContainer.addContainerProperty(locale_PROPERTY_NAME,
-                String.class, null);
-        for (int i = 0; i < locales.length; i++) {
-            String id = locales[i][2];
-            Item item = localeContainer.addItem(id);
-            item.getItemProperty(locale_PROPERTY_LOCALE).setValue(
-                    new Locale(locales[i][0], locales[i][1]));
-            item.getItemProperty(locale_PROPERTY_NAME).setValue(locales[i][2]);
-        }
-    }
-
     private static final String[][] hardware = { //
             { "Desktops", "Dell OptiPlex GX240", "Dell OptiPlex GX260",
                     "Dell OptiPlex GX280" },
@@ -155,10 +136,6 @@ public final class ExampleUtil {
             "Smith", "Adams", "Black", "Wilson", "Richards", "Thompson",
             "McGoff", "Halas", "Jones", "Beck", "Sheridan", "Picard", "Hill",
             "Fielding", "Einstein" };
-    private static final IndexedContainer personContainer;
-    static {
-        personContainer = getPersonContainer();
-    }
 
     public static IndexedContainer getPersonContainer() {
         IndexedContainer contactContainer = new IndexedContainer();
@@ -180,16 +157,26 @@ public final class ExampleUtil {
         return contactContainer;
     }
 
-    public static IndexedContainer getStaticPersonContainer() {
-        return personContainer;
-    }
-
     public static IndexedContainer getLocaleContainer() {
+        IndexedContainer localeContainer = new IndexedContainer();
+        localeContainer.addContainerProperty(locale_PROPERTY_LOCALE,
+                Locale.class, null);
+        localeContainer.addContainerProperty(locale_PROPERTY_NAME,
+                String.class, null);
+        for (int i = 0; i < locales.length; i++) {
+            String id = locales[i][2];
+            Item item = localeContainer.addItem(id);
+            item.getItemProperty(locale_PROPERTY_LOCALE).setValue(
+                    new Locale(locales[i][0], locales[i][1]));
+            item.getItemProperty(locale_PROPERTY_NAME).setValue(locales[i][2]);
+        }
+
         return localeContainer;
     }
 
+    @Deprecated
     public static IndexedContainer getStaticISO3166Container() {
-        return iso3166Container;
+        return getISO3166Container();
     }
 
     public static IndexedContainer getISO3166Container() {
index 2b67353bbb8a241bb10f34b2624a312bbacac84d..6b24a8bf4fc843314ad7f2e0c1b3a24e79dd4f69 100644 (file)
@@ -21,6 +21,7 @@ import com.itmill.toolkit.terminal.ExternalResource;
 import com.itmill.toolkit.terminal.Resource;
 import com.itmill.toolkit.terminal.ThemeResource;
 import com.itmill.toolkit.terminal.URIHandler;
+import com.itmill.toolkit.terminal.gwt.server.WebApplicationContext;
 import com.itmill.toolkit.ui.Alignment;
 import com.itmill.toolkit.ui.Button;
 import com.itmill.toolkit.ui.ComboBox;
@@ -160,6 +161,15 @@ public class SamplerApplication extends Application {
 
         Button previousSample;
         Button nextSample;
+        private ComboBox search;
+
+        @Override
+        public void detach() {
+            super.detach();
+
+            search.setContainerDataSource(null);
+            navigationTree.setContainerDataSource(null);
+        }
 
         SamplerWindow() {
             // Main top/expanded-bottom layout
@@ -230,8 +240,8 @@ public class SamplerApplication extends Application {
             arrows.addComponent(nextSample);
             // "Search" combobox
             // TODO add input prompt
-            Component search = createSearch();
-            quicknav.addComponent(search);
+            Component searchComponent = createSearch();
+            quicknav.addComponent(searchComponent);
 
             // Menu tree, initially hidden
             navigationTree = createMenuTree();
@@ -298,7 +308,7 @@ public class SamplerApplication extends Application {
          */
 
         private Component createSearch() {
-            final ComboBox search = new ComboBox();
+            search = new ComboBox();
             search.setWidth("160px");
             search.setNewItemsAllowed(false);
             search.setFilteringMode(ComboBox.FILTERINGMODE_CONTAINS);
@@ -756,4 +766,12 @@ public class SamplerApplication extends Application {
             });
         }
     }
+
+    @Override
+    public void close() {
+        removeWindow(getMainWindow());
+
+        super.close();
+    }
+
 }