modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java | 6 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java | 174 +++++++++- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java | 4 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java | 12 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java | 69 +++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java | 46 +- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java | 16 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java | 15 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java | 15 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java | 15 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java | 14 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java | 15 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java | 24 + modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 9 14 files changed, 377 insertions(+), 57 deletions(-)
New commits: commit 7c3612eeeb3f43c84544811b61e9b89c3cfc37c2 Author: Simeon Pinder spinder@redhat.com Date: Wed Dec 22 15:36:47 2010 -0500
revert use of shared component as introduced a regression in portlet refresh.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java index e7c2265..74ce25c 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java @@ -18,6 +18,7 @@ */ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.inventory.queue;
+import com.google.gwt.user.client.Timer; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; @@ -31,12 +32,12 @@ import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.dashboard.DashboardPortlet; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.AutodiscoveryQueueDataSource; import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.ResourceAutodiscoveryView; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -56,8 +57,7 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements C //portlet settings and datasource elements private DashboardPortlet storedPortlet; private AutodiscoveryQueueDataSource dataSource; - private static TableOrCanvasAutoRefresh defaultReloader; - private static Canvas componentToReload; + private Timer defaultReloader;
public AutodiscoveryPortlet(String locatorId) { super(locatorId, true); @@ -191,14 +191,19 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements C
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + redraw(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java index 3b860b8..f7cbcdc 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java @@ -24,6 +24,7 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.inventory.resou
import java.util.Set;
+import com.google.gwt.user.client.Timer; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.Canvas; @@ -38,7 +39,6 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSearchView;
/** @@ -52,9 +52,7 @@ public class FavoriteResourcesPortlet extends ResourceSearchView implements Auto
private DashboardPortlet storedPortlet; private PortletWindow portletWindow; - - private static Canvas componentToReload; - private static TableOrCanvasAutoRefresh defaultReloader; + private Timer defaultReloader;
public FavoriteResourcesPortlet(String locatorId) { super(locatorId); @@ -117,14 +115,19 @@ public class FavoriteResourcesPortlet extends ResourceSearchView implements Auto
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + redraw(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java index 7cfcdb8..024adb3 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java @@ -18,6 +18,7 @@ */ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.alerts;
+import com.google.gwt.user.client.Timer; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.form.DynamicForm; @@ -36,6 +37,7 @@ import org.rhq.core.domain.dashboard.DashboardPortlet; import org.rhq.core.domain.resource.ResourceType; import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.Messages; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.alert.AlertHistoryView; import org.rhq.enterprise.gui.coregui.client.alert.AlertPortletDataSource; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; @@ -43,7 +45,6 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout; @@ -93,8 +94,7 @@ public class RecentAlertsPortlet extends AlertHistoryView implements CustomSetti private AlertPortletDataSource dataSource; //instance ui widgets private Canvas containerCanvas; - private static Canvas componentToReload; - private static TableOrCanvasAutoRefresh defaultReloader; + private Timer defaultReloader;
public RecentAlertsPortlet(String locatorId) { super(locatorId); @@ -539,15 +539,20 @@ public class RecentAlertsPortlet extends AlertHistoryView implements CustomSetti
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + refresh(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java index 5a3a0b2..30c9b4e 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java @@ -23,6 +23,7 @@
package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.imported;
+import com.google.gwt.user.client.Timer; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.form.DynamicForm; @@ -36,13 +37,13 @@ import com.smartgwt.client.widgets.tree.TreeGrid;
import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.dashboard.DashboardPortlet; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.components.HeaderLabel; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
public class RecentlyAddedResourcesPortlet extends LocatableVLayout implements CustomSettingsPortlet, @@ -59,8 +60,7 @@ public class RecentlyAddedResourcesPortlet extends LocatableVLayout implements C
private static final String RECENTLY_ADDED_SHOW_MAX = "recently-added-show-amount"; private static final String RECENTLY_ADDED_SHOW_HRS = "recently-added-time-range"; - private static Canvas componentToReload; - private static TableOrCanvasAutoRefresh defaultReloader; + private Timer defaultReloader;
public RecentlyAddedResourcesPortlet(String locatorId) { super(locatorId); @@ -230,14 +230,19 @@ public class RecentlyAddedResourcesPortlet extends LocatableVLayout implements C
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + redraw(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java index 76f61be..507c8ed 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java @@ -19,6 +19,7 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.operatio * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+import com.google.gwt.user.client.Timer; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.form.DynamicForm; @@ -36,12 +37,12 @@ import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple; import org.rhq.core.domain.configuration.definition.PropertySimpleType; import org.rhq.core.domain.dashboard.DashboardPortlet; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.operation.RecentOperationsDataSource; import org.rhq.enterprise.gui.coregui.client.operation.ScheduledOperationsDataSource; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -79,8 +80,7 @@ public class OperationsPortlet extends LocatableVLayout implements CustomSetting public static String unlimited = MSG.common_label_unlimited(); public static String defaultValue = unlimited; public static boolean defaultEnabled = true; - private static Canvas componentToReload; - private static TableOrCanvasAutoRefresh defaultReloader; + private Timer defaultReloader;
//default no-args constructor for serialization. private OperationsPortlet() { @@ -418,14 +418,19 @@ public class OperationsPortlet extends LocatableVLayout implements CustomSetting
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + redraw(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java index 296d92d..fddbfa1 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java @@ -38,6 +38,7 @@ import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple; import org.rhq.core.domain.configuration.definition.PropertySimpleType; import org.rhq.core.domain.dashboard.DashboardPortlet; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.components.table.Table; import org.rhq.enterprise.gui.coregui.client.components.table.TableWidget; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; @@ -45,7 +46,6 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.resource.ProblemResourcesDataSource; import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -72,8 +72,7 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort //constants public static final String unlimited = MSG.common_label_unlimited(); public static final String defaultValue = unlimited; - private static Canvas componentToReload; - private static TableOrCanvasAutoRefresh defaultReloader; + private Timer defaultReloader;
public ProblemResourcesPortlet(String locatorId) { super(locatorId, TITLE, true); @@ -293,15 +292,20 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + refresh(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java index 9a569aa..6b70298 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java @@ -25,6 +25,7 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.summary; import java.util.ArrayList; import java.util.List;
+import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.form.DynamicForm; @@ -37,11 +38,11 @@ import com.smartgwt.client.widgets.form.fields.events.ClickHandler; import org.rhq.core.domain.dashboard.DashboardPortlet; import org.rhq.core.domain.resource.InventorySummary; import org.rhq.enterprise.gui.coregui.client.CoreGUI; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; -import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.ResourceBossGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -52,8 +53,7 @@ public class InventorySummaryPortlet extends LocatableVLayout implements AutoRef
private LocatableDynamicForm form; public static final String KEY = MSG.common_title_summary_counts(); - private static Canvas componentToReload; - private static TableOrCanvasAutoRefresh defaultReloader; + private Timer defaultReloader;
public InventorySummaryPortlet(String locatorId) { super(locatorId); @@ -171,14 +171,19 @@ public class InventorySummaryPortlet extends LocatableVLayout implements AutoRef
@Override public void startRefreshCycle() { - //lazy load - if (componentToReload == null) { - componentToReload = this; - } - //cancel the previous timer run + //current setting + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + //cancel previous operation if (defaultReloader != null) { - defaultReloader.stopTimer(); + defaultReloader.cancel(); } - defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); + defaultReloader = new Timer() { + public void run() { + redraw(); + //launch again until portlet reference and child references GC. + defaultReloader.schedule(retrievedRefreshInterval); + } + }; + defaultReloader.schedule(retrievedRefreshInterval); } }
commit d05803785b4fc6f381aca71b8a41b43013a8faa1 Author: Simeon Pinder spinder@redhat.com Date: Fri Dec 17 08:41:57 2010 -0500
attempt to fix initial menu load missing icons.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java index 02f942b..9feaffd 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java @@ -269,10 +269,14 @@ public class DashboardView extends LocatableVLayout { Integer[] refreshValues = { STOP_VALUE, REFRESH1_VALUE, REFRESH5_VALUE, REFRESH10_VALUE }; refreshMenuMappings = new HashMap<Integer, String>(); refreshMenuItems = new MenuItem[refreshIntervals.length]; + int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); for (int i = 0; i < refreshIntervals.length; i++) { MenuItem item = new MenuItem(refreshIntervals[i], ""); item.addClickHandler(menuClick); refreshMenuMappings.put(refreshValues[i], refreshIntervals[i]); + if (retrievedRefreshInterval == refreshValues[i]) { + item.setIcon(ImageManager.getAvailabilityIcon(true)); + } refreshMenuItems[i] = item; }
@@ -280,6 +284,7 @@ public class DashboardView extends LocatableVLayout { refreshMenuButton = new LocatableIMenuButton(extendLocatorId("AutoRefreshButton"), MSG .common_title_change_refresh_time(), refreshMenu); refreshMenu.setAutoHeight(); + refreshMenuButton.getMenu().setItems(refreshMenuItems); refreshMenuButton.setWidth(170); refreshMenuButton.setShowTitle(true); refreshMenuButton.setTop(0); @@ -294,6 +299,8 @@ public class DashboardView extends LocatableVLayout {
editForm.setItems(nameItem, numColItem, addCanvas, picker, addColumn, removeColumn, refreshCanvas); updateRefreshMenu(); + this.refreshMenuButton.markForRedraw(); + markForRedraw(); return editForm; }
commit 5cccd335fac28b498cabf4269d655bbd4eb0ff12 Author: Simeon Pinder spinder@redhat.com Date: Thu Dec 16 19:01:42 2010 -0500
set default value for refresh interval.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java index bbb05bd..02f942b 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java @@ -62,6 +62,7 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/** * @author Greg Hinkle + * @author Simeon Pinder */ public class DashboardView extends LocatableVLayout { private DashboardsView dashboardsView; @@ -78,6 +79,11 @@ public class DashboardView extends LocatableVLayout { private static String REFRESH1 = MSG.view_dashboards_portlets_refresh_one_min(); private static String REFRESH5 = MSG.view_dashboards_portlets_refresh_multiple_min(String.valueOf(5)); private static String REFRESH10 = MSG.view_dashboards_portlets_refresh_multiple_min(String.valueOf(10)); + private static Integer STOP_VALUE = 0; + private static Integer REFRESH1_VALUE = 1 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + private static Integer REFRESH5_VALUE = 5 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + private static Integer REFRESH10_VALUE = 10 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + private HashMap<Integer, String> refreshMenuMappings; private MenuItem[] refreshMenuItems; private int refreshInterval = 0; @@ -243,15 +249,15 @@ public class DashboardView extends LocatableVLayout { refreshInterval = 0; if (selection != null) { if (selection.equals(STOP)) { - refreshInterval = 0; + refreshInterval = STOP_VALUE; } else if (selection.equals(REFRESH1)) { - refreshInterval = Long.valueOf(MeasurementUtility.MINUTES).intValue(); + refreshInterval = REFRESH1_VALUE; } else if (selection.equals(REFRESH5)) { - refreshInterval = 5 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + refreshInterval = REFRESH5_VALUE; } else if (selection.equals(REFRESH10)) { - refreshInterval = 10 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + refreshInterval = REFRESH10_VALUE; } else {//unable to locate value disable refresh - refreshInterval = 0;// + refreshInterval = STOP_VALUE;// } UserSessionManager.getUserPreferences().setPageRefreshInterval(refreshInterval, new UpdatePortletRefreshCallback()); @@ -260,9 +266,7 @@ public class DashboardView extends LocatableVLayout { };
String[] refreshIntervals = { STOP, REFRESH1, REFRESH5, REFRESH10 }; - Integer[] refreshValues = { 0, 1 * Long.valueOf(MeasurementUtility.MINUTES).intValue(), - 5 * Long.valueOf(MeasurementUtility.MINUTES).intValue(), - 10 * Long.valueOf(MeasurementUtility.MINUTES).intValue() }; + Integer[] refreshValues = { STOP_VALUE, REFRESH1_VALUE, REFRESH5_VALUE, REFRESH10_VALUE }; refreshMenuMappings = new HashMap<Integer, String>(); refreshMenuItems = new MenuItem[refreshIntervals.length]; for (int i = 0; i < refreshIntervals.length; i++) { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java index 97e6314..1c311b0 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java @@ -33,6 +33,7 @@ import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.SubjectGWTServiceAsync; +import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
/** * @author Greg Hinkle @@ -73,6 +74,9 @@ public class UserPreferences { }
public int getPageRefreshInterval() { + if (getPreference(UserPreferenceNames.PAGE_REFRESH_PERIOD) == null) {//default to 60 seconds + setPreference(UserPreferenceNames.PAGE_REFRESH_PERIOD, String.valueOf(MeasurementUtility.MINUTES)); + } return getPreferenceAsInteger(UserPreferenceNames.PAGE_REFRESH_PERIOD); }
commit dedf4e96b1ce355cc2d3df01f397e3be006ad62d Author: Simeon Pinder spinder@redhat.com Date: Thu Dec 16 18:38:31 2010 -0500
i)modify dashboard to allow portlet refresh interval configuration with other dashboard settings ii)refactored portlet refresh logic into shared utility iii)refactor portlets to use shared utilty for refresh
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java index 2453272..2dca467 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java @@ -29,6 +29,8 @@ public interface AutoRefreshPortlet extends Portlet {
int refreshCycle = 60000;//ms
+ /** Each portlet implements to define the refresh cycle. See + * TableOrCanvasAutoRefresh for sample implementation. + */ void startRefreshCycle(); - } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java index c276e09..bbb05bd 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java @@ -74,10 +74,10 @@ public class DashboardView extends LocatableVLayout { IMenuButton addPortlet;
Set<PortletWindow> portlets = new HashSet<PortletWindow>(); - private static String STOP = "Stop"; - private static String REFRESH1 = "Refresh every 1 minute"; - private static String REFRESH5 = "Refresh every 5 minutes"; - private static String REFRESH10 = "Refresh every 10 minutes"; + private static String STOP = MSG.common_title_stop(); + private static String REFRESH1 = MSG.view_dashboards_portlets_refresh_one_min(); + private static String REFRESH5 = MSG.view_dashboards_portlets_refresh_multiple_min(String.valueOf(5)); + private static String REFRESH10 = MSG.view_dashboards_portlets_refresh_multiple_min(String.valueOf(10)); private HashMap<Integer, String> refreshMenuMappings; private MenuItem[] refreshMenuItems; private int refreshInterval = 0; @@ -273,8 +273,8 @@ public class DashboardView extends LocatableVLayout { }
refreshMenu.setItems(refreshMenuItems); - refreshMenuButton = new LocatableIMenuButton(extendLocatorId("AutoRefreshButton"), "Change Refresh Time", - refreshMenu); + refreshMenuButton = new LocatableIMenuButton(extendLocatorId("AutoRefreshButton"), MSG + .common_title_change_refresh_time(), refreshMenu); refreshMenu.setAutoHeight(); refreshMenuButton.setWidth(170); refreshMenuButton.setShowTitle(true); @@ -282,7 +282,7 @@ public class DashboardView extends LocatableVLayout { refreshMenuButton.setIconOrientation("left");
CanvasItem refreshCanvas = new CanvasItem(); - refreshCanvas.setTitle("Portlets auto-refresh interval"); + refreshCanvas.setTitle(MSG.common_title_portlet_auto_refresh()); refreshCanvas.setWrapTitle(false); refreshCanvas.setCanvas(refreshMenuButton); refreshCanvas.setStartRow(false); @@ -415,6 +415,7 @@ public class DashboardView extends LocatableVLayout { if (portletWindow.getDashboardPortlet().getId() == portlet.getId()) { portletWindow.getDashboardPortlet().setConfiguration(portlet.getConfiguration());
+ //restarting port auto-refresh with newest settings PortletViewFactory viewFactory = portletMap.get(portlet.getPortletKey());
// TODO: Note, we're using a sequence generated ID here as a locatorId. This is not optimal for repeatable @@ -424,7 +425,7 @@ public class DashboardView extends LocatableVLayout { + "-" + Integer.toString(portlet.getId()));
//add code to re-initialize refresh cycle for portlets - if (portlet instanceof AutoRefreshPortlet) { + if (view instanceof AutoRefreshPortlet) { ((AutoRefreshPortlet) view).startRefreshCycle(); } } @@ -472,9 +473,9 @@ public class DashboardView extends LocatableVLayout { public void onSuccess(Subject subject) { String m; if (refreshInterval > 0) { - m = "Updated interval for portlets that auto-refresh"; + m = MSG.view_dashboards_portlets_refresh_success1(); } else { - m = "Stopping reload for portlets that auto-refresh"; + m = MSG.view_dashboards_portlets_refresh_success2(); } CoreGUI.getMessageCenter().notify(new Message(m, Message.Severity.Info)); updateRefreshMenu(); @@ -484,9 +485,9 @@ public class DashboardView extends LocatableVLayout { public void onFailure(Throwable throwable) { String m; if (refreshInterval > 0) { - m = "Failed to updated interval for portlets that auto-refresh"; + m = MSG.view_dashboards_portlets_refresh_fail1(); } else { - m = "Failed to disable reload for portlets that auto-refresh"; + m = MSG.view_dashboards_portlets_refresh_fail2(); } CoreGUI.getMessageCenter().notify(new Message(m, Message.Severity.Error)); // Revert back to our original favorite status, since the server update failed. @@ -498,7 +499,7 @@ public class DashboardView extends LocatableVLayout { if (refreshMenuItems != null) { int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); String currentSelection = refreshMenuMappings.get(retrievedRefreshInterval); - if (currentSelection != null) { + if (currentSelection != null) {//iterate over menu items and update icon details for (int i = 0; i < refreshMenuItems.length; i++) { MenuItem menu = refreshMenuItems[i]; if (currentSelection.equals(menu.getTitle())) { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java index 2c9c217..75f15c0 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java @@ -25,18 +25,25 @@ import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.components.table.Table; import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
-/** +/**An implementation of a shared portet refresh utility. * @author Simeon Pinder */ public class TableOrCanvasAutoRefresh {
private Timer reloader;
+ /** reloads the Table or Canvas page based on the pageRefreshInterval saved to the + * current user's settings. + */ public TableOrCanvasAutoRefresh(final Canvas toBeReloaded) { if (toBeReloaded != null) { + //current setting final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + if (this.reloader != null) { + this.reloader.cancel(); + } if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) { - reloader = new Timer() { + this.reloader = new Timer() { public void run() { if (toBeReloaded instanceof Table) { ((Table) toBeReloaded).refresh(); @@ -44,14 +51,19 @@ public class TableOrCanvasAutoRefresh { ((Canvas) toBeReloaded).redraw(); }
- //launch again until portlet reference and child references GC. + //launch again until shedule stopped or GC. reloader.schedule(retrievedRefreshInterval); } }; - reloader.schedule(retrievedRefreshInterval); - } else {//disable timer - reloader = null; + this.reloader.schedule(retrievedRefreshInterval); } } } + + //stops the timer from previous run. + public void stopTimer() { + if (this.reloader != null) { + this.reloader.cancel(); + } + } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java index c837294..e7c2265 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java @@ -18,7 +18,6 @@ */ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.inventory.queue;
-import com.google.gwt.user.client.Timer; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; @@ -32,19 +31,19 @@ import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.dashboard.DashboardPortlet; -import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.AutodiscoveryQueueDataSource; import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.ResourceAutodiscoveryView; -import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
/** + * @author Simeon Pinder * @author Greg Hinkle */ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements CustomSettingsPortlet, @@ -57,7 +56,8 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements C //portlet settings and datasource elements private DashboardPortlet storedPortlet; private AutodiscoveryQueueDataSource dataSource; - private Timer reloader; + private static TableOrCanvasAutoRefresh defaultReloader; + private static Canvas componentToReload;
public AutodiscoveryPortlet(String locatorId) { super(locatorId, true); @@ -71,21 +71,23 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements C if (getTreeGrid() != null) { getTreeGrid().setDataSource(getDataSource()); } - //loads/retrieves initial portlet settings for datasource - String retrieved = null; - //if settings already exist for this portlet - if (storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX) != null) { - //retrieve and translate to int - retrieved = storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX).getStringValue(); - } else {//create setting - storedPortlet.getConfiguration().put(new PropertySimple(AUTODISCOVERY_PLATFORM_MAX, defaultValue)); - retrieved = defaultValue; - } + if ((storedPortlet != null) && (storedPortlet.getConfiguration() != null)) { + //loads/retrieves initial portlet settings for datasource + String retrieved = null; + //if settings already exist for this portlet + if (storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX) != null) { + //retrieve and translate to int + retrieved = storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX).getStringValue(); + } else {//create setting + storedPortlet.getConfiguration().put(new PropertySimple(AUTODISCOVERY_PLATFORM_MAX, defaultValue)); + retrieved = defaultValue; + }
- if (retrieved.equals(unlimited)) { - getDataSource().setMaximumPlatformsToDisplay(-1); - } else { - getDataSource().setMaximumPlatformsToDisplay(Integer.parseInt(retrieved)); + if (retrieved.equals(unlimited)) { + getDataSource().setMaximumPlatformsToDisplay(-1); + } else { + getDataSource().setMaximumPlatformsToDisplay(Integer.parseInt(retrieved)); + } } }
@@ -189,19 +191,14 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements C
@Override public void startRefreshCycle() { - final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); - if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) { - reloader = new Timer() { - public void run() { - redraw(); - //launch again until portlet reference and child references GC. - reloader.schedule(retrievedRefreshInterval); - } - }; - reloader.schedule(retrievedRefreshInterval); - } else {//disable timer - reloader = null; + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); } - // new TableOrCanvasAutoRefresh(this); + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java index f1a3876..3b860b8 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java @@ -24,7 +24,6 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.inventory.resou
import java.util.Set;
-import com.google.gwt.user.client.Timer; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.Canvas; @@ -39,6 +38,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSearchView;
/** @@ -53,7 +53,8 @@ public class FavoriteResourcesPortlet extends ResourceSearchView implements Auto private DashboardPortlet storedPortlet; private PortletWindow portletWindow;
- private Timer reloader; + private static Canvas componentToReload; + private static TableOrCanvasAutoRefresh defaultReloader;
public FavoriteResourcesPortlet(String locatorId) { super(locatorId); @@ -116,14 +117,14 @@ public class FavoriteResourcesPortlet extends ResourceSearchView implements Auto
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - redraw(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); + } + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } - } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java index ad26a09..7cfcdb8 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java @@ -18,7 +18,6 @@ */ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.alerts;
-import com.google.gwt.user.client.Timer; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.form.DynamicForm; @@ -44,6 +43,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout; @@ -93,7 +93,8 @@ public class RecentAlertsPortlet extends AlertHistoryView implements CustomSetti private AlertPortletDataSource dataSource; //instance ui widgets private Canvas containerCanvas; - private Timer reloader; + private static Canvas componentToReload; + private static TableOrCanvasAutoRefresh defaultReloader;
public RecentAlertsPortlet(String locatorId) { super(locatorId); @@ -538,14 +539,15 @@ public class RecentAlertsPortlet extends AlertHistoryView implements CustomSetti
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - refresh(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); + } + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java index abc9e6b..5a3a0b2 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java @@ -23,7 +23,6 @@
package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.imported;
-import com.google.gwt.user.client.Timer; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.form.DynamicForm; @@ -43,6 +42,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
public class RecentlyAddedResourcesPortlet extends LocatableVLayout implements CustomSettingsPortlet, @@ -59,7 +59,8 @@ public class RecentlyAddedResourcesPortlet extends LocatableVLayout implements C
private static final String RECENTLY_ADDED_SHOW_MAX = "recently-added-show-amount"; private static final String RECENTLY_ADDED_SHOW_HRS = "recently-added-time-range"; - private Timer reloader; + private static Canvas componentToReload; + private static TableOrCanvasAutoRefresh defaultReloader;
public RecentlyAddedResourcesPortlet(String locatorId) { super(locatorId); @@ -229,13 +230,14 @@ public class RecentlyAddedResourcesPortlet extends LocatableVLayout implements C
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - redraw(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); + } + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java index adc9706..76f61be 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java @@ -19,7 +19,6 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.operatio * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-import com.google.gwt.user.client.Timer; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.form.DynamicForm; @@ -42,6 +41,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.operation.RecentOperationsDataSource; import org.rhq.enterprise.gui.coregui.client.operation.ScheduledOperationsDataSource; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -76,10 +76,11 @@ public class OperationsPortlet extends LocatableVLayout implements CustomSetting private DashboardPortlet storedPortlet = null; private RecentOperationsDataSource dataSourceCompleted; private ScheduledOperationsDataSource dataSourceScheduled; - private Timer reloader; public static String unlimited = MSG.common_label_unlimited(); public static String defaultValue = unlimited; public static boolean defaultEnabled = true; + private static Canvas componentToReload; + private static TableOrCanvasAutoRefresh defaultReloader;
//default no-args constructor for serialization. private OperationsPortlet() { @@ -417,13 +418,14 @@ public class OperationsPortlet extends LocatableVLayout implements CustomSetting
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - redraw(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); + } + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java index 81fc756..296d92d 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java @@ -45,6 +45,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.resource.ProblemResourcesDataSource; import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -71,6 +72,8 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort //constants public static final String unlimited = MSG.common_label_unlimited(); public static final String defaultValue = unlimited; + private static Canvas componentToReload; + private static TableOrCanvasAutoRefresh defaultReloader;
public ProblemResourcesPortlet(String locatorId) { super(locatorId, TITLE, true); @@ -290,14 +293,15 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - refresh(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); + } + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java index 2bc852c..9a569aa 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java @@ -25,7 +25,6 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.summary; import java.util.ArrayList; import java.util.List;
-import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.form.DynamicForm; @@ -42,6 +41,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; +import org.rhq.enterprise.gui.coregui.client.dashboard.TableOrCanvasAutoRefresh; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.ResourceBossGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; @@ -52,7 +52,8 @@ public class InventorySummaryPortlet extends LocatableVLayout implements AutoRef
private LocatableDynamicForm form; public static final String KEY = MSG.common_title_summary_counts(); - private Timer reloader; + private static Canvas componentToReload; + private static TableOrCanvasAutoRefresh defaultReloader;
public InventorySummaryPortlet(String locatorId) { super(locatorId); @@ -170,13 +171,14 @@ public class InventorySummaryPortlet extends LocatableVLayout implements AutoRef
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - redraw(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + //lazy load + if (componentToReload == null) { + componentToReload = this; + } + //cancel the previous timer run + if (defaultReloader != null) { + defaultReloader.stopTimer(); + } + defaultReloader = new TableOrCanvasAutoRefresh(componentToReload); } } diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties index 8f06b15..0263cc9 100644 --- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties +++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties @@ -79,6 +79,7 @@ common_title_background = Background common_title_bundle = Bundle common_title_bundles = Bundles common_title_category = Category +common_title_change_refresh_time=Change Refresh Time common_title_columns = Columns common_title_configuration = Configuration common_title_compatibleGroups = Compatible Groups @@ -130,6 +131,7 @@ common_title_platform = Platform common_title_platform_total = Platform Total common_title_plugin = Plugin common_title_port = Port +common_title_portlet_auto_refresh=Portlet Auto-refresh Interval common_title_providers = Providers common_title_recently_added = Recently Added Resources common_title_recent_alerts = Recent Alerts @@ -162,6 +164,7 @@ common_title_show = Show common_title_show_more = Show more... common_title_start = Start common_title_status = Status +common_title_stop= Stop common_title_summary = Summary common_title_tag_cloud = Tag Cloud common_title_the = The @@ -1168,6 +1171,12 @@ view_dashboardManager_deleteFail = Failed to delete dashboard. view_dashboardManager_deleted = Successfully deleted dashboard {0} view_dashboards_title = Dashboard view_dashboards_confirm1 = Are you sure you want to delete +view_dashboards_portlets_refresh_fail1=Failed to update interval for portlets that auto-refresh +view_dashboards_portlets_refresh_fail2=Failed to disable reload for portlets that auto-refresh +view_dashboards_portlets_refresh_multiple_min = Refresh every {0} minutes +view_dashboards_portlets_refresh_one_min = Refresh every 1 minute +view_dashboards_portlets_refresh_success1=Updated interval for portlets that auto-refresh +view_dashboards_portlets_refresh_success2=Stopping reload for portlets that auto-refresh view_dashboardsManager_error1 = Failed to add new dashboard # // dup in common view_dashboardsManager_inventory_title = Inventory Summary
commit 6fc936a2a16732c2a6e1699ba48c18d0ad21f810 Author: Simeon Pinder spinder@redhat.com Date: Wed Dec 15 19:37:15 2010 -0500
dashboard portlet refresh configuration logic.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java index 2aedc24..2453272 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java @@ -27,7 +27,7 @@ package org.rhq.enterprise.gui.coregui.client.dashboard; */ public interface AutoRefreshPortlet extends Portlet {
- int refreshCycle = 40000;//ms + int refreshCycle = 60000;//ms
void startRefreshCycle();
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java index 81d3bb2..c276e09 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java @@ -18,6 +18,7 @@ */ package org.rhq.enterprise.gui.coregui.client.dashboard;
+import java.util.HashMap; import java.util.HashSet; import java.util.Set;
@@ -39,17 +40,24 @@ import com.smartgwt.client.widgets.layout.LayoutSpacer; import com.smartgwt.client.widgets.menu.IMenuButton; import com.smartgwt.client.widgets.menu.Menu; import com.smartgwt.client.widgets.menu.MenuItem; +import com.smartgwt.client.widgets.menu.events.ClickHandler; import com.smartgwt.client.widgets.menu.events.ItemClickEvent; import com.smartgwt.client.widgets.menu.events.ItemClickHandler; +import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
+import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.dashboard.Dashboard; import org.rhq.core.domain.dashboard.DashboardPortlet; import org.rhq.enterprise.gui.coregui.client.CoreGUI; +import org.rhq.enterprise.gui.coregui.client.ImageManager; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; +import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.message.Message; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIMenuButton; +import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableMenu; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/** @@ -66,6 +74,15 @@ public class DashboardView extends LocatableVLayout { IMenuButton addPortlet;
Set<PortletWindow> portlets = new HashSet<PortletWindow>(); + private static String STOP = "Stop"; + private static String REFRESH1 = "Refresh every 1 minute"; + private static String REFRESH5 = "Refresh every 5 minutes"; + private static String REFRESH10 = "Refresh every 10 minutes"; + private HashMap<Integer, String> refreshMenuMappings; + private MenuItem[] refreshMenuItems; + private int refreshInterval = 0; + private LocatableIMenuButton refreshMenuButton; + private HashMap<String, PortletViewFactory> portletMap = null;
public DashboardView(String locatorId, DashboardsView dashboardsView, Dashboard storedDashboard) { super(locatorId); @@ -117,10 +134,11 @@ public class DashboardView extends LocatableVLayout { private DynamicForm buildEditForm() { editForm = new LocatableDynamicForm(extendLocatorId("Editor")); editForm.setAutoWidth(); - editForm.setNumCols(9); + editForm.setNumCols(12);
TextItem nameItem = new TextItem("name", MSG.common_title_dashboard_name()); nameItem.setValue(storedDashboard.getName()); + nameItem.setWrapTitle(false); nameItem.addBlurHandler(new BlurHandler() { public void onBlur(BlurEvent blurEvent) { String val = (String) blurEvent.getItem().getValue(); @@ -153,7 +171,6 @@ public class DashboardView extends LocatableVLayout { });
ButtonItem removeColumn = new ButtonItem("removeColumn", MSG.common_title_remove_column()); - // removeColumn.setIcon("silk/application_side_contract.png"); removeColumn.setAutoFit(true); removeColumn.setStartRow(false); removeColumn.setEndRow(false); @@ -175,7 +192,7 @@ public class DashboardView extends LocatableVLayout { });
Menu addPorletMenu = new Menu(); - for (String portletName : PortletFactory.getRegisteredPortlets()) { + for (String portletName : PortletFactory.getRegisteredPortletKeys()) { addPorletMenu.addItem(new MenuItem(portletName)); }
@@ -213,7 +230,66 @@ public class DashboardView extends LocatableVLayout { }); picker.setValue(storedDashboard.getConfiguration().getSimpleValue(Dashboard.CFG_BACKGROUND, "white"));
- editForm.setItems(nameItem, numColItem, addCanvas, picker, addColumn, removeColumn); + //refresh interval + LocatableMenu refreshMenu = new LocatableMenu(extendLocatorId("AutoRefreshMenu")); + refreshMenu.setShowShadow(true); + refreshMenu.setShadowDepth(10); + refreshMenu.setAutoWidth(); + refreshMenu.setHeight(15); + ClickHandler menuClick = new ClickHandler() { + @Override + public void onClick(MenuItemClickEvent event) { + String selection = event.getItem().getTitle(); + refreshInterval = 0; + if (selection != null) { + if (selection.equals(STOP)) { + refreshInterval = 0; + } else if (selection.equals(REFRESH1)) { + refreshInterval = Long.valueOf(MeasurementUtility.MINUTES).intValue(); + } else if (selection.equals(REFRESH5)) { + refreshInterval = 5 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + } else if (selection.equals(REFRESH10)) { + refreshInterval = 10 * Long.valueOf(MeasurementUtility.MINUTES).intValue(); + } else {//unable to locate value disable refresh + refreshInterval = 0;// + } + UserSessionManager.getUserPreferences().setPageRefreshInterval(refreshInterval, + new UpdatePortletRefreshCallback()); + } + } + }; + + String[] refreshIntervals = { STOP, REFRESH1, REFRESH5, REFRESH10 }; + Integer[] refreshValues = { 0, 1 * Long.valueOf(MeasurementUtility.MINUTES).intValue(), + 5 * Long.valueOf(MeasurementUtility.MINUTES).intValue(), + 10 * Long.valueOf(MeasurementUtility.MINUTES).intValue() }; + refreshMenuMappings = new HashMap<Integer, String>(); + refreshMenuItems = new MenuItem[refreshIntervals.length]; + for (int i = 0; i < refreshIntervals.length; i++) { + MenuItem item = new MenuItem(refreshIntervals[i], ""); + item.addClickHandler(menuClick); + refreshMenuMappings.put(refreshValues[i], refreshIntervals[i]); + refreshMenuItems[i] = item; + } + + refreshMenu.setItems(refreshMenuItems); + refreshMenuButton = new LocatableIMenuButton(extendLocatorId("AutoRefreshButton"), "Change Refresh Time", + refreshMenu); + refreshMenu.setAutoHeight(); + refreshMenuButton.setWidth(170); + refreshMenuButton.setShowTitle(true); + refreshMenuButton.setTop(0); + refreshMenuButton.setIconOrientation("left"); + + CanvasItem refreshCanvas = new CanvasItem(); + refreshCanvas.setTitle("Portlets auto-refresh interval"); + refreshCanvas.setWrapTitle(false); + refreshCanvas.setCanvas(refreshMenuButton); + refreshCanvas.setStartRow(false); + refreshCanvas.setEndRow(false); + + editForm.setItems(nameItem, numColItem, addCanvas, picker, addColumn, removeColumn, refreshCanvas); + updateRefreshMenu(); return editForm; }
@@ -327,10 +403,31 @@ public class DashboardView extends LocatableVLayout { }
private void updateConfigs(Dashboard result) { - for (PortletWindow portletWindow : portlets) { - for (DashboardPortlet portlet : result.getPortlets()) { - if (portletWindow.getDashboardPortlet().getId() == portlet.getId()) { - portletWindow.getDashboardPortlet().setConfiguration(portlet.getConfiguration()); + if (result != null) { + if (portletMap == null) { + portletMap = new HashMap<String, PortletViewFactory>(); + for (String key : PortletFactory.getRegisteredPortletKeys()) { + portletMap.put(key, PortletFactory.getRegisteredPortlet(key)); + } + } + for (PortletWindow portletWindow : portlets) { + for (DashboardPortlet portlet : result.getPortlets()) { + if (portletWindow.getDashboardPortlet().getId() == portlet.getId()) { + portletWindow.getDashboardPortlet().setConfiguration(portlet.getConfiguration()); + + PortletViewFactory viewFactory = portletMap.get(portlet.getPortletKey()); + + // TODO: Note, we're using a sequence generated ID here as a locatorId. This is not optimal for repeatable + // tests as a change in the number of default portlets, or a change in test order could make a test + // non-repeatable. But, at the moment we lack the infrastructure to generate a unique, predictable id. + Portlet view = viewFactory.getInstance(PortletFactory.replaceSpaces(portlet.getPortletKey()) + + "-" + Integer.toString(portlet.getId())); + + //add code to re-initialize refresh cycle for portlets + if (portlet instanceof AutoRefreshPortlet) { + ((AutoRefreshPortlet) view).startRefreshCycle(); + } + } } } } @@ -370,4 +467,53 @@ public class DashboardView extends LocatableVLayout { } markForRedraw(); } + + public class UpdatePortletRefreshCallback implements AsyncCallback<Subject> { + public void onSuccess(Subject subject) { + String m; + if (refreshInterval > 0) { + m = "Updated interval for portlets that auto-refresh"; + } else { + m = "Stopping reload for portlets that auto-refresh"; + } + CoreGUI.getMessageCenter().notify(new Message(m, Message.Severity.Info)); + updateRefreshMenu(); + save(); + } + + public void onFailure(Throwable throwable) { + String m; + if (refreshInterval > 0) { + m = "Failed to updated interval for portlets that auto-refresh"; + } else { + m = "Failed to disable reload for portlets that auto-refresh"; + } + CoreGUI.getMessageCenter().notify(new Message(m, Message.Severity.Error)); + // Revert back to our original favorite status, since the server update failed. + updateRefreshMenu(); + } + } + + public void updateRefreshMenu() { + if (refreshMenuItems != null) { + int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + String currentSelection = refreshMenuMappings.get(retrievedRefreshInterval); + if (currentSelection != null) { + for (int i = 0; i < refreshMenuItems.length; i++) { + MenuItem menu = refreshMenuItems[i]; + if (currentSelection.equals(menu.getTitle())) { + menu.setIcon(ImageManager.getAvailabilityIcon(true)); + } else { + menu.setIcon(""); + } + refreshMenuItems[i] = menu; + } + //update the menu + refreshMenuButton.getMenu().setItems(refreshMenuItems); + } + } + if (this.refreshMenuButton != null) { + this.refreshMenuButton.markForRedraw(); + } + } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java index f3c3246..61bd111 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java @@ -253,8 +253,8 @@ public class DashboardsView extends LocatableVLayout implements BookmarkableView DashboardPortlet recentAlerts = new DashboardPortlet(RecentAlertsPortlet.KEY, RecentAlertsPortlet.KEY, 250); dashboard.addPortlet(recentAlerts, 1, 3);
- DashboardPortlet recentlyAdded = new DashboardPortlet(MSG.common_title_recently_added(), RecentlyAddedResourcesPortlet.KEY, - 250); + DashboardPortlet recentlyAdded = new DashboardPortlet(MSG.common_title_recently_added(), + RecentlyAddedResourcesPortlet.KEY, 250); dashboard.addPortlet(recentlyAdded, 1, 4);
DashboardPortlet operations = new DashboardPortlet(MSG.common_title_operations(), OperationsPortlet.KEY, 500); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java index 07dd73f..857f893 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java @@ -92,7 +92,7 @@ public class PortletFactory { * @param portletKey * @return */ - private static String replaceSpaces(String portletKey) { + public static String replaceSpaces(String portletKey) { String translated = portletKey; if (portletKey != null) { translated = portletKey.replaceAll(" ", "_"); @@ -101,11 +101,19 @@ public class PortletFactory { }
@SuppressWarnings("unchecked") - public static List<String> getRegisteredPortlets() { + public static List<String> getRegisteredPortletKeys() {
ArrayList portlets = new ArrayList(registeredPortlets.keySet()); Collections.sort(portlets); return portlets; }
+ public static PortletViewFactory getRegisteredPortlet(String key) { + PortletViewFactory portletFactory = null; + if ((key != null) & (!key.trim().isEmpty())) { + portletFactory = registeredPortlets.get(key); + } + return portletFactory; + } + } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java new file mode 100644 index 0000000..2c9c217 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java @@ -0,0 +1,57 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.dashboard; + +import com.google.gwt.user.client.Timer; +import com.smartgwt.client.widgets.Canvas; + +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; +import org.rhq.enterprise.gui.coregui.client.components.table.Table; +import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; + +/** + * @author Simeon Pinder + */ +public class TableOrCanvasAutoRefresh { + + private Timer reloader; + + public TableOrCanvasAutoRefresh(final Canvas toBeReloaded) { + if (toBeReloaded != null) { + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) { + reloader = new Timer() { + public void run() { + if (toBeReloaded instanceof Table) { + ((Table) toBeReloaded).refresh(); + } else { + ((Canvas) toBeReloaded).redraw(); + } + + //launch again until portlet reference and child references GC. + reloader.schedule(retrievedRefreshInterval); + } + }; + reloader.schedule(retrievedRefreshInterval); + } else {//disable timer + reloader = null; + } + } + } +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java index 87d2911..c837294 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java @@ -32,6 +32,7 @@ import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.dashboard.DashboardPortlet; +import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; @@ -39,6 +40,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow; import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.AutodiscoveryQueueDataSource; import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.ResourceAutodiscoveryView; +import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
@@ -187,13 +189,19 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements C
@Override public void startRefreshCycle() { - reloader = new Timer() { - public void run() { - redraw(); - //launch again until portlet reference and child references GC. - reloader.schedule(refreshCycle); - } - }; - reloader.schedule(refreshCycle); + final int retrievedRefreshInterval = UserSessionManager.getUserPreferences().getPageRefreshInterval(); + if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) { + reloader = new Timer() { + public void run() { + redraw(); + //launch again until portlet reference and child references GC. + reloader.schedule(retrievedRefreshInterval); + } + }; + reloader.schedule(retrievedRefreshInterval); + } else {//disable timer + reloader = null; + } + // new TableOrCanvasAutoRefresh(this); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java index d0913fc..97e6314 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java @@ -72,6 +72,15 @@ public class UserPreferences { store(callback); }
+ public int getPageRefreshInterval() { + return getPreferenceAsInteger(UserPreferenceNames.PAGE_REFRESH_PERIOD); + } + + public void setPageRefreshInterval(int refreshInterval, AsyncCallback<Subject> callback) { + setPreference(UserPreferenceNames.PAGE_REFRESH_PERIOD, String.valueOf(refreshInterval)); + store(callback); + } + protected String getPreference(String name) { return userConfiguration.getSimpleValue(name, null); } @@ -144,6 +153,17 @@ public class UserPreferences { } }
+ public Integer getPreferenceAsInteger(String key) { + String pref = null; + try { + pref = getPreference(key); + } catch (IllegalArgumentException e) { + + // log.debug("A user preference named '" + key + "' does not exist."); + } + return (pref != null) ? Integer.valueOf(pref) : Integer.valueOf(0); + } + public void addChangeListener(UserPreferenceChangeListener listener) { changeListeners.add(listener); }
rhq-commits@lists.fedorahosted.org