modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
| 10 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/selector/AbstractSelector.java
| 6 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/sorter/ReorderableList.java
| 21 +--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
| 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
| 23 +++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
| 18 ---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
| 56 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
| 43 +++++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
| 24 ++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
| 10 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalLayout.java
| 50 +++++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
| 28 +----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
| 13 --
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
| 6 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/LiveGraphView.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
| 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
| 29 ++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
| 7 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
| 7 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
| 11 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
| 8 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
| 7 +
24 files changed, 280 insertions(+), 107 deletions(-)
New commits:
commit 10d1fa32b0ff009576ea6e901c308f5c8d0aeec2
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Feb 1 14:07:44 2011 -0500
Selenium Work - provide dashboard save with a callback signature. This way
we can take post-save action and perform some necessary widget cleanup
after a portlet drag-drop.
- Also, fix dashboard redraw to not blow away the edit form.
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 078f483..5a19688 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
@@ -107,19 +107,19 @@ public class DashboardView extends LocatableVLayout {
@Override
protected void onInit() {
- super.onInit();
if (!isInitialized) {
+ super.onInit();
addMember(buildEditForm());
isInitialized = true;
}
}
public void redraw() {
- for (Canvas c : getChildren()) {
- c.removeFromParent();
- c.destroy();
- }
+ // destroy all of the portlets and recreate from scratch
+ portalLayout.removeFromParent();
+ portalLayout.destroy();
+ portalLayout = null;
buildPortlets();
}
@@ -328,8 +328,8 @@ public class DashboardView extends LocatableVLayout {
for (int i = 0; i < storedDashboard.getColumns(); i++) {
for (DashboardPortlet storedPortlet : storedDashboard.getPortlets(i)) {
- final PortletWindow portletWindow = new PortletWindow(portalLayout
- .extendLocatorId(getPortletLocatorId(storedPortlet)), this,
storedPortlet);
+ String locatorId = getPortletLocatorId(portalLayout, storedPortlet);
+ final PortletWindow portletWindow = new PortletWindow(locatorId, this,
storedPortlet);
portletWindows.add(portletWindow);
portletWindow.setTitle(storedPortlet.getName());
@@ -349,30 +349,30 @@ public class DashboardView extends LocatableVLayout {
* is one tuple that is guaranteed unique and useful for a repeatable locator Id:
DashBoard-Position. This
* means that the on a single dashboard each portlet has a unique column-columnIndex
pair. Although portlets
* can move, and the positions can change at runtime, it's still valid for a
locatorId because it is
- * unique and repeatable fpr test purposes. We also add the portletKey for an easier
visual cue.
+ * unique and repeatable for test purposes. We also add the portletKey for an easier
visual cue.
+ * The portalLayout's locatorId already incorporates the dashboardName, so we
need only extend it with the
+ * positioning information.
*
+ * @param portalLayout
* @param dashboardPortlet
* @return The locatorId for the portlet. Form
PortleyKey_DashboardId_Column_ColumnIndex
*/
- private String getPortletLocatorId(DashboardPortlet dashboardPortlet) {
+ private String getPortletLocatorId(PortalLayout portalLayout, DashboardPortlet
dashboardPortlet) {
StringBuilder locatorId = new StringBuilder(dashboardPortlet.getPortletKey());
locatorId.append("_");
- locatorId.append(dashboardPortlet.getDashboard().getId());
- locatorId.append("_");
locatorId.append(dashboardPortlet.getColumn());
locatorId.append("_");
locatorId.append(dashboardPortlet.getIndex());
- return locatorId.toString();
+ return portalLayout.extendLocatorId(locatorId.toString());
}
private void addPortlet(String portletKey, String portletName) {
DashboardPortlet storedPortlet = new DashboardPortlet(portletName, portletKey,
250);
storedDashboard.addPortlet(storedPortlet);
- String locatorId = getPortletLocatorId(storedPortlet);
- final PortletWindow newPortletWindow = new
PortletWindow(portalLayout.extendLocatorId(locatorId), this,
- storedPortlet);
+ String locatorId = getPortletLocatorId(portalLayout, storedPortlet);
+ final PortletWindow newPortletWindow = new PortletWindow(locatorId, this,
storedPortlet);
newPortletWindow.setTitle(portletName);
newPortletWindow.setHeight(350);
newPortletWindow.setVisible(false);
@@ -422,6 +422,10 @@ public class DashboardView extends LocatableVLayout {
}
public void save() {
+ save((AsyncCallback<Dashboard>) null);
+ }
+
+ public void save(final AsyncCallback<Dashboard> callback) {
// since we reset storedDashboard after the async update completes, block
modification of the dashboard
// during that interval.
DashboardView.this.disable();
@@ -430,6 +434,10 @@ public class DashboardView extends LocatableVLayout {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.view_dashboardManager_error(),
caught);
DashboardView.this.enable();
+
+ if (null != callback) {
+ callback.onFailure(caught);
+ }
}
public void onSuccess(Dashboard result) {
@@ -440,6 +448,11 @@ public class DashboardView extends LocatableVLayout {
// up to date portlets.
updatePortletWindows(result);
storedDashboard = result;
+
+ if (null != callback) {
+ callback.onSuccess(result);
+ }
+
DashboardView.this.enable();
}
});
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
index 8b92e5a..930b4a9 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
@@ -21,6 +21,8 @@ package org.rhq.enterprise.gui.coregui.client.dashboard;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.layout.VStack;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
+
/**
* @author Greg Hinkle
*/
@@ -52,4 +54,12 @@ public class PortalColumn extends VStack {
placeHolderProperties.setBorder("2px solid #4A5D75");
setPlaceHolderProperties(placeHolderProperties);
}
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ SeleniumUtility.destroyMembers(this);
+ }
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalLayout.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalLayout.java
index 2b23f95..025e92e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalLayout.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalLayout.java
@@ -22,13 +22,16 @@
*/
package org.rhq.enterprise.gui.coregui.client.dashboard;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.util.EventHandler;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.events.DropEvent;
import com.smartgwt.client.widgets.events.DropHandler;
+import org.rhq.core.domain.dashboard.Dashboard;
import org.rhq.core.domain.dashboard.DashboardPortlet;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
/**
* @author Greg Hinkle
@@ -57,9 +60,9 @@ public class PortalLayout extends LocatableHLayout {
int dropPosition = column.getDropPosition();
int dropColumn = columnNumber;
- Canvas target = EventHandler.getDragTarget();
- ((PortletWindow) target).getStoredPortlet().setIndex(dropPosition);
- ((PortletWindow) target).getStoredPortlet().setColumn(dropColumn);
+ final PortletWindow target = (PortletWindow)
EventHandler.getDragTarget();
+ target.getStoredPortlet().setIndex(dropPosition);
+ target.getStoredPortlet().setColumn(dropColumn);
int colNum = 0;
for (Canvas pcc : getMembers()) {
@@ -80,7 +83,31 @@ public class PortalLayout extends LocatableHLayout {
colNum++;
}
- save();
+
+ // drop means the portlet location has changed. The selenium testing
locators include positioning
+ // info. So, in this case we have to take the hit and completely
redraw the dash.
+ AsyncCallback<Dashboard> callback =
SeleniumUtility.getUseDefaultIds() ? null
+ : new AsyncCallback<Dashboard>() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ redraw();
+ }
+
+ @Override
+ public void onSuccess(Dashboard result) {
+ // for some reason the drag drop operation is leaving the
target widget (the
+ // portlet window) in the DOM, detached from its original
parent (the PortalLayout),
+ // and therefore not destroyed in the redraw(). So, kill
it off manually to
+ // avoid ID conflicts if the portlet is again dragged
back its original position.
+ target.removeFromParent();
+ target.destroy();
+
+ redraw();
+ }
+ };
+ save(callback);
+
com.allen_sauer.gwt.log.client.Log.info("Rearranged column
indexes");
}
});
@@ -99,8 +126,12 @@ public class PortalLayout extends LocatableHLayout {
return portalColumn;
}
- public void save() {
- this.dashboardView.save();
+ public void save(AsyncCallback<Dashboard> callback) {
+ this.dashboardView.save(callback);
+ }
+
+ public void redraw() {
+ this.dashboardView.redraw();
}
public void resize() {
@@ -117,4 +148,11 @@ public class PortalLayout extends LocatableHLayout {
}
}
}
+
+ // @Override
+ // protected void onDestroy() {
+ // destroyMembers();
+ // super.onDestroy();
+ // }
+
}
\ No newline at end of file
commit 44d2b7cf757d6b094431d83140a6f14b2978a5d1
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Feb 1 14:04:59 2011 -0500
Selenium Work - Locator conflict work
It seems that smartgwt2.4 along with our own architecture changes have
brought to the surface a significant amount ID conflict. Addressing the
conflicts requires diligence in the destroy/onDestroy logic and call
chains.
- Added onDestroy() methods to all of the Locatable Layout classes in order
to provide cleanup of members across the board, at destroy time. Note that
children are typically destroyed automatically but members are not. (Members
are managed by the layout and children are not).
-- removed redundant or incomplete onDestroy() impls from locatable Layout
subclasses.
- Added ability to "hide" Tabs in our TwoLevelTab infrastructure. Hiding a
tab is not provided by smartgwt (why?) so we were just removing the Tab from the
TabSet. This was leaving ghost widgets around as the Tab, SubTab, SubTab
Canvas's etc were not being handled correctly. Also, since Tab does not have
a destroy() method (why?) it must be cleaned up carefully, by addingt it to
a TabSet that is then itself destroyed.
-- Added onDestroy() callChain to the TwoLevelTabViews.
- Views using non-locatable Layouts (VLayout, HLayout, Layout, VStack etc)
with members added, may need to add onDestroy() logic that wipes those
members. I added this to ActvityView2 but this may be in other places as
well. Somthing to keep an eye out for.
-- Also in ActivityView2, removed redundant call to setID(), this should
not be called in general. ID assignment is typically performed by the
Locatable infrastructure. The redundant call can (and did) generate errors
for illegal ID (re)assignment.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/selector/AbstractSelector.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/selector/AbstractSelector.java
index 062a47f..f88c8b0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/selector/AbstractSelector.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/selector/AbstractSelector.java
@@ -65,7 +65,6 @@ import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableListGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTransferImgButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
/**
* @author Greg Hinkle
@@ -203,11 +202,6 @@ public abstract class AbstractSelector<T> extends
LocatableVLayout {
addMember(this.hlayout);
}
- @Override
- protected void onDestroy() {
- SeleniumUtility.destroyMembers(hlayout);
- }
-
private SectionStack buildAvailableItemsStack() {
SectionStack availableSectionStack = new SectionStack();
availableSectionStack.setWidth(300);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/sorter/ReorderableList.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/sorter/ReorderableList.java
index 90b605d..01076f8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/sorter/ReorderableList.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/sorter/ReorderableList.java
@@ -18,6 +18,11 @@
*/
package org.rhq.enterprise.gui.coregui.client.components.sorter;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import com.google.gwt.event.shared.HandlerRegistration;
import com.smartgwt.client.types.Cursor;
import com.smartgwt.client.types.ListGridFieldType;
@@ -29,14 +34,10 @@ import com.smartgwt.client.widgets.grid.events.RecordDropHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.SectionStack;
import com.smartgwt.client.widgets.layout.SectionStackSection;
+
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableListGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
/**
* @author Ian Springer
*/
@@ -59,7 +60,8 @@ public class ReorderableList extends LocatableVLayout {
this(locatorId, false, records, itemTitle, itemIcon);
}
- public ReorderableList(String locatorId, boolean isReadOnly, ListGridRecord[]
records, String itemTitle, String itemIcon) {
+ public ReorderableList(String locatorId, boolean isReadOnly, ListGridRecord[]
records, String itemTitle,
+ String itemIcon) {
super(locatorId);
this.isReadOnly = isReadOnly;
@@ -180,11 +182,4 @@ public class ReorderableList extends LocatableVLayout {
return itemIcon;
}
- @Override
- protected void onDestroy() {
- super.onDestroy();
-
- this.listGrid.destroy();
- }
-
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
index 9833e80..c8ce710 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
@@ -37,7 +37,7 @@ public class NamedTab extends LocatableTab {
return viewName.getTitle();
}
- protected void destroy() {
+ public void destroy() {
Canvas pane = getPane();
if (null != pane) {
pane.destroy();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
index d0a0b9e..62c8a2d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
@@ -54,7 +54,6 @@ public class NamedTabSet extends LocatableTabSet {
@Override
protected void onDestroy() {
-
for (NamedTab tab : getTabs()) {
tab.destroy();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
index b6296d7..3492891 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
@@ -26,7 +26,7 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.Locatable;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableButton;
/**
- * Simple class to provide a SubTab a locatorId.
+ * A Locatable SubTab associating a Button with a Canvas.
*
* @author Jay Shaughnessy
*/
@@ -75,6 +75,27 @@ public class SubTab implements Locatable {
return viewName.getTitle();
}
+ public void destroyButton() {
+ if (null != button) {
+ button.removeFromParent();
+ button.destroy();
+ button = null;
+ }
+ }
+
+ public void destroyCanvas() {
+ if (null != canvas) {
+ canvas.removeFromParent();
+ canvas.destroy();
+ canvas = null;
+ }
+ }
+
+ public void destroy() {
+ destroyCanvas();
+ destroyButton();
+ }
+
@Override
public String extendLocatorId(String extension) {
return this.locatorId + "_" + extension;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
index 4797641..70751b5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
@@ -90,7 +90,7 @@ public class SubTabLayout extends LocatableVLayout {
}
/**
- * Make subTab visible.
+ * Make subTab visible.
*
* @param subTab not null
*/
@@ -105,17 +105,12 @@ public class SubTabLayout extends LocatableVLayout {
}
/**
- * Make subTab not visible.
+ * Make subTab not visible. Keeps any associated Canvas.
*
* @param subTab not null
*/
public void hideSubTab(SubTab subTab) {
- Button button = subTab.getButton();
- if (null != button) {
- buttonBar.removeMember(button);
- button.destroy();
- subTab.setButton(null);
- }
+ subTab.destroyButton();
}
public boolean isSubTabVisible(SubTab subTab) {
@@ -292,12 +287,9 @@ public class SubTabLayout extends LocatableVLayout {
/**
* Destroy all the currently held views so that they can be replaced with new
versions
*/
- public void destroyViews() {
+ void destroyViews() {
for (SubTab subTab : subTabs.values()) {
- if (subTab.getCanvas() != null) {
- subTab.getCanvas().destroy();
- subTab.setCanvas(null);
- }
+ subTab.destroyCanvas();
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
index e256299..f8f0f32 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
@@ -18,8 +18,12 @@
*/
package org.rhq.enterprise.gui.coregui.client.components.tab;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.event.shared.HandlerRegistration;
+import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.events.TabSelectedEvent;
import com.smartgwt.client.widgets.tab.events.TabSelectedHandler;
@@ -31,6 +35,9 @@ import com.smartgwt.client.widgets.tab.events.TabSelectedHandler;
*/
public class TwoLevelTabSet extends NamedTabSet implements TabSelectedHandler,
TwoLevelTabSelectedHandler {
+ /** maps Tab locator IDs to Tabs. */
+ private Map<String, TwoLevelTab> hiddenTabs = new LinkedHashMap<String,
TwoLevelTab>();
+
public TwoLevelTabSet(String locatorId) {
super(locatorId);
}
@@ -58,6 +65,41 @@ public class TwoLevelTabSet extends NamedTabSet implements
TabSelectedHandler, T
return twoLevelTabs;
}
+ // Smartgwt does not currently offer the ability to hide a Tab (why!) so we fake it
here. This allows us to keep
+ // the Tab structure in place while removing it from the TabSet
+ public void setTabHidden(TwoLevelTab tab, boolean hidden) {
+ if (hidden) {
+ if (hiddenTabs.containsKey(tab.getLocatorId())) {
+ return;
+ }
+
+ // don't let the removeTab() destroy the pane
+ Canvas contentPane = tab.getPane();
+ updateTab(tab, null);
+ removeTab(tab);
+ // Reset the pane on the tab, since the call to updateTab() above nulled it
out.
+ tab.setPane(contentPane);
+
+ hiddenTabs.put(tab.getLocatorId(), tab);
+ } else {
+ if (!hiddenTabs.containsKey(tab.getLocatorId())) {
+ return;
+ }
+
+ hiddenTabs.remove(tab.getLocatorId());
+ addTab(tab);
+ }
+ }
+
+ public void destroyViews() {
+ for (TwoLevelTab tab : getTabs()) {
+ tab.getLayout().destroyViews();
+ }
+ for (TwoLevelTab tab : hiddenTabs.values()) {
+ tab.getLayout().destroyViews();
+ }
+ }
+
// ------- Event support -------
// Done with a separate handler manager from parent class on purpose (compatibility
issue)
@@ -113,4 +155,18 @@ public class TwoLevelTabSet extends NamedTabSet implements
TabSelectedHandler, T
disableTab(tab);
}
}
+
+ @Override
+ protected void onDestroy() {
+ // add the hidden tabs back under the TabSet. This will get them destroyed by
smartgwt when the tabset
+ // goes away. There is no explicit Tab.destroy().
+ for (TwoLevelTab tab : hiddenTabs.values()) {
+ addTab(tab);
+ }
+ for (TwoLevelTab tab : getTabs()) {
+ tab.getLayout().destroyViews();
+ }
+ super.onDestroy();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
index 2242211..9cf6a6a 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
@@ -105,27 +105,11 @@ public abstract class AbstractTwoLevelTabSetView<T, U extends
Layout> extends Lo
}
protected boolean updateTab(TwoLevelTab tab, boolean visible, boolean enabled) {
- TwoLevelTab attachedTab = getTabSet().getTabByLocatorId(tab.getLocatorId());
if (visible) {
- if (attachedTab == null) {
- getTabSet().addTab(tab);
- attachedTab = getTabSet().getTabByLocatorId(tab.getLocatorId());
- }
- getTabSet().setTabEnabled(attachedTab, enabled);
+ getTabSet().setTabHidden(tab, false);
+ getTabSet().setTabEnabled(tab, enabled);
} else {
- if (attachedTab != null) {
- // NOTE: If the currently selected tab is going away then switch to the
default
- // prior to the removeTab call.
- if (attachedTab.equals(getTabSet().getSelectedTab())) {
- selectDefaultTabAndSubTab();
- }
- // NOTE: We need to remove the tab, because SmartGWT tabset doesn't
support hiding tabs.
- Canvas contentPane = attachedTab.getPane();
- getTabSet().updateTab(attachedTab, null);
- getTabSet().removeTab(attachedTab);
- // Reset the pane on the tab, since the call to updateTab() above nulled
it out.
- attachedTab.setPane(contentPane);
- }
+ getTabSet().setTabHidden(tab, true);
}
return (visible && enabled);
@@ -280,4 +264,10 @@ public abstract class AbstractTwoLevelTabSetView<T, U extends
Layout> extends Lo
return baseViewPath;
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ tabSet.destroy();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index d46a5f4..14f71e6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -25,7 +25,6 @@ import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.tab.Tab;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
@@ -224,9 +223,8 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
int groupId = group.getId();
getTitleBar().setGroup(groupComposite);
- for (Tab top : this.getTabSet().getTabs()) {
- ((TwoLevelTab) top).getLayout().destroyViews();
- }
+ // wipe the canvas views for the current set of subtabs.
+ this.getTabSet().destroyViews();
GroupCategory groupCategory =
groupComposite.getResourceGroup().getGroupCategory();
Set<ResourceTypeFacet> facets =
groupComposite.getResourceFacets().getFacets();
@@ -297,11 +295,10 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
private void updateOperationsTab(GroupCategory groupCategory,
Set<ResourceTypeFacet> facets) {
if (updateTab(this.operationsTab, groupCategory == GroupCategory.COMPATIBLE
&& facets.contains(ResourceTypeFacet.OPERATION), true)) {
- updateSubTab(this.operationsTab, this.operationsSchedules,
- new
GroupOperationScheduleListView(this.operationsSchedules.extendLocatorId("View"),
- this.groupComposite), true, true);
+ updateSubTab(this.operationsTab, this.operationsSchedules, new
GroupOperationScheduleListView(
+ this.operationsSchedules.extendLocatorId("View"),
this.groupComposite), true, true);
updateSubTab(this.operationsTab, this.operationsHistory, new
GroupOperationHistoryListView(
- this.operationsHistory.extendLocatorId("View"),
this.groupComposite), true, true);
+ this.operationsHistory.extendLocatorId("View"),
this.groupComposite), true, true);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
index a4a5172..732f046 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
@@ -25,7 +25,6 @@ import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.tab.Tab;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.criteria.ResourceCriteria;
@@ -232,9 +231,8 @@ public class ResourceDetailView extends
AbstractTwoLevelTabSetView<ResourceCompo
Resource resource = this.resourceComposite.getResource();
getTitleBar().setResource(this.resourceComposite);
- for (Tab top : this.getTabSet().getTabs()) {
- ((TwoLevelTab) top).getLayout().destroyViews();
- }
+ // wipe the canvas views for the current set of subtabs.
+ this.getTabSet().destroyViews();
ResourcePermission resourcePermissions =
this.resourceComposite.getResourcePermission();
Set<ResourceTypeFacet> facets =
this.resourceComposite.getResourceFacets().getFacets();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/LiveGraphView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/LiveGraphView.java
index ca6c27d..6e3e580 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/LiveGraphView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/LiveGraphView.java
@@ -298,7 +298,7 @@ public class LiveGraphView extends LocatableVLayout {
@Override
protected void onDestroy() {
super.onDestroy();
- dataLoader.cancel();
- hoverLabel.destroy();
+
+ stop();
}
}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
index db74e71..faa3ab1 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
@@ -380,6 +380,7 @@ public class SmallGraphView extends LocatableVLayout {
@Override
protected void onDestroy() {
super.onDestroy();
+
hoverLabel.destroy();
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
index f95591a..17b4e5c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
@@ -63,6 +63,7 @@ import
org.rhq.enterprise.gui.coregui.client.util.measurement.GwtMonitorUtils;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableCanvas;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
/**
* The content pane of the Resource Summary>Activity tab.
@@ -72,8 +73,8 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
public class ActivityView extends LocatableHLayout implements RefreshableView {
//Locatable ui references
- private VLayout leftPane = new VLayout();;
- private VLayout rightPane = new VLayout();;
+ private VLayout leftPane = new VLayout();
+ private VLayout rightPane = new VLayout();
private LocatableCanvas recentMeasurementsContent = new
LocatableCanvas(extendLocatorId("RecentMetrics"));
private LocatableCanvas recentAlertsContent = new
LocatableCanvas(extendLocatorId("RecentAlerts"));
private LocatableCanvas recentOobContent = new
LocatableCanvas(extendLocatorId("RecentOobs"));
@@ -103,7 +104,6 @@ public class ActivityView extends LocatableHLayout implements
RefreshableView {
public ActivityView(String locatorId, ResourceComposite resourceComposite) {
super(locatorId);
this.resourceComposite = resourceComposite;
- setID(locatorId);
initializeUi();
}
@@ -177,6 +177,10 @@ public class ActivityView extends LocatableHLayout implements
RefreshableView {
rightPane.addMember(recentPkgHistoryTitle);
rightPane.addMember(recentPkgHistoryContent);
recentPkgHistoryContent.setHeight(20);
+
+ addMember(leftPane);
+ addMember(rightPane);
+
loadData();
}
@@ -195,8 +199,16 @@ public class ActivityView extends LocatableHLayout implements
RefreshableView {
@Override
protected void onDraw() {
super.onDraw();
- addMember(leftPane);
- addMember(rightPane);
+ refresh();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ // destroy members of non-locatable layouts
+ SeleniumUtility.destroyMembers(leftPane);
+ SeleniumUtility.destroyMembers(rightPane);
}
@Override
@@ -221,6 +233,13 @@ public class ActivityView extends LocatableHLayout implements
RefreshableView {
addMember(titleElement);
setMembersMargin(10);
}
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ SeleniumUtility.destroyMembers(this);
+ }
}
/** Fetches alerts and updates the DynamicForm instance with the latest
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
index 5064527..8a72774 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
@@ -51,4 +51,11 @@ public class LocatableHLayout extends HLayout implements Locatable {
SeleniumUtility.destroyMembers(this);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ destroyMembers();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
index 17c1f9c..8f8311c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
@@ -35,4 +35,11 @@ public class LocatableLayout extends Layout implements Locatable {
SeleniumUtility.destroyMembers(this);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ destroyMembers();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
index fa24d45..13db7f8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
@@ -31,4 +31,15 @@ public class LocatableToolStrip extends ToolStrip implements Locatable
{
return this.locatorId + "_" + extension;
}
+ public void destroyMembers() {
+ SeleniumUtility.destroyMembers(this);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ destroyMembers();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
index 61991c4..d91f9cd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
@@ -50,4 +50,12 @@ public class LocatableVLayout extends VLayout implements Locatable {
public void destroyMembers() {
SeleniumUtility.destroyMembers(this);
}
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ destroyMembers();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
index bb9093b..c6dfafd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
@@ -51,4 +51,11 @@ public class LocatableVStack extends VStack implements Locatable {
SeleniumUtility.destroyMembers(this);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ destroyMembers();
+ }
+
}
commit 950b560c8a957f3bba1467747fe8a233fa2745df
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon Jan 31 11:48:18 2011 -0500
Fix bookmarkable dashboard urls to use dash ids as opposed to localizable
titles.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
index 431f873..fd59cf6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
@@ -391,7 +391,7 @@ public class CoreGUI implements EntryPoint,
ValueChangeHandler<String> {
((BookmarkableView)
currentCanvas).renderView(viewPath.next());
} else {
long elapsedMillis = System.currentTimeMillis() -
startTime;
- if (elapsedMillis < 5000) {
+ if (elapsedMillis < 10000) {
schedule(100); // Reschedule the timer.
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
index 0322d2d..ff43a66 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
@@ -154,7 +154,7 @@ public class LinkManager {
}
}
- public static String getDashboardLink() {
+ public static String getDashboardsLink() {
if (GWT) {
return "#Dashboards";
} else {
@@ -162,6 +162,14 @@ public class LinkManager {
}
}
+ public static String getDashboardLink(int dashboardId) {
+ if (GWT) {
+ return "#Dashboards/" + dashboardId;
+ } else {
+ return "/Dashboard.do";
+ }
+ }
+
public static String getHubAllResourcesLink() {
if (GWT) {
return "#Inventory";
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 f652874..9a4970e 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
@@ -28,7 +28,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.util.BooleanCallback;
@@ -51,6 +50,7 @@ import org.rhq.core.domain.dashboard.DashboardPortlet;
import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.InitializableView;
+import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.PermissionsLoadedListener;
import org.rhq.enterprise.gui.coregui.client.PermissionsLoader;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
@@ -209,11 +209,11 @@ public class DashboardsView extends LocatableVLayout implements
BookmarkableView
/*
* do not record history item if initially loading the DashboardsView.
if the selectedDashboardView is
- * null, suppression will prevent redirection from #Dashboard to
#Dashboard/<id>, which would require
- * the user to hit the back button twice to return to the previous page.
+ * null, suppression will prevent redirection from #Dashboards to
#Dashboards/dashboardId,
+ * which would require the user to hit the back button twice to return to
the previous page.
*/
if (selectedDashboardView != null) {
- History.newItem("Dashboard/" + selectedTab.getName(),
false);
+
CoreGUI.goToView(LinkManager.getDashboardLink(Integer.valueOf(selectedTab.getName())));
}
selectedDashboardView = (DashboardView) selectedTab.getPane();
@@ -224,11 +224,12 @@ public class DashboardsView extends LocatableVLayout implements
BookmarkableView
});
for (Dashboard dashboard : dashboards) {
- String dashboardName = dashboard.getName();
- String dashboardLocatorId = getDashboardLocatorId(dashboardName);
+ String dashboardName = String.valueOf(dashboard.getId());
+ String dashboardTitle = dashboard.getName();
+ String dashboardLocatorId = getDashboardLocatorId(dashboardTitle);
String locatorId = extendLocatorId(dashboardLocatorId);
DashboardView dashboardView = new DashboardView(locatorId, this, dashboard);
- Tab tab = new NamedTab(locatorId, new ViewName(dashboardName, dashboardName),
null);
+ Tab tab = new NamedTab(locatorId, new ViewName(dashboardName,
dashboardTitle), null);
tab.setPane(dashboardView);
tab.setCanClose(true);
@@ -365,13 +366,14 @@ public class DashboardsView extends LocatableVLayout implements
BookmarkableView
}
public void onSuccess(Dashboard result) {
- String dashboardName = result.getName();
- dashboardsByName.put(dashboardName, result); // update map so name can
not be reused
- String dashboardLocatorId = getDashboardLocatorId(dashboardName);
+ String dashboardName = String.valueOf(result.getId());
+ String dashboardTitle = result.getName();
+ dashboardsByName.put(dashboardTitle, result); // update map so name can
not be reused
+ String dashboardLocatorId = getDashboardLocatorId(dashboardTitle);
DashboardView dashboardView = new
DashboardView(extendLocatorId(dashboardLocatorId),
DashboardsView.this, result);
NamedTab tab = new NamedTab(extendLocatorId(dashboardLocatorId), new
ViewName(dashboardName,
- dashboardName), null);
+ dashboardTitle), null);
tab.setPane(dashboardView);
tab.setCanClose(true);