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(a)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(a)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(a)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(a)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(a)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);
}