modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java | 1 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/FavoritesMenu.java | 112 ++++++++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/GWTMenuBarView.java | 27 ++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java | 16 + modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java | 7 5 files changed, 162 insertions(+), 1 deletion(-)
New commits: commit 5bdb6fe17d3a1ccea92377c4961bec9f426734b4 Author: Greg Hinkle ghinkle@redhat.com Date: Fri May 28 16:46:40 2010 -0400
favorites menu in menubar
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 9231cbc..b6c9cd4 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 @@ -123,6 +123,7 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String> { SubjectCriteria criteria = new SubjectCriteria(); criteria.fetchConfiguration(true); criteria.addFilterId(subjectId); + criteria.fetchRoles(true);
GWTServiceLookup.getSubjectService().findSubjectsByCriteria(criteria, new AsyncCallback<PageList<Subject>>() { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/FavoritesMenu.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/FavoritesMenu.java new file mode 100644 index 0000000..a13e705 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/FavoritesMenu.java @@ -0,0 +1,112 @@ +/* + * 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, version 2, as + * published by the Free Software Foundation, and/or the GNU Lesser + * General Public License, version 2.1, also as published by the Free + * Software Foundation. + * + * 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 and the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * and the GNU Lesser General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.rhq.enterprise.gui.coregui.client.menu; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import com.google.gwt.user.client.History; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.widgets.menu.Menu; +import com.smartgwt.client.widgets.menu.MenuItem; +import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent; + +import org.rhq.core.domain.criteria.ResourceCriteria; +import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.gui.coregui.client.CoreGUI; +import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; + + +/** + * @author Greg Hinkle + */ +public class FavoritesMenu extends MenuItem { + + private Menu submenu; + + public FavoritesMenu() { + super(); + setTitle("Favorites"); + + submenu = new Menu(); + setSubmenu(submenu); + + } + + public void refresh() { + Set<Integer> favorites = CoreGUI.getUserPreferences().getFavoriteResources(); + + if (!favorites.isEmpty()) { + + Integer[] resourceIds = new Integer[favorites.size()]; + final MenuItem[] items = new MenuItem[favorites.size()]; + final Map<Integer, MenuItem> idToMenuItemMap = new HashMap<Integer, MenuItem>(favorites.size()); + int i = 0; + for (final Integer resourceId : favorites) { + resourceIds[i] = resourceId; + MenuItem item = new MenuItem(String.valueOf(resourceId)); + item.addClickHandler(new com.smartgwt.client.widgets.menu.events.ClickHandler() { + public void onClick(MenuItemClickEvent event) { + History.newItem("Resource/" + resourceId); + } + }); + items[i] = item; + idToMenuItemMap.put(resourceId, item); + i++; + } + + ResourceCriteria criteria = new ResourceCriteria(); + criteria.addFilterIds(resourceIds); + GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria, + new AsyncCallback<PageList<Resource>>() { + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to load favorite Resources.", caught); + } + + public void onSuccess(PageList<Resource> resources) { + for (Resource resource : resources) { + MenuItem item = idToMenuItemMap.get(resource.getId()); + // TODO: Ideally, we should use ResourceManagerLocal.disambiguate() here to obtain + // disambiguated Resource names. + item.setTitle(resource.getName()); + + String category = resource.getResourceType().getCategory().getDisplayName(); + + String avail = (resource.getCurrentAvailability() != null && resource.getCurrentAvailability().getAvailabilityType() != null) + ? (resource.getCurrentAvailability().getAvailabilityType().name().toLowerCase()) : "down"; + item.setIcon("types/" + category + "_" + avail + "_16.png"); + } + submenu.setItems(items); + } + }); + } + + + } + + +} + + diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/GWTMenuBarView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/GWTMenuBarView.java index b4723e5..0c88b06 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/GWTMenuBarView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/GWTMenuBarView.java @@ -156,4 +156,31 @@ public class GWTMenuBarView extends VLayout { addMember(menu); }
+ private String setupLinks() { + StringBuilder headerString = new StringBuilder( + "<table style="height: 34px;" cellpadding="0" cellspacing="0"><tr>"); + + boolean first = true; + for (String section : SECTIONS) { + if (first) { + headerString.append("<td style="width: 1px;"><img src="images/header/header_bg_line.png"/></td>"); + } + first = false; + + String styleClass = "TopSectionLink"; + if (section.equals(selected)) { + styleClass += "Selected"; + } + + headerString.append("<td class="" + styleClass + "" onclick="document.location='#" + section + "'" >"); + headerString.append(section); + headerString.append("</td>\n"); + + headerString.append("<td style="width: 1px;"><img src="images/header/header_bg_line.png"/></td>"); + } + + headerString.append("</tr></table>"); + + return headerString.toString(); + } } \ No newline at end of file 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 9f9995a..bcc4236 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 @@ -32,6 +32,10 @@ import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.events.DrawEvent; +import com.smartgwt.client.widgets.events.DrawHandler; +import com.smartgwt.client.widgets.events.ShowContextMenuEvent; +import com.smartgwt.client.widgets.events.ShowContextMenuHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.LayoutSpacer; import com.smartgwt.client.widgets.layout.VLayout; @@ -115,6 +119,8 @@ public class MenuBarView extends VLayout { final MenuBar menu = new MenuBar(); menu.setHeight(28);
+ + Menu subsystemsMenu = new Menu();
subsystemsMenu.setTitle("Subsystems"); @@ -146,7 +152,15 @@ public class MenuBarView extends VLayout { resourcesMenu.addItem(new EMenuItem("Servers", LinkManager.getHubServerssLink(), "types/Server_up_16.png"));//, new LinkCommand("#fsdf")); resourcesMenu.addItem(new EMenuItem("Services", LinkManager.getHubServicesLink(), "types/Service_up_16.png"));//, new LinkCommand("#fsdf")); resourcesMenu.addItem(new MenuItemSeparator()); -// resourcesMenu.addItem(new MenuItem("Favorite Resources"));//,) + + final FavoritesMenu favoritesMenu = new FavoritesMenu(); + resourcesMenu.addItem(favoritesMenu); + menu.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent clickEvent) { + System.out.println("over here"); + favoritesMenu.refresh(); + } + });
Menu groupsMenu = new Menu(); groupsMenu.setStyleName("menuBarMenuButton");
commit 317d6c26c8b69426e170eaace875f9fee55d7627 Author: Greg Hinkle ghinkle@redhat.com Date: Fri May 28 16:45:35 2010 -0400
Avoid updating the subject role mappings when SubjectManager.updateSubject is called (Fixes loss of role mappings on gwt land preference save)
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java index 10b7eb2..06302a2 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java @@ -154,6 +154,13 @@ public class SubjectManagerBean implements SubjectManagerLocal, SubjectManagerRe + subjectToModify.getName() + "]"); }
+ + // Reset the roles and ldap roles according to the current settings as this method will not update them + // To update assinged roles see RoleManager + Subject currentSubject = entityManager.find(Subject.class, subjectToModify.getId()); + subjectToModify.setRoles(currentSubject.getRoles()); + subjectToModify.setLdapRoles(currentSubject.getLdapRoles()); + return entityManager.merge(subjectToModify); }