modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceCriteria.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java
| 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
| 37 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalLayout.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGWTService.java
| 12
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
| 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
| 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java
| 186 ------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceOverviewView.java
| 57 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceSummaryView.java
| 186 ++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/AutodiscoveryQueueDataSource.java
| 221 +++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
| 229 +++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
| 291 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/SelectedResourceDataSource.java
| 73 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeDataSource.java
| 260 ++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeView.java
| 115 +++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
| 12
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
| 31 +
modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
| 16
modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_24.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_24.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_24.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_24.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_24.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_24.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_24.png
|binary
modules/enterprise/gui/portal-war/src/main/webapp/rhq/discovery/queue.xhtml
| 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
| 21
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossLocal.java
| 10
38 files changed, 1580 insertions(+), 247 deletions(-)
New commits:
commit b599b8bf8c37f25c60b80ec409a441a6e1578e05
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 15:44:03 2010 -0400
icons for the new resource and type views
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_16.png
new file mode 100644
index 0000000..af73da1
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_16.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_24.png
new file mode 100644
index 0000000..66627f8
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_down_24.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_16.png
new file mode 100644
index 0000000..223b0b3
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_16.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_24.png
new file mode 100644
index 0000000..fb50a9d
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Platform_up_24.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_16.png
new file mode 100644
index 0000000..69a4d9f
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_16.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_24.png
new file mode 100644
index 0000000..660e4b8
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_down_24.png differ
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_16.png
new file mode 100644
index 0000000..132e4ce
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_16.png differ
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_24.png
new file mode 100644
index 0000000..83da6ad
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Server_up_24.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_16.png
new file mode 100644
index 0000000..d09143b
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_16.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_24.png
new file mode 100644
index 0000000..24b1d98
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_down_24.png differ
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_16.png
new file mode 100644
index 0000000..bbebc5c
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_16.png differ
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_24.png
new file mode 100644
index 0000000..7df5599
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/Service_up_24.png differ
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_16.png
new file mode 100644
index 0000000..35bbd70
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_16.png differ
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_24.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_24.png
new file mode 100644
index 0000000..0dd5e93
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/types/plugin_24.png differ
commit fd07e05ac93f368163b45ae95e26f9faed1c80b4
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 15:40:09 2010 -0400
Fixed some bugs in but enablement
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
index 77952a0..a309ce1 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
@@ -66,6 +66,11 @@ public class ResourceSelector extends HLayout {
private ListGrid availableGrid;
private ListGrid assignedGrid;
+ private TransferImgButton addButton;
+ private TransferImgButton removeButton;
+ private TransferImgButton addAllButton;
+ private TransferImgButton removeAllButton;
+
private Criteria latestCriteria;
public ResourceSelector() {
@@ -82,16 +87,15 @@ public class ResourceSelector extends HLayout {
availableFilterForm.setNumCols(6);
final TextItem search = new TextItem("search", "Search");
- IPickTreeItem typeSelectItem = new
IPickTreeItem("type","Type");
+ IPickTreeItem typeSelectItem = new IPickTreeItem("type",
"Type");
typeSelectItem.setDataSource(new ResourceTypeTreeDataSource());
typeSelectItem.setValueField("id");
typeSelectItem.setCanSelectParentItems(true);
typeSelectItem.setLoadDataOnDemand(false);
-
- SelectItem categorySelect = new
SelectItem("category","Category");
-
categorySelect.setValueMap("Platform","Server","Service");
+ SelectItem categorySelect = new SelectItem("category",
"Category");
+ categorySelect.setValueMap("Platform", "Server",
"Service");
categorySelect.setAllowEmptyValue(true);
availableFilterForm.setItems(search, typeSelectItem, categorySelect);
@@ -117,13 +121,12 @@ public class ResourceSelector extends HLayout {
addMember(availableLayout);
-
availableFilterForm.addItemChangedHandler(new ItemChangedHandler() {
public void onItemChanged(ItemChangedEvent itemChangedEvent) {
latestCriteria = new Criteria();
-
latestCriteria.setAttribute("name",availableFilterForm.getValue("search"));
-
latestCriteria.setAttribute("type",availableFilterForm.getValue("type"));
-
latestCriteria.setAttribute("category",availableFilterForm.getValue("category"));
+ latestCriteria.setAttribute("name",
availableFilterForm.getValue("search"));
+ latestCriteria.setAttribute("type",
availableFilterForm.getValue("type"));
+ latestCriteria.setAttribute("category",
availableFilterForm.getValue("category"));
Timer t = new Timer() {
@Override
@@ -140,20 +143,17 @@ public class ResourceSelector extends HLayout {
});
-
-
-
-
VStack moveButtonStack = new VStack(6);
moveButtonStack.setAlign(VerticalAlignment.CENTER);
moveButtonStack.setWidth(40);
- final TransferImgButton addButton = new
TransferImgButton(TransferImgButton.RIGHT);
+ addButton = new TransferImgButton(TransferImgButton.RIGHT);
addButton.setDisabled(true);
- final TransferImgButton removeButton = new
TransferImgButton(TransferImgButton.LEFT);
+ removeButton = new TransferImgButton(TransferImgButton.LEFT);
removeButton.setDisabled(true);
- TransferImgButton addAllButton = new
TransferImgButton(TransferImgButton.RIGHT_ALL);
- TransferImgButton removeAllButton = new
TransferImgButton(TransferImgButton.LEFT_ALL);
+ addAllButton = new TransferImgButton(TransferImgButton.RIGHT_ALL);
+ removeAllButton = new TransferImgButton(TransferImgButton.LEFT_ALL);
+ removeAllButton.setDisabled(true);
moveButtonStack.addMember(addButton);
moveButtonStack.addMember(removeButton);
@@ -163,7 +163,6 @@ public class ResourceSelector extends HLayout {
addMember(moveButtonStack);
-
VLayout assignedLayout = new VLayout();
assignedLayout.addMember(new LayoutSpacer());
@@ -181,16 +180,19 @@ public class ResourceSelector extends HLayout {
addMember(assignedLayout);
+
addButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
assignedGrid.transferSelectedData(availableGrid);
select(assignedGrid.getSelection());
+ updateButtons();
}
});
removeButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
deselect(assignedGrid.getSelection());
assignedGrid.removeSelectedData();
+ updateButtons();
}
});
addAllButton.addClickHandler(new ClickHandler() {
@@ -198,6 +200,7 @@ public class ResourceSelector extends HLayout {
availableGrid.selectAllRecords();
assignedGrid.transferSelectedData(availableGrid);
select(availableGrid.getSelection());
+ updateButtons();
}
});
removeAllButton.addClickHandler(new ClickHandler() {
@@ -205,18 +208,19 @@ public class ResourceSelector extends HLayout {
assignedGrid.selectAllRecords();
deselect(assignedGrid.getSelection());
assignedGrid.removeSelectedData();
+ updateButtons();
}
});
availableGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
public void onSelectionChanged(SelectionEvent selectionEvent) {
- addButton.setDisabled(!availableGrid.anySelected());
+ updateButtons();
}
});
assignedGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
public void onSelectionChanged(SelectionEvent selectionEvent) {
- removeButton.setDisabled(!assignedGrid.anySelected());
+ updateButtons();
}
});
@@ -237,6 +241,13 @@ public class ResourceSelector extends HLayout {
});
}
+ private void updateButtons() {
+ addButton.setDisabled(!availableGrid.anySelected() ||
availableGrid.getTotalRows() == 0);
+ removeButton.setDisabled(!assignedGrid.anySelected() ||
assignedGrid.getTotalRows() == 0);
+ addAllButton.setDisabled(availableGrid.getTotalRows() == 0);
+ removeAllButton.setDisabled(assignedGrid.getTotalRows() == 0);
+ }
+
private void select(ListGridRecord[] records) {
availableGrid.deselectAllRecords();
for (ListGridRecord record : records) {
commit f19b182733dff62648fe8b332c5be0dda6927a02
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:16:14 2010 -0400
New resource selection component (left-right boxes, drag-n-drop, search and filter,
selection indicator)
Resource selector demo'ed on the Demo canvas
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java
index 9b4539a..f192c58 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java
@@ -20,6 +20,8 @@ package org.rhq.enterprise.gui.coregui.client;
import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSearchView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.selection.ResourceSelector;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeTreeView;
import com.smartgwt.client.types.Side;
import com.smartgwt.client.types.TabBarControls;
@@ -50,22 +52,27 @@ public class DemoCanvas extends Canvas {
// topTabSet.setTop(50);
- Tab tableTab = new Tab("Resource Search Table");
+ Tab selectorTab = new Tab("Selector");
+ Tab typeTree = new Tab("Type Tree");
Tab treeTab = new Tab("Resource Tree");
final Tab configTab = new Tab("Configuration Editor");
//Tab alertHistoryTab = new Tab("Alert History");
+
+ selectorTab.setPane(new ResourceSelector());
+
// Agent: resource (10005) type (10060)
// Raw: 10003 / 10023
// both: 10002 / 10022
//configTab.setPane(new ConfigurationEditor(10005, 10060,
ConfigurationEditor.ConfigType.plugin));
//treeTab.setPane(new ResourceTreeView(new Resource(10001)));
- tableTab.setPane(new ResourceSearchView());
+ typeTree.setPane(new ResourceTypeTreeView());
//alertHistoryTab.setPane(new AbstractAlertsView());
+ topTabSet.addTab(selectorTab);
+ topTabSet.addTab(typeTree);
topTabSet.addTab(configTab);
- topTabSet.addTab(tableTab);
topTabSet.addTab(treeTab);
//topTabSet.addTab(alertHistoryTab);
//topTabSet.selectTab(alertHistoryTab);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
new file mode 100644
index 0000000..77952a0
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/ResourceSelector.java
@@ -0,0 +1,280 @@
+/*
+ * 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.inventory.resource.selection;
+
+import java.util.HashSet;
+
+import com.google.gwt.user.client.Timer;
+import com.smartgwt.client.data.Criteria;
+import com.smartgwt.client.data.Record;
+import com.smartgwt.client.types.DragDataAction;
+import com.smartgwt.client.types.DragTrackerMode;
+import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.types.VerticalAlignment;
+import com.smartgwt.client.widgets.ImgProperties;
+import com.smartgwt.client.widgets.TransferImgButton;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.events.KeyPressEvent;
+import com.smartgwt.client.widgets.events.KeyPressHandler;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.events.ItemChangedEvent;
+import com.smartgwt.client.widgets.form.events.ItemChangedHandler;
+import com.smartgwt.client.widgets.form.fields.IPickTreeItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.RecordDropEvent;
+import com.smartgwt.client.widgets.grid.events.RecordDropHandler;
+import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
+import com.smartgwt.client.widgets.grid.events.SelectionEvent;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.LayoutSpacer;
+import com.smartgwt.client.widgets.layout.VLayout;
+import com.smartgwt.client.widgets.layout.VStack;
+
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDatasource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeTreeDataSource;
+
+/**
+ * @author Greg Hinkle
+ */
+public class ResourceSelector extends HLayout {
+
+ private HashSet<Integer> selection = new HashSet<Integer>();
+
+ private ListGrid availableGrid;
+ private ListGrid assignedGrid;
+
+ private Criteria latestCriteria;
+
+ public ResourceSelector() {
+ setAlign(VerticalAlignment.BOTTOM);
+ setHeight(380);
+ }
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+
+ final DynamicForm availableFilterForm = new DynamicForm();
+ availableFilterForm.setNumCols(6);
+ final TextItem search = new TextItem("search", "Search");
+
+ IPickTreeItem typeSelectItem = new
IPickTreeItem("type","Type");
+ typeSelectItem.setDataSource(new ResourceTypeTreeDataSource());
+ typeSelectItem.setValueField("id");
+ typeSelectItem.setCanSelectParentItems(true);
+ typeSelectItem.setLoadDataOnDemand(false);
+
+
+
+ SelectItem categorySelect = new
SelectItem("category","Category");
+
categorySelect.setValueMap("Platform","Server","Service");
+ categorySelect.setAllowEmptyValue(true);
+ availableFilterForm.setItems(search, typeSelectItem, categorySelect);
+
+ VLayout availableLayout = new VLayout();
+ availableLayout.addMember(new LayoutSpacer());
+
+ availableLayout.addMember(availableFilterForm);
+
+ availableGrid = new ListGrid();
+ availableGrid.setHeight(350);
+ availableGrid.setCanDragRecordsOut(true);
+ availableGrid.setDragTrackerMode(DragTrackerMode.ICON);
+ availableGrid.setTrackerImage(new
ImgProperties("types/Service_up_16.png", 16, 16));
+ availableGrid.setDragDataAction(DragDataAction.COPY);
+ availableGrid.setDataSource(new SelectedResourceDataSource());
+ availableGrid.setFetchDelay(700);
+
+ availableGrid.setAutoFetchData(true);
+ availableGrid.setFields(new ListGridField("icon", 50), new
ListGridField("name"));
+
+ availableLayout.addMember(availableGrid);
+
+ addMember(availableLayout);
+
+
+
+ availableFilterForm.addItemChangedHandler(new ItemChangedHandler() {
+ public void onItemChanged(ItemChangedEvent itemChangedEvent) {
+ latestCriteria = new Criteria();
+
latestCriteria.setAttribute("name",availableFilterForm.getValue("search"));
+
latestCriteria.setAttribute("type",availableFilterForm.getValue("type"));
+
latestCriteria.setAttribute("category",availableFilterForm.getValue("category"));
+
+ Timer t = new Timer() {
+ @Override
+ public void run() {
+ if (latestCriteria != null) {
+ Criteria c = latestCriteria;
+ latestCriteria = null;
+ availableGrid.fetchData(c);
+ }
+ }
+ };
+ t.schedule(500);
+ }
+ });
+
+
+
+
+
+
+ VStack moveButtonStack = new VStack(6);
+ moveButtonStack.setAlign(VerticalAlignment.CENTER);
+ moveButtonStack.setWidth(40);
+
+ final TransferImgButton addButton = new
TransferImgButton(TransferImgButton.RIGHT);
+ addButton.setDisabled(true);
+ final TransferImgButton removeButton = new
TransferImgButton(TransferImgButton.LEFT);
+ removeButton.setDisabled(true);
+ TransferImgButton addAllButton = new
TransferImgButton(TransferImgButton.RIGHT_ALL);
+ TransferImgButton removeAllButton = new
TransferImgButton(TransferImgButton.LEFT_ALL);
+
+ moveButtonStack.addMember(addButton);
+ moveButtonStack.addMember(removeButton);
+ moveButtonStack.addMember(addAllButton);
+ moveButtonStack.addMember(removeAllButton);
+
+ addMember(moveButtonStack);
+
+
+
+ VLayout assignedLayout = new VLayout();
+ assignedLayout.addMember(new LayoutSpacer());
+
+ assignedGrid = new ListGrid();
+ assignedGrid.setHeight(350);
+ assignedGrid.setCanReorderRecords(true);
+ assignedGrid.setCanDragRecordsOut(true);
+
+ assignedGrid.setCanAcceptDroppedRecords(true);
+ ListGridField iconField = new ListGridField("icon", 50);
+ iconField.setType(ListGridFieldType.ICON);
+ assignedGrid.setFields(iconField, new ListGridField("name"));
+
+ assignedLayout.addMember(assignedGrid);
+ addMember(assignedLayout);
+
+
+ addButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ assignedGrid.transferSelectedData(availableGrid);
+ select(assignedGrid.getSelection());
+ }
+ });
+ removeButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ deselect(assignedGrid.getSelection());
+ assignedGrid.removeSelectedData();
+ }
+ });
+ addAllButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ availableGrid.selectAllRecords();
+ assignedGrid.transferSelectedData(availableGrid);
+ select(availableGrid.getSelection());
+ }
+ });
+ removeAllButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ assignedGrid.selectAllRecords();
+ deselect(assignedGrid.getSelection());
+ assignedGrid.removeSelectedData();
+ }
+ });
+
+ availableGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
+ public void onSelectionChanged(SelectionEvent selectionEvent) {
+ addButton.setDisabled(!availableGrid.anySelected());
+ }
+ });
+
+ assignedGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
+ public void onSelectionChanged(SelectionEvent selectionEvent) {
+ removeButton.setDisabled(!assignedGrid.anySelected());
+ }
+ });
+
+ assignedGrid.addKeyPressHandler(new KeyPressHandler() {
+ public void onKeyPress(KeyPressEvent event) {
+ if ("Delete".equals(event.getKeyName())) {
+ deselect(assignedGrid.getSelection());
+ assignedGrid.removeSelectedData();
+ }
+ }
+ });
+
+
+ assignedGrid.addRecordDropHandler(new RecordDropHandler() {
+ public void onRecordDrop(RecordDropEvent recordDropEvent) {
+ select(recordDropEvent.getDropRecords());
+ }
+ });
+ }
+
+ private void select(ListGridRecord[] records) {
+ availableGrid.deselectAllRecords();
+ for (ListGridRecord record : records) {
+ record.setEnabled(false);
+ selection.add(record.getAttributeAsInt("id"));
+ }
+ }
+
+ private void deselect(ListGridRecord[] records) {
+ HashSet<Integer> toRemove = new HashSet<Integer>();
+ for (ListGridRecord record : records) {
+ toRemove.add(record.getAttributeAsInt("id"));
+ }
+ selection.removeAll(toRemove);
+
+
+ for (Integer id : toRemove) {
+ Record r = availableGrid.getDataAsRecordList().find("id", id);
+ if (r != null) {
+ ((ListGridRecord) r).setEnabled(true);
+ }
+ }
+ availableGrid.markForRedraw();
+ }
+
+
+ private class SelectedResourceDataSource extends ResourceDatasource {
+
+
+ @Override
+ public ListGridRecord[] buildRecords(PageList<Resource> resources) {
+ ListGridRecord[] records = super.buildRecords(resources);
+ for (ListGridRecord record : records) {
+ if (selection.contains(record.getAttributeAsInt("id"))) {
+ record.setEnabled(false);
+ }
+ }
+ return records;
+ }
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/SelectedResourceDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/SelectedResourceDataSource.java
new file mode 100644
index 0000000..742a83f
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/selection/SelectedResourceDataSource.java
@@ -0,0 +1,73 @@
+/*
+ * 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.inventory.resource.selection;
+
+import java.util.ArrayList;
+
+import com.smartgwt.client.widgets.events.DropEvent;
+import com.smartgwt.client.widgets.events.DropHandler;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.RecordDropEvent;
+import com.smartgwt.client.widgets.grid.events.RecordDropHandler;
+
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDatasource;
+
+/**
+ * @author Greg Hinkle
+ */
+public class SelectedResourceDataSource extends ResourceDatasource {
+
+ private ArrayList<Integer> selection;
+
+
+ ListGrid availableGrid;
+ ListGrid assignedGrid;
+
+
+ public SelectedResourceDataSource(ArrayList<Integer> selection, ListGrid
availableGrid, ListGrid assignedGrid) {
+ this.selection = selection;
+ if (this.selection == null) {
+ selection = new ArrayList<Integer>();
+ }
+ this.availableGrid = availableGrid;
+ this.assignedGrid = assignedGrid;
+
+
+ assignedGrid.addRecordDropHandler(new RecordDropHandler() {
+ public void onRecordDrop(RecordDropEvent recordDropEvent) {
+ for (ListGridRecord record : recordDropEvent.getDropRecords()) {
+
+ record.setCanDrag(false);
+ record.setEnabled(false);
+
+
SelectedResourceDataSource.this.selection.add(record.getAttributeAsInt("id"));
+ }
+ }
+ });
+ }
+
+
+
+
+
+
+
+
+}
commit baac2f3668e15df88893f1e426f2c7198beb9265
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:15:13 2010 -0400
avoid npe for mismatched component depths
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 66772ea..3be0f48 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
@@ -190,7 +190,7 @@ public class CoreGUI implements EntryPoint {
}
}
int startIndex;
- View parentView;
+ View parentView = null;
if (commonBasePathSize > 0) {
// The requested path shares a common base path with the current
view, so skip rendering of
// views corresponding to this common base path. For example, if the
current view is
@@ -198,7 +198,10 @@ public class CoreGUI implements EntryPoint {
// only on for the Monitor and Graphs components of the path.
startIndex = commonBasePathSize;
int subViewsToRenderPathSize = viewIdNames.size() -
commonBasePathSize;
- parentView = CoreGUI.this.currentView;
+ View view = CoreGUI.this.currentView;
+ if (view != null) {
+ parentView = view;
+ }
for (int i = 0; i < subViewsToRenderPathSize; i++) {
parentView = parentView.getParent();
}
commit 84f4742ec27a15d37912207db9d4cbb1a1ad91ea
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:14:53 2010 -0400
Plugin and Type tree (for type pick list)
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeDataSource.java
new file mode 100644
index 0000000..dc1cbe9
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeDataSource.java
@@ -0,0 +1,260 @@
+/*
+ * 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.inventory.resource.type;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.data.DataSource;
+import com.smartgwt.client.data.fields.DataSourceTextField;
+import com.smartgwt.client.types.DSDataFormat;
+import com.smartgwt.client.types.DSProtocol;
+import com.smartgwt.client.widgets.tree.TreeNode;
+
+import org.rhq.core.domain.criteria.ResourceTypeCriteria;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.core.domain.util.PageOrdering;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.ResourceTypeGWTServiceAsync;
+
+/**
+ * @author Greg Hinkle
+ */
+public class ResourceTypeTreeDataSource extends DataSource {
+
+
+ private ResourceTypeGWTServiceAsync resourceTypeService =
GWTServiceLookup.getResourceTypeGWTService();
+
+ public ResourceTypeTreeDataSource() {
+
+ setClientOnly(false);
+ setDataProtocol(DSProtocol.CLIENTCUSTOM);
+ setDataFormat(DSDataFormat.CUSTOM);
+
+
+ DataSourceTextField idField = new DataSourceTextField("id",
"ID");
+ idField.setPrimaryKey(true);
+
+ DataSourceTextField parentIdField = new DataSourceTextField("parentId",
"Parent ID");
+ parentIdField.setForeignKey("id");
+
+ DataSourceTextField resourceNameField = new DataSourceTextField("name",
"Name");
+
+ DataSourceTextField resourceKeyField = new
DataSourceTextField("plugin", "Plugin");
+
+ DataSourceTextField resourceTypeField = new
DataSourceTextField("category", "Category");
+
+
+ setFields(idField, parentIdField, resourceNameField, resourceKeyField,
resourceTypeField);
+ }
+
+ protected Object transformRequest(DSRequest request) {
+ DSResponse response = new DSResponse();
+ response.setAttribute("clientContext",
request.getAttributeAsObject("clientContext"));
+ // Asume success
+ response.setStatus(0);
+ switch (request.getOperationType()) {
+ case FETCH:
+ executeFetch(request, response);
+ break;
+ default:
+ break;
+ }
+
+ return request.getData();
+ }
+
+
+ protected void executeFetch(final DSRequest request, final DSResponse response) {
+
+ String parentIdString =
request.getCriteria().getAttributeAsString("parentId");
+ if (parentIdString != null) {
+ processResponse(request.getRequestId(), response);
+ } else {
+
+
+ ResourceTypeCriteria criteria = new ResourceTypeCriteria();
+ criteria.fetchParentResourceTypes(true);
+ criteria.setPageControl(PageControl.getUnlimitedInstance());
+
+ resourceTypeService.findResourceTypesByCriteria(criteria,
+ new AsyncCallback<PageList<ResourceType>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to load
resource type tree data", caught);
+ }
+
+ public void onSuccess(PageList<ResourceType> result) {
+ response.setData(buildNodes(result));
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ }
+ }
+
+
+ public static TreeNode[] buildNodes(PageList<ResourceType> result) {
+
+ HashMap<String, PluginTreeNode> pluginNodes = new HashMap<String,
PluginTreeNode>();
+
+ HashSet<TreeNode> nodes = new HashSet<TreeNode>();
+ for (ResourceType type : result) {
+
+ PluginTreeNode pluginNode = pluginNodes.get(type.getPlugin());
+ if (pluginNode == null) {
+ pluginNode = new PluginTreeNode(type.getPlugin());
+ pluginNodes.put(type.getPlugin(), pluginNode);
+ nodes.add(pluginNode);
+ }
+
+
+ if (type.getParentResourceTypes() == null ||
type.getParentResourceTypes().isEmpty()) {
+ nodes.add(new ResourceTypeTreeNode(type, type.getPlugin()));
+ } else {
+ for (ResourceType parent : type.getParentResourceTypes()) {
+ nodes.add(new ResourceTypeTreeNode(type,
String.valueOf(parent.getId())));
+ }
+ }
+ }
+
+ TreeNode[] treeNodes = nodes.toArray(new TreeNode[nodes.size()]);
+ return treeNodes;
+ }
+
+
+ /**
+ * Returns a prepopulated PageControl based on the provided DSRequest. This will set
sort fields,
+ * pagination, but *not* filter fields.
+ *
+ * @param request the request to turn into a page control
+ * @return the page control for passing to criteria and other queries
+ */
+ protected PageControl getPageControl(DSRequest request) {
+ // Initialize paging.
+ PageControl pageControl;
+ if (request.getStartRow() == null || request.getEndRow() == null) {
+ pageControl = new PageControl();
+ } else {
+ pageControl = PageControl.getExplicitPageControl(request.getStartRow(),
request.getEndRow() - request.getStartRow());
+ }
+
+ // Initialize sorting.
+ String sortBy = request.getAttribute("sortBy");
+ if (sortBy != null) {
+ String[] sorts = sortBy.split(",");
+ for (String sort : sorts) {
+ PageOrdering ordering = (sort.startsWith("-")) ?
PageOrdering.DESC : PageOrdering.ASC;
+ String columnName = (ordering == PageOrdering.DESC) ? sort.substring(1) :
sort;
+ pageControl.addDefaultOrderingField(columnName, ordering);
+ }
+ }
+
+ return pageControl;
+ }
+
+
+ public static class PluginTreeNode extends TreeNode {
+
+ String id;
+
+ PluginTreeNode(String pluginName) {
+
+ setID(pluginName);
+ this.id = pluginName;
+ setParentID(null);
+
+ setAttribute("name", pluginName);
+// setAttribute("plugin",pluginName);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ PluginTreeNode that = (PluginTreeNode) o;
+
+ if (!id.equals(that.id)) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+ }
+
+ public static class ResourceTypeTreeNode extends TreeNode {
+
+ private ResourceType resourceType;
+ String id;
+ String parentId;
+
+ private ResourceTypeTreeNode(ResourceType resourceType, String parentId) {
+ this.resourceType = resourceType;
+
+ String id = String.valueOf(resourceType.getId());
+
+ setID(id);
+ this.id = id;
+ setParentID(parentId);
+ this.parentId = parentId;
+
+ setAttribute("id", id);
+ setAttribute("parentId", parentId);
+ setAttribute("name", resourceType.getName());
+ setAttribute("plugin", resourceType.getPlugin());
+ setAttribute("category",
resourceType.getCategory().getDisplayName());
+
+ setIsFolder(true);
+ }
+
+
+ public ResourceType getResourceType() {
+ return resourceType;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ResourceTypeTreeNode that = (ResourceTypeTreeNode) o;
+
+ if (!id.equals(that.id)) return false;
+ if (parentId != null ? !parentId.equals(that.parentId) : that.parentId !=
null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = id.hashCode();
+ result = 31 * result + (parentId != null ? parentId.hashCode() : 0);
+ return result;
+ }
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeView.java
new file mode 100644
index 0000000..5a78a23
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeTreeView.java
@@ -0,0 +1,115 @@
+/*
+ * 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.inventory.resource.type;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Record;
+import com.smartgwt.client.widgets.layout.VLayout;
+import com.smartgwt.client.widgets.tree.TreeGrid;
+import com.smartgwt.client.widgets.tree.TreeGridField;
+import com.smartgwt.client.widgets.tree.TreeNode;
+
+import org.rhq.core.domain.criteria.ResourceTypeCriteria;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.ResourceTypeGWTServiceAsync;
+
+/**
+ * @author Greg Hinkle
+ */
+public class ResourceTypeTreeView extends VLayout {
+
+ private ResourceTypeGWTServiceAsync resourceTypeService =
GWTServiceLookup.getResourceTypeGWTService();
+
+ public ResourceTypeTreeView() {
+ setWidth100();
+ setHeight100();
+ }
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+
+ final TreeGrid treeGrid = new CustomResourceTypeTreeGrid();
+
+ treeGrid.setHeight100();
+
+ treeGrid.setTitle("Resource Types");
+ treeGrid.setAnimateFolders(false);
+ treeGrid.setResizeFieldsInRealTime(true);
+
+
+ final TreeGridField name, plugin, category;
+ name = new TreeGridField("name");
+ plugin = new TreeGridField("plugin");
+ category = new TreeGridField("category");
+
+ treeGrid.setFields(name, plugin, category);
+
+ addMember(treeGrid);
+
+ ResourceTypeCriteria criteria = new ResourceTypeCriteria();
+ criteria.fetchParentResourceTypes(true);
+ criteria.setPageControl(PageControl.getUnlimitedInstance());
+
+ resourceTypeService.findResourceTypesByCriteria(criteria,
+ new AsyncCallback<PageList<ResourceType>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to load
inventory discovery queue", caught);
+ }
+
+ public void onSuccess(PageList<ResourceType> result) {
+
+
treeGrid.getTree().linkNodes(ResourceTypeTreeDataSource.buildNodes(result));
+
+ }
+ });
+ }
+
+
+ public static class CustomResourceTypeTreeGrid extends TreeGrid {
+ @Override
+ protected String getIcon(Record record, boolean defaultState) {
+
+ if (record instanceof TreeNode) {
+ boolean open = getTree().isOpen((TreeNode) record);
+
+ if (record instanceof ResourceTypeTreeDataSource.ResourceTypeTreeNode) {
+ ResourceType resourceType =
((ResourceTypeTreeDataSource.ResourceTypeTreeNode) record).getResourceType();
+
+ switch (resourceType.getCategory()) {
+ case PLATFORM:
+ return "types/Platform_up_16.png";
+ case SERVER:
+ return "types/Server_up_16.png";
+ case SERVICE:
+ return "types/Service_up_16.png";
+ }
+ } else if (record instanceof ResourceTypeTreeDataSource.PluginTreeNode)
{
+ return "types/plugin_16.png";
+ }
+ }
+ return null;
+ }
+ }
+}
commit 2b960960767a03e8f7cbe7c31a6dc7a22d22e7a9
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:14:14 2010 -0400
Summary traits on overview as per jeremy's updated design
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 47a7ab8..f6c31da 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
@@ -45,6 +45,7 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.configura
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.GraphListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.calltime.CallTimeView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.OperationHistoryView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.overview.ResourceOverviewView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import com.google.gwt.user.client.History;
@@ -67,9 +68,6 @@ public class ResourceDetailView extends VLayout implements ViewRenderer,
Resourc
private ResourcePermission permissions;
private ResourceType type;
- private SimpleCollapsiblePanel summaryPanel;
- private ResourceSummaryView summaryView;
-
private TwoLevelTab summaryTab;
private TwoLevelTab monitoringTab;
private TwoLevelTab inventoryTab;
@@ -97,9 +95,6 @@ public class ResourceDetailView extends VLayout implements ViewRenderer,
Resourc
setWidth100();
setHeight100();
- // The header section
- summaryView = new ResourceSummaryView();
- summaryPanel = new SimpleCollapsiblePanel("Summary", summaryView);
// The Tabs section
@@ -142,8 +137,6 @@ public class ResourceDetailView extends VLayout implements
ViewRenderer, Resourc
titleBar = new ResourceTitleBar();
addMember(titleBar);
- addMember(summaryPanel);
-
addMember(topTabSet);
// CoreGUI.addBreadCrumb(getPlace());
@@ -153,16 +146,13 @@ public class ResourceDetailView extends VLayout implements
ViewRenderer, Resourc
this.resource = resource;
- this.summaryView.onResourceSelected(resource);
-
titleBar.setResource(resource);
int selectedTab = topTabSet.getSelectedTabNumber();
- FullHTMLPane summaryPane = new
FullHTMLPane("/rhq/resource/summary/overview-plain.xhtml?id=" +
resource.getId());
FullHTMLPane timelinePane = new
FullHTMLPane("/rhq/resource/summary/timeline-plain.xhtml?id=" +
resource.getId());
- summaryTab.updateSubTab("Overview", summaryPane);
+ summaryTab.updateSubTab("Overview", new
ResourceOverviewView(resource));
summaryTab.updateSubTab("Timeline", timelinePane);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java
deleted file mode 100644
index 58d0d08..0000000
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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.inventory.resource.detail;
-
-import org.rhq.core.domain.measurement.DataType;
-import org.rhq.core.domain.measurement.DisplayType;
-import org.rhq.core.domain.measurement.MeasurementDataTrait;
-import org.rhq.core.domain.measurement.MeasurementDefinition;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
-import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSelectListener;
-import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.util.SC;
-import com.smartgwt.client.widgets.form.DynamicForm;
-import com.smartgwt.client.widgets.form.fields.FormItem;
-import com.smartgwt.client.widgets.form.fields.SpacerItem;
-import com.smartgwt.client.widgets.form.fields.StaticTextItem;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.EnumSet;
-import java.util.List;
-
-/**
- * @author Greg Hinkle
- */
-public class ResourceSummaryView extends DynamicForm implements ResourceSelectListener {
-
- private Resource resource;
-
- @Override
- protected void onDraw() {
- super.onDraw();
-
- setNumCols(4);
- setWrapItemTitles(false);
- setLeft("10%");
- setWidth("80%");
- }
-
-
- public void onResourceSelected(Resource resource) {
-
- this.resource = resource;
-
-
ResourceTypeRepository.Cache.getInstance().getResourceTypes(resource.getResourceType().getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
- new ResourceTypeRepository.TypeLoadedCallback() {
- public void onTypesLoaded(ResourceType type) {
- try {
- buildForm(type);
- loadValues();
- } catch (Exception e) {
- SC.say("Form load failure");
- e.printStackTrace();
- }
- }
- });
-
-
- markForRedraw();
- }
-
- private void loadValues() {
- GWTServiceLookup.getMeasurementDataService().findCurrentTraitsForResource(
- resource.getId(),
- DisplayType.SUMMARY,
- new AsyncCallback<List<MeasurementDataTrait>>() {
- public void onFailure(Throwable caught) {
- SC.say("Failed to load traits");
- CoreGUI.getErrorHandler().handleError("Failed to load traits
information for resource",caught);
- }
-
- public void onSuccess(List<MeasurementDataTrait> result) {
- // TODO: Implement this method.
- for (MeasurementDataTrait trait : result) {
- String formId = trait.getName().replaceAll("\\.",
"_").replaceAll(" ", "__");
- FormItem item = getItem(formId);
-
- if (item != null) {
- setValue(formId, trait.getValue());
- }
- }
- markForRedraw();
- }
- }
- );
-
- }
-
- private void buildForm(ResourceType type) {
- ArrayList<MeasurementDefinition> traits = new
ArrayList<MeasurementDefinition>();
-
- for (MeasurementDefinition measurement : type.getMetricDefinitions()) {
- if (measurement.getDataType() == DataType.TRAIT &&
measurement.getDisplayType() == DisplayType.SUMMARY) {
- traits.add(measurement);
- }
- }
-
- Collections.sort(traits, new Comparator<MeasurementDefinition>() {
- public int compare(MeasurementDefinition o1, MeasurementDefinition o2) {
- return new
Integer(o1.getDisplayOrder()).compareTo(o2.getDisplayOrder());
- }
- });
-
-
- ArrayList<FormItem> formItems = new ArrayList<FormItem>();
- ArrayList<String> itemIds = new ArrayList<String>();
-
-
- StaticTextItem typeItem = new StaticTextItem("typeItem",
"Type");
- typeItem.setTooltip("Plugin: " + type.getPlugin() +
"\n<br>" + "Type: " + type.getName());
- typeItem.setValue(type.getName() + " (" + type.getPlugin() +
")");
- formItems.add(typeItem);
- itemIds.add(typeItem.getName());
-
- StaticTextItem descriptionItem = new StaticTextItem("descriptionItem",
"Description");
- descriptionItem.setValue(resource.getDescription());
- formItems.add(descriptionItem);
- itemIds.add(descriptionItem.getName());
-
-
- StaticTextItem versionItem = new StaticTextItem("versionItem",
"Version");
- formItems.add(versionItem);
- itemIds.add(versionItem.getName());
-
-
- StaticTextItem parentItem = new StaticTextItem("parentItem",
"Parent");
- formItems.add(parentItem);
- itemIds.add(parentItem.getName());
-
-
- for (MeasurementDefinition trait : traits) {
-
- String id = trait.getDisplayName().replaceAll("\\.",
"_").replaceAll(" ", "__");
- itemIds.add(id);
-
- StaticTextItem item = new StaticTextItem(id, trait.getDisplayName());
- item.setTooltip(trait.getDescription());
- formItems.add(item);
-// item.setValue("?");
- }
-
-// SectionItem section = new SectionItem("Summary",
"Summary");
-// section.setTitle("Summary");
-// section.setDefaultValue("Summary");
-// section.setCanCollapse(true);
-// section.setCellStyle("HidablePlainSectionHeader");
-// section.setItemIds(itemIds.toArray(new String[itemIds.size()]));
-// formItems.add(0, section);
-
- formItems.add(new SpacerItem());
- setItems(formItems.toArray(new FormItem[formItems.size()]));
-
-
- setValue("typeItem", type.getName() + " (" + type.getPlugin()
+ ")");
- setValue("descriptionItem", resource.getDescription());
- setValue("versionItem", resource.getVersion());
- setValue("parentItem", resource.getParentResource() == null ? null :
- ("<a href=\"#Resource/" +
resource.getParentResource().getId() + "\">" +
- resource.getParentResource().getName() +
"</a>"));
-
-
- }
-}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceOverviewView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceOverviewView.java
new file mode 100644
index 0000000..3f5cf5f
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceOverviewView.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.inventory.resource.detail.overview;
+
+import com.smartgwt.client.widgets.layout.VLayout;
+
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane;
+import org.rhq.enterprise.gui.coregui.client.components.SimpleCollapsiblePanel;
+
+/**
+ * @author Greg Hinkle
+ */
+public class ResourceOverviewView extends VLayout {
+
+ private Resource resource;
+
+
+ public ResourceOverviewView(Resource resource) {
+ this.resource = resource;
+ }
+
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+ ResourceSummaryView summaryView = new ResourceSummaryView();
+ summaryView.onResourceSelected(resource);
+ SimpleCollapsiblePanel summaryPanel = new
SimpleCollapsiblePanel("Summary", summaryView);
+
+
+ addMember(summaryPanel);
+
+
+ FullHTMLPane summaryPane = new
FullHTMLPane("/rhq/resource/summary/overview-plain.xhtml?id=" +
resource.getId());
+ addMember(summaryPane);
+
+
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceSummaryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceSummaryView.java
new file mode 100644
index 0000000..c2c2560
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/overview/ResourceSummaryView.java
@@ -0,0 +1,186 @@
+/*
+ * 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.inventory.resource.detail.overview;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EnumSet;
+import java.util.List;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.SpacerItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+
+import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.DisplayType;
+import org.rhq.core.domain.measurement.MeasurementDataTrait;
+import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSelectListener;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
+
+/**
+ * @author Greg Hinkle
+ */
+public class ResourceSummaryView extends DynamicForm implements ResourceSelectListener {
+
+ private Resource resource;
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+ setNumCols(4);
+ setWrapItemTitles(false);
+ setLeft("10%");
+ setWidth("80%");
+ }
+
+
+ public void onResourceSelected(Resource resource) {
+
+ this.resource = resource;
+
+
ResourceTypeRepository.Cache.getInstance().getResourceTypes(resource.getResourceType().getId(),
+ EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
+ new ResourceTypeRepository.TypeLoadedCallback() {
+ public void onTypesLoaded(ResourceType type) {
+ try {
+ buildForm(type);
+ loadValues();
+ } catch (Exception e) {
+ SC.say("Form load failure");
+ e.printStackTrace();
+ }
+ }
+ });
+
+
+ markForRedraw();
+ }
+
+ private void loadValues() {
+ GWTServiceLookup.getMeasurementDataService().findCurrentTraitsForResource(
+ resource.getId(),
+ DisplayType.SUMMARY,
+ new AsyncCallback<List<MeasurementDataTrait>>() {
+ public void onFailure(Throwable caught) {
+ SC.say("Failed to load traits");
+ CoreGUI.getErrorHandler().handleError("Failed to load traits
information for resource",caught);
+ }
+
+ public void onSuccess(List<MeasurementDataTrait> result) {
+ // TODO: Implement this method.
+ for (MeasurementDataTrait trait : result) {
+ String formId = trait.getName().replaceAll("\\.",
"_").replaceAll(" ", "__");
+ FormItem item = getItem(formId);
+
+ if (item != null) {
+ setValue(formId, trait.getValue());
+ }
+ }
+ markForRedraw();
+ }
+ }
+ );
+
+ }
+
+ private void buildForm(ResourceType type) {
+ ArrayList<MeasurementDefinition> traits = new
ArrayList<MeasurementDefinition>();
+
+ for (MeasurementDefinition measurement : type.getMetricDefinitions()) {
+ if (measurement.getDataType() == DataType.TRAIT &&
measurement.getDisplayType() == DisplayType.SUMMARY) {
+ traits.add(measurement);
+ }
+ }
+
+ Collections.sort(traits, new Comparator<MeasurementDefinition>() {
+ public int compare(MeasurementDefinition o1, MeasurementDefinition o2) {
+ return new
Integer(o1.getDisplayOrder()).compareTo(o2.getDisplayOrder());
+ }
+ });
+
+
+ ArrayList<FormItem> formItems = new ArrayList<FormItem>();
+ ArrayList<String> itemIds = new ArrayList<String>();
+
+
+ StaticTextItem typeItem = new StaticTextItem("typeItem",
"Type");
+ typeItem.setTooltip("Plugin: " + type.getPlugin() +
"\n<br>" + "Type: " + type.getName());
+ typeItem.setValue(type.getName() + " (" + type.getPlugin() +
")");
+ formItems.add(typeItem);
+ itemIds.add(typeItem.getName());
+
+ StaticTextItem descriptionItem = new StaticTextItem("descriptionItem",
"Description");
+ descriptionItem.setValue(resource.getDescription());
+ formItems.add(descriptionItem);
+ itemIds.add(descriptionItem.getName());
+
+
+ StaticTextItem versionItem = new StaticTextItem("versionItem",
"Version");
+ formItems.add(versionItem);
+ itemIds.add(versionItem.getName());
+
+
+ StaticTextItem parentItem = new StaticTextItem("parentItem",
"Parent");
+ formItems.add(parentItem);
+ itemIds.add(parentItem.getName());
+
+
+ for (MeasurementDefinition trait : traits) {
+
+ String id = trait.getDisplayName().replaceAll("\\.",
"_").replaceAll(" ", "__");
+ itemIds.add(id);
+
+ StaticTextItem item = new StaticTextItem(id, trait.getDisplayName());
+ item.setTooltip(trait.getDescription());
+ formItems.add(item);
+// item.setValue("?");
+ }
+
+// SectionItem section = new SectionItem("Summary",
"Summary");
+// section.setTitle("Summary");
+// section.setDefaultValue("Summary");
+// section.setCanCollapse(true);
+// section.setCellStyle("HidablePlainSectionHeader");
+// section.setItemIds(itemIds.toArray(new String[itemIds.size()]));
+// formItems.add(0, section);
+
+ formItems.add(new SpacerItem());
+ setItems(formItems.toArray(new FormItem[formItems.size()]));
+
+
+ setValue("typeItem", type.getName() + " (" + type.getPlugin()
+ ")");
+ setValue("descriptionItem", resource.getDescription());
+ setValue("versionItem", resource.getVersion());
+ setValue("parentItem", resource.getParentResource() == null ? null :
+ ("<a href=\"#Resource/" +
resource.getParentResource().getId() + "\">" +
+ resource.getParentResource().getName() +
"</a>"));
+
+
+ }
+}
commit 380b61e9546f636950bd8e4458e50055cd8fd9fd
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:13:42 2010 -0400
Dashboard demo work. summary and discovery queue added
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 560935b..35c75be 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
@@ -29,21 +29,25 @@ import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.layout.LayoutSpacer;
import com.smartgwt.client.widgets.layout.VLayout;
+
import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.RecentlyAddedView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.SmallGraphView;
+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.inventory.summary.SummaryCountsView;
/**
* @author Greg Hinkle
*/
public class DashboardView extends VLayout {
- private static String[] colors = new String[]{
- "FF6600", "808000", "008000",
"008080", "0000FF", "666699",
- "FF0000", "FF9900", "99CC00",
"339966", "33CCCC", "3366FF",
- "800080", "969696", "FF00FF",
"FFCC00", "FFFF00", "00FF00",
- "00FFFF", "00CCFF", "993366",
"C0C0C0", "FF99CC", "FFCC99",
- "FFFF99", "CCFFCC", "CCFFFF",
"99CCFF", "CC99FF", "FFFFFF"
- };
+ private static String[] colors = new String[]{
+ "FF6600", "808000", "008000",
"008080", "0000FF", "666699",
+ "FF0000", "FF9900", "99CC00",
"339966", "33CCCC", "3366FF",
+ "800080", "969696", "FF00FF",
"FFCC00", "FFFF00", "00FF00",
+ "00FFFF", "00CCFF", "993366",
"C0C0C0", "FF99CC", "FFCC99",
+ "FFFF99", "CCFFCC", "CCFFFF",
"99CCFF", "CC99FF", "FFFFFF"
+ };
public DashboardView() {
setOverflow(Overflow.AUTO);
@@ -55,10 +59,25 @@ public class DashboardView extends VLayout {
setHeight100();
- final PortalLayout portalLayout = new PortalLayout(3);
+ final PortalLayout portalLayout = new PortalLayout(2);
portalLayout.setWidth100();
portalLayout.setHeight100();
+
+ Portlet summaryPortlet = new Portlet();
+ summaryPortlet.setTitle("Inventory Summary");
+ summaryPortlet.addItem(new SummaryCountsView());
+ summaryPortlet.setHeight(300);
+ portalLayout.addPortlet(summaryPortlet);
+
+
+ Portlet adPortlet = new Portlet();
+ adPortlet.setTitle("Auto Discovery Queue");
+ adPortlet.addItem(new ResourceAutodiscoveryView(true));
+ adPortlet.setHeight(250);
+ portalLayout.addPortlet(adPortlet);
+
+
// create portlets...
for (int i = 1; i <= 2; i++) {
Portlet portlet = new Portlet();
@@ -69,7 +88,7 @@ public class DashboardView extends VLayout {
// label.setLayoutAlign(VerticalAlignment.CENTER);
// label.setContents("Portlet contents");
// label.setBackgroundColor(colors[Random.nextInt(colors.length - 1)]);
-
+
portlet.addItem(new SmallGraphView());
portlet.setHeight(400);
portalLayout.addPortlet(portlet);
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 a1932b8..1720962 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
@@ -27,7 +27,11 @@ public class PortalLayout extends HLayout {
public PortalLayout(int numColumns) {
setMembersMargin(6);
for (int i = 0; i < numColumns; i++) {
- addMember(new PortalColumn());
+ PortalColumn column = new PortalColumn();
+ if (i == 0) {
+ column.setWidth("30%");
+ }
+ addMember(column);
}
}
commit 8026166c76593ca6f5a6bc83e59d6766b338ad0c
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:13:17 2010 -0400
Autodiscovery queue. tree view. import, ignore, unignore buttons
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGWTService.java
index 5a5e0d4..9fcb5cc 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGWTService.java
@@ -21,13 +21,18 @@ package org.rhq.enterprise.gui.coregui.client.gwt;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.criteria.ResourceCriteria;
+import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.RecentlyAddedResourceComposite;
+import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import com.google.gwt.user.client.rpc.RemoteService;
+import java.util.EnumSet;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
/**
* @author Greg Hinkle
@@ -48,4 +53,11 @@ public interface ResourceGWTService extends RemoteService {
void createResource(int parentResourceId, int newResourceTypeId, String
newResourceName, Configuration newResourceConfiguration);
+ Map<Resource, List<Resource>>
getQueuedPlatformsAndServers(HashSet<InventoryStatus> statuses, PageControl pc);
+
+ void importResources(Integer[] resourceIds);
+
+ void ignoreResources(Integer[] resourceIds);
+
+ void unignoreResources(Integer[] resourceIds);
}
\ No newline at end of file
commit 5691f3427c38620b78172f20d6381db5324429eb
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:12:50 2010 -0400
Autodiscovery queue. tree view. import, ignore, unignore buttons
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
index bf580ed..ff6f3ee 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
@@ -27,6 +27,7 @@ import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.admin.roles.RolesView;
import org.rhq.enterprise.gui.coregui.client.admin.users.UsersView;
import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.ResourceAutodiscoveryView;
import com.smartgwt.client.types.VisibilityMode;
import com.smartgwt.client.widgets.Canvas;
@@ -112,11 +113,11 @@ public class AdministrationView extends HLayout implements
ViewRenderer {
Tree tree = new Tree();
final TreeNode manageUsersNode = new TreeNode("Manage Users");
final TreeNode manageRolesNode = new TreeNode("Manage Roles");
- final TreeNode manageGroups = new TreeNode("Resource Groups");
+ final TreeNode discoveryQueue = new TreeNode("Auto Discovery Queue");
tree.setRoot(new TreeNode("security",
manageUsersNode,
manageRolesNode,
- manageGroups));
+ discoveryQueue));
securityTreeGrid.setData(tree);
@@ -128,8 +129,8 @@ public class AdministrationView extends HLayout implements
ViewRenderer {
content = new UsersView();
} else if (selectionEvent.getRecord() == manageRolesNode) {
content = new RolesView();
- } else if (selectionEvent.getRecord() == manageGroups) {
- content = new RolesView();
+ } else if (selectionEvent.getRecord() == discoveryQueue) {
+ content = new ResourceAutodiscoveryView();
} else {
throw new IllegalStateException("Unknown record selected:
" + selectionEvent.getRecord());
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/AutodiscoveryQueueDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/AutodiscoveryQueueDataSource.java
new file mode 100644
index 0000000..01a5ad3
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/AutodiscoveryQueueDataSource.java
@@ -0,0 +1,221 @@
+/*
+ * 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.inventory.resource.discovery;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.data.DataSource;
+import com.smartgwt.client.data.fields.DataSourceTextField;
+import com.smartgwt.client.types.DSDataFormat;
+import com.smartgwt.client.types.DSProtocol;
+import com.smartgwt.client.widgets.tree.TreeNode;
+
+import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageOrdering;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
+
+/**
+ * @author Greg Hinkle
+ */
+public class AutodiscoveryQueueDataSource extends DataSource {
+
+
+ private ResourceGWTServiceAsync resourceService =
GWTServiceLookup.getResourceService();
+
+ public AutodiscoveryQueueDataSource() {
+ setClientOnly(false);
+ setDataProtocol(DSProtocol.CLIENTCUSTOM);
+ setDataFormat(DSDataFormat.CUSTOM);
+
+
+ DataSourceTextField idField = new DataSourceTextField("id",
"ID");
+ idField.setPrimaryKey(true);
+
+ DataSourceTextField parentIdField = new DataSourceTextField("parentId",
"Parent ID");
+ parentIdField.setForeignKey("id");
+
+ DataSourceTextField resourceNameField = new DataSourceTextField("name",
"Resource Name");
+
+ DataSourceTextField resourceKeyField = new
DataSourceTextField("resourceKey", "Resource Key");
+
+ DataSourceTextField resourceTypeField = new
DataSourceTextField("typeName", "Type");
+
+ DataSourceTextField descriptionField = new
DataSourceTextField("description", "Description");
+
+ DataSourceTextField timestampField = new DataSourceTextField("ctime",
"Discovery Time");
+
+ DataSourceTextField statusField = new DataSourceTextField("status",
"Inventory Status");
+
+ setFields(idField, parentIdField, resourceNameField, resourceKeyField,
resourceTypeField, descriptionField, statusField, timestampField);
+ }
+
+ protected Object transformRequest(DSRequest request) {
+ DSResponse response = new DSResponse();
+ response.setAttribute("clientContext",
request.getAttributeAsObject("clientContext"));
+ // Asume success
+ response.setStatus(0);
+ switch (request.getOperationType()) {
+ case FETCH:
+ executeFetch(request, response);
+ break;
+ default:
+ break;
+ }
+
+ return request.getData();
+ }
+
+
+ protected void executeFetch(final DSRequest request, final DSResponse response) {
+ PageControl pc = getPageControl(request);
+
+ HashSet<InventoryStatus> statuses = new HashSet<InventoryStatus>();
+
+ String statusesString =
request.getCriteria().getAttributeAsString("statuses");
+ if (statusesString != null) {
+ if ("New".equals(statusesString)) {
+ statuses.add(InventoryStatus.NEW);
+ } else if ("Ignored".equals(statusesString)) {
+ statuses.add(InventoryStatus.IGNORED);
+ } else {
+ statuses.add(InventoryStatus.NEW);
+ statuses.add(InventoryStatus.IGNORED);
+ }
+ } else {
+ statuses.add(InventoryStatus.NEW);
+ }
+
+
+ resourceService.getQueuedPlatformsAndServers(statuses, pc,
+ new AsyncCallback<Map<Resource, List<Resource>>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to load
inventory discovery queue", caught);
+ }
+
+ public void onSuccess(Map<Resource, List<Resource>>
result) {
+ response.setData(buildNodes(result));
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ }
+
+
+ private TreeNode[] buildNodes(Map<Resource, List<Resource>> result) {
+
+ ArrayList<ResourceTreeNode> nodes = new
ArrayList<ResourceTreeNode>();
+ for (Resource platform : result.keySet()) {
+ nodes.add(new ResourceTreeNode(platform));
+
+ for (Resource child : result.get(platform)) {
+ ResourceTreeNode childNode = new ResourceTreeNode(child);
+ childNode.setIsFolder(false);
+ nodes.add(childNode);
+ }
+ }
+
+ TreeNode[] treeNodes = nodes.toArray(new TreeNode[nodes.size()]);
+ return treeNodes;
+ }
+
+
+ /**
+ * Returns a prepopulated PageControl based on the provided DSRequest. This will set
sort fields,
+ * pagination, but *not* filter fields.
+ *
+ * @param request the request to turn into a page control
+ * @return the page control for passing to criteria and other queries
+ */
+ protected PageControl getPageControl(DSRequest request) {
+ // Initialize paging.
+ PageControl pageControl;
+ if (request.getStartRow() == null || request.getEndRow() == null) {
+ pageControl = new PageControl();
+ } else {
+ pageControl = PageControl.getExplicitPageControl(request.getStartRow(),
request.getEndRow() - request.getStartRow());
+ }
+
+ // Initialize sorting.
+ String sortBy = request.getAttribute("sortBy");
+ if (sortBy != null) {
+ String[] sorts = sortBy.split(",");
+ for (String sort : sorts) {
+ PageOrdering ordering = (sort.startsWith("-")) ?
PageOrdering.DESC : PageOrdering.ASC;
+ String columnName = (ordering == PageOrdering.DESC) ? sort.substring(1) :
sort;
+ pageControl.addDefaultOrderingField(columnName, ordering);
+ }
+ }
+
+ return pageControl;
+ }
+
+
+ public static class ResourceTreeNode extends TreeNode {
+
+ private Resource resource;
+
+ private ResourceTreeNode(Resource resource) {
+ this.resource = resource;
+
+ String id = String.valueOf(resource.getId());
+ String parentId = resource.getParentResource() == null ? null
+ : String.valueOf((resource.getParentResource().getId()));
+
+ setID(id);
+ setParentID(parentId);
+
+ setAttribute("id", id);
+ setAttribute("parentId", parentId);
+ setAttribute("name", resource.getName());
+ setAttribute("typeName", resource.getResourceType().getName());
+ setAttribute("resourceKey", resource.getResourceKey());
+ setAttribute("description", resource.getDescription());
+ setAttribute("ctime", new Date(resource.getCtime()));
+ setAttribute("status", resource.getInventoryStatus().name());
+ }
+
+ public Resource getResource() {
+ return resource;
+ }
+
+ public void setResource(Resource resource) {
+ this.resource = resource;
+ }
+
+ public ResourceType getResourceType() {
+ return resource.getResourceType();
+ }
+
+ public String getParentId() {
+ return getAttribute("parentId");
+ }
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
new file mode 100644
index 0000000..6ef0606
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
@@ -0,0 +1,229 @@
+/*
+ * 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.inventory.resource.discovery;
+
+import java.util.ArrayList;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Criteria;
+import com.smartgwt.client.types.SelectionAppearance;
+import com.smartgwt.client.widgets.HTMLFlow;
+import com.smartgwt.client.widgets.IButton;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
+import com.smartgwt.client.widgets.grid.events.SelectionEvent;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
+import com.smartgwt.client.widgets.toolbar.ToolStrip;
+import com.smartgwt.client.widgets.tree.TreeGrid;
+import com.smartgwt.client.widgets.tree.TreeGridField;
+
+import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+
+/**
+ * @author Greg Hinkle
+ */
+public class ResourceAutodiscoveryView extends VLayout {
+
+ private boolean simple = false;
+ private TreeGrid treeGrid;
+ private ToolStrip footer;
+
+ private ResourceGWTServiceAsync resourceService =
GWTServiceLookup.getResourceService();
+
+
+ public ResourceAutodiscoveryView() {
+ setWidth100();
+ setHeight100();
+ }
+
+ public ResourceAutodiscoveryView(boolean simple) {
+ this();
+ this.simple = simple;
+ }
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+
+ HLayout titleLayout = new HLayout(150);
+
+ HTMLFlow title = new HTMLFlow();
+ title.setWidth100();
+ title.setHeight(35);
+ title.setContents("Auto Discovery Queue");
+ title.setPadding(4);
+ title.setStyleName("HeaderLabel");
+ titleLayout.addMember(title);
+
+
+ DynamicForm form = new DynamicForm();
+ final SelectItem statusSelectItem = new SelectItem("statuses",
"Displayed Statuses");
+ statusSelectItem.setValueMap("New", "Ignored", "New and
Ignored");
+ statusSelectItem.setValue("New");
+ form.setItems(statusSelectItem);
+ if (!simple)
+ titleLayout.addMember(form);
+
+
+ addMember(titleLayout);
+
+ treeGrid = new TreeGrid();
+
+ treeGrid.setHeight100();
+
+ treeGrid.setDataSource(new AutodiscoveryQueueDataSource());
+ treeGrid.setAutoFetchData(true);
+ treeGrid.setTitle("Auto Discovery Queue");
+ treeGrid.setResizeFieldsInRealTime(true);
+
+ final TreeGridField name, key, type, description, status, ctime;
+ name = new TreeGridField("name");
+ key = new TreeGridField("resourceKey");
+ type = new TreeGridField("typeName");
+ description = new TreeGridField("description");
+ status = new TreeGridField("status");
+ ctime = new TreeGridField("ctime");
+
+ if (!simple) {
+ treeGrid.setFields(name, key, type, description, status, ctime);
+ } else {
+ treeGrid.setFields(name, key, type, status);
+ }
+
+ treeGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
+ treeGrid.setShowSelectedStyle(false);
+ treeGrid.setShowPartialSelection(true);
+ treeGrid.setCascadeSelection(true);
+
+
+ addMember(treeGrid);
+
+ footer = new ToolStrip();
+ footer.setPadding(5);
+ footer.setWidth100();
+ footer.setMembersMargin(15);
+
+ addMember(footer);
+
+
+ final IButton importButton = new IButton("Import");
+ final IButton ignoreButton = new IButton("Ignore");
+ final IButton unignoreButton = new IButton("Unignore");
+
+
+ footer.addMember(importButton);
+ footer.addMember(ignoreButton);
+ footer.addMember(unignoreButton);
+
+
+ importButton.setDisabled(true);
+ ignoreButton.setDisabled(true);
+ unignoreButton.setDisabled(true);
+
+ treeGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
+ public void onSelectionChanged(SelectionEvent selectionEvent) {
+ boolean noneSelected = treeGrid.getSelection().length == 0;
+ importButton.setDisabled(noneSelected);
+ ignoreButton.setDisabled(noneSelected);
+ unignoreButton.setDisabled(noneSelected);
+ }
+ });
+
+
+ importButton.addClickHandler(
+ new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ resourceService.importResources(getSelectedIds(), new
AsyncCallback<Void>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to
import resources", caught);
+ }
+
+ public void onSuccess(Void result) {
+ CoreGUI.getMessageCenter().notify(new
Message("Successfully imported the selected resources",
Message.Severity.Info));
+ treeGrid.invalidateCache();
+ }
+ });
+ }
+ }
+ );
+
+
+ ignoreButton.addClickHandler(
+ new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ resourceService.ignoreResources(getSelectedIds(), new
AsyncCallback<Void>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to
ignore resources", caught);
+ }
+
+ public void onSuccess(Void result) {
+ CoreGUI.getMessageCenter().notify(new
Message("Successfully ignored the selected resources", Message.Severity.Info));
+ treeGrid.invalidateCache();
+ }
+ });
+ }
+ }
+ );
+
+ unignoreButton.addClickHandler(
+ new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ resourceService.unignoreResources(getSelectedIds(), new
AsyncCallback<Void>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to
unignore resources", caught);
+ }
+
+ public void onSuccess(Void result) {
+ CoreGUI.getMessageCenter().notify(new
Message("Successfully unignored the selected resources",
Message.Severity.Info));
+ treeGrid.invalidateCache();
+ }
+ });
+ }
+ }
+ );
+
+ statusSelectItem.addChangedHandler(new ChangedHandler() {
+ public void onChanged(ChangedEvent changedEvent) {
+ treeGrid.fetchData(new Criteria("statuses", (String)
statusSelectItem.getValue()));
+ }
+ });
+ }
+
+ private Integer[] getSelectedIds() {
+ ArrayList<Integer> selected = new ArrayList<Integer>();
+ for (ListGridRecord node : treeGrid.getSelection()) {
+ if
(!InventoryStatus.COMMITTED.name().equals(node.getAttributeAsString("status")))
{
+
selected.add(Integer.parseInt(node.getAttributeAsString("id")));
+ }
+ }
+ return selected.toArray(new Integer[selected.size()]);
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
index 484b434..3434a67 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
@@ -18,16 +18,20 @@
*/
package org.rhq.enterprise.gui.coregui.server.gwt;
+import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.RawConfiguration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
import org.rhq.core.domain.criteria.ResourceCriteria;
+import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.RecentlyAddedResourceComposite;
+import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTService;
import org.rhq.enterprise.gui.coregui.server.util.SerialUtility;
+import org.rhq.enterprise.server.discovery.DiscoveryBossLocal;
import org.rhq.enterprise.server.resource.ResourceFactoryManagerLocal;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -37,8 +41,10 @@ import javax.servlet.ServletException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -48,7 +54,7 @@ public class ResourceGWTServiceImpl extends AbstractGWTServiceImpl
implements Re
private ResourceManagerLocal resourceManager = LookupUtil.getResourceManager();
private ResourceFactoryManagerLocal resourceFactoryManager =
LookupUtil.getResourceFactoryManager();
-
+ private DiscoveryBossLocal discoveryBoss = LookupUtil.getDiscoveryBoss();
private static String[] importantFields = {
"serialVersionUID",
@@ -178,4 +184,27 @@ public class ResourceGWTServiceImpl extends AbstractGWTServiceImpl
implements Re
}
+
+ public Map<Resource, List<Resource>>
getQueuedPlatformsAndServers(HashSet<InventoryStatus> statuses, PageControl pc) {
+ return SerialUtility.prepare(
+ discoveryBoss.getQueuedPlatformsAndServers(
+ getSessionSubject(),
+ EnumSet.copyOf(statuses),
+ pc),
+ "ResoruceService.getQueuedPlatformsAndServers");
+ }
+
+ public void importResources(Integer[] resourceIds) {
+ discoveryBoss.importResources(getSessionSubject(), resourceIds);
+ }
+
+ public void ignoreResources(Integer[] resourceIds) {
+ discoveryBoss.ignoreResources(getSessionSubject(), resourceIds);
+ }
+
+ public void unignoreResources(Integer[] resourceIds) {
+ discoveryBoss.unignoreResources(getSessionSubject(), resourceIds);
+ }
+
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
index 0597c7a..8864505 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
@@ -164,28 +164,31 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
return syncInfo;
}
+
@RequiredPermission(Permission.MANAGE_INVENTORY)
public Map<Resource, List<Resource>> getQueuedPlatformsAndServers(Subject
user, PageControl pc) {
+ return getQueuedPlatformsAndServers(user, EnumSet.of(InventoryStatus.NEW), pc);
+ }
+
+ @RequiredPermission(Permission.MANAGE_INVENTORY)
+ public Map<Resource, List<Resource>> getQueuedPlatformsAndServers(Subject
user, EnumSet<InventoryStatus> statuses, PageControl pc) {
// pc.initDefaultOrderingField("res.ctime", PageOrdering.DESC); // this
is set in getQueuedPlatforms,
// maps a platform to a list of child servers
Map<Resource, List<Resource>> queuedResources = new
HashMap<Resource, List<Resource>>();
- List<Resource> queuedPlatforms = getQueuedPlatforms(user,
EnumSet.of(InventoryStatus.NEW), pc);
+ List<Resource> queuedPlatforms = getQueuedPlatforms(user, statuses, pc);
for (Resource platform : queuedPlatforms) {
- List<Resource> queuedServers = getQueuedPlatformChildServers(user,
InventoryStatus.NEW, platform);
-
- ArrayList<Resource> servers = new ArrayList<Resource>();
- for (Resource server : queuedServers) {
- servers.add(server);
+ List<Resource> queuedServers = new ArrayList<Resource>();
+ for (InventoryStatus status : statuses) {
+ queuedServers.addAll(getQueuedPlatformChildServers(user, status,
platform));
}
-
- queuedResources.put(platform, servers);
+ queuedResources.put(platform, queuedServers);
}
-
return queuedResources;
}
+
@RequiredPermission(Permission.MANAGE_INVENTORY)
@SuppressWarnings("unchecked")
public PageList<Resource> getQueuedPlatforms(Subject user,
EnumSet<InventoryStatus> statuses, PageControl pc) {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossLocal.java
index ad85062..c29833f 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossLocal.java
@@ -71,6 +71,16 @@ public interface DiscoveryBossLocal {
*/
Map<Resource, List<Resource>> getQueuedPlatformsAndServers(Subject user,
PageControl pc);
+
+ /**
+ * Like the above method, but can find ignored, commited or both
+ * @param user
+ * @param statuses
+ * @param pc
+ * @return
+ */
+ Map<Resource, List<Resource>> getQueuedPlatformsAndServers(Subject user,
EnumSet<InventoryStatus> statuses, PageControl pc);
+
/**
* This returns all platform resources that either have the given status themselves
or one or more of their child
* servers have that status. Use this to find those platforms that need to be shown
in the auto-discovery pages
commit 7bd4d3a695ec940ec69d7c363573249f0d890f56
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Wed Mar 24 12:11:42 2010 -0400
Support for filtering resource list by resourceTypeId
Fixed bug in criteria resourceTypeId should be int, not string
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceCriteria.java
index e5534dc..69be135 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceCriteria.java
@@ -50,7 +50,7 @@ public class ResourceCriteria extends Criteria {
private InventoryStatus filterInventoryStatus = InventoryStatus.COMMITTED; //
default
private String filterVersion;
private String filterDescription;
- private String filterResourceTypeId; // needs overrides
+ private Integer filterResourceTypeId; // needs overrides
private String filterResourceTypeName; // needs overrides
private ResourceCategory filterResourceCategory; // needs overrides
private String filterPluginName; // needs overrides
@@ -146,7 +146,7 @@ public class ResourceCriteria extends Criteria {
this.filterDescription = filterDescription;
}
- public void addFilterResourceTypeId(String filterResourceTypeId) {
+ public void addFilterResourceTypeId(Integer filterResourceTypeId) {
this.filterResourceTypeId = filterResourceTypeId;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
index 89bee8b..d465cb8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
@@ -53,6 +53,10 @@ public class ResourceDatasource extends RPCDataSource<Resource>
{
DataSourceField idDataField = new DataSourceIntegerField("id",
"ID", 20);
idDataField.setPrimaryKey(true);
+
+ DataSourceImageField iconField = new DataSourceImageField("icon");
+ iconField.setImageURLPrefix("types/");
+
DataSourceTextField nameDataField = new DataSourceTextField("name",
"Name", 200);
nameDataField.setCanEdit(false);
@@ -67,7 +71,7 @@ public class ResourceDatasource extends RPCDataSource<Resource> {
availabilityDataField.setCanEdit(false);
- setFields(idDataField, nameDataField, descriptionDataField, typeNameDataField,
pluginNameDataField,
+ setFields(idDataField, iconField, nameDataField, descriptionDataField,
typeNameDataField, pluginNameDataField,
categoryDataField, availabilityDataField);
}
@@ -104,6 +108,10 @@ public class ResourceDatasource extends RPCDataSource<Resource>
{
.get("availability")).toUpperCase()));
}
+ if (request.getCriteria().getValues().get("type") != null) {
+
criteria.addFilterResourceTypeId(Integer.parseInt(((String)request.getCriteria().getValues().get("type"))));
+ }
+
resourceService.findResourcesByCriteria(criteria, new
AsyncCallback<PageList<Resource>>() {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError("Failed to fetch resource
data", caught);
@@ -138,6 +146,9 @@ public class ResourceDatasource extends RPCDataSource<Resource>
{
record.setAttribute("typeName", from.getResourceType().getName());
record.setAttribute("pluginName", from.getResourceType().getPlugin());
record.setAttribute("category",
from.getResourceType().getCategory().getDisplayName());
+ record.setAttribute("icon",
from.getResourceType().getCategory().getDisplayName() + "_" +
+ (from.getCurrentAvailability().getAvailabilityType() ==
AvailabilityType.UP ? "up" : "down") + "_16.png");
+
record
.setAttribute(
commit 5eef84472eb5d226fd99af92f48ed38240b51ed2
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Mon Mar 22 16:17:14 2010 -0400
Cleanup experiment with embedding gwt in jsf
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/discovery/queue.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/discovery/queue.xhtml
index c283940..0025417 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/discovery/queue.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/discovery/queue.xhtml
@@ -28,10 +28,6 @@
</ui:define>
<ui:define name="body">
-
-
- <iframe src="/coregui/CoreGUI.html"></iframe>
-
<script language="JavaScript" type="text/javascript">
commit 71e1218efc9e0c4d0928a01a526650125853811f
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Sat Mar 20 18:38:57 2010 -0400
cleanup menu more
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
index 0990111..caf4ffb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
@@ -43,7 +43,7 @@ public class MenuBarView extends VLayout {
private String selected = "Dashboard";
- HTMLFlow linksPane;
+ private HTMLFlow linksPane;
public MenuBarView() {
super(5);
@@ -135,23 +135,21 @@ public class MenuBarView extends VLayout {
boolean first = true;
for (String section : SECTIONS) {
if (first) {
- headerString.append("<td style=\"width:
1px;\"><img
src=\"http://localhost:7080/coregui/images/header/header_bg_line.png\"/></td>");
+ headerString.append("<td style=\"width:
1px;\"><img
src=\"images/header/header_bg_line.png\"/></td>");
}
first = false;
- String bg = "";
String styleClass = "TopSectionLink";
if (section.equals(selected)) {
- bg = " background-image:
url('http://localhost:7080/coregui/images/header/header_bg_selected.png');";
styleClass += "Selected";
}
- headerString.append("<td style=\"vertical-align: bottom;
padding:5px; padding-left: 15px; padding-right: 15px;" + bg +
"\"onclick=\"document.location='#" + section + "'\"
>");
- headerString.append("<a class=\"" + styleClass +
"\" href=\"#" + section + "\">" + section +
"</a>");
+ headerString.append("<td class=\"" + styleClass +
"\" onclick=\"document.location='#" + section + "'\"
>");
+ headerString.append(section);
headerString.append("</td>\n");
- headerString.append("<td style=\"width: 1px;\"><img
src=\"http://localhost:7080/coregui/images/header/header_bg_line.png\"/></td>");
+ headerString.append("<td style=\"width: 1px;\"><img
src=\"images/header/header_bg_line.png\"/></td>");
}
headerString.append("</tr></table>");
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
index dcd511f..63c2089 100644
--- a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
+++ b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
@@ -96,17 +96,21 @@ a:hover {
}
-A.TopSectionLink {
+.TopSectionLink, .topsectionlinkselected {
+ vertical-align: bottom;
+ padding:5px;
+ padding-left: 15px;
+ padding-right: 15px;
+
+ cursor: pointer;
font-size: 10pt;
font-weight: bold;
text-decoration: none;
- color: black;
+ color: #4A5D75;
}
-A.TopSectionLinkSelected {
- font-size: 10pt;
- font-weight: bold;
- text-decoration: none;
+.TopSectionLinkSelected {
+ background-image: url('images/header/header_bg_selected.png');
color: white;
}