From 6a89ff905e36ed744503ef5410e7f056a87e5512 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Thu, 12 Mar 2009 13:25:36 +0000 Subject: [PATCH] Fixed memory leak in sampler svn changeset:7069/svn branch:6.0 --- .../toolkit/demo/sampler/ExampleUtil.java | 43 +++++++------------ .../demo/sampler/SamplerApplication.java | 24 +++++++++-- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/src/com/itmill/toolkit/demo/sampler/ExampleUtil.java b/src/com/itmill/toolkit/demo/sampler/ExampleUtil.java index 5de67b3b63..0444cedb86 100644 --- a/src/com/itmill/toolkit/demo/sampler/ExampleUtil.java +++ b/src/com/itmill/toolkit/demo/sampler/ExampleUtil.java @@ -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() { diff --git a/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java b/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java index 2b67353bbb..6b24a8bf4f 100644 --- a/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java +++ b/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java @@ -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(); + } + } -- 2.39.5