[jboss-svn-commits] JBL Code SVN: r18929 - in labs/jbosslabs/labs-3.0-build/views/auth/src/main: java/org/jboss/labs/view/auth/action and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 13 12:36:57 EDT 2008


Author: szimano
Date: 2008-03-13 12:36:57 -0400 (Thu, 13 Mar 2008)
New Revision: 18929

Added:
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/auth/AuthViewEvents.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/auth_view.css
Modified:
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/GlobalBinderAction.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_service_role.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user_role.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/layout/template.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml
Log:
manage global c.d. JBLAB-901

Added: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/auth/AuthViewEvents.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/auth/AuthViewEvents.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/auth/AuthViewEvents.java	2008-03-13 16:36:57 UTC (rev 18929)
@@ -0,0 +1,36 @@
+/*
+ * JBoss Labs. http://labs.jboss.com/jbosslabs
+ * 
+ * Copyright (C) 2008  Red Hat Middleware, LLC. All rights reserved.
+ * 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ * 
+ * Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik, 
+ * 	Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+ */
+package org.jboss.labs.auth;
+
+/**
+ * @author tomaszszymanski
+ *
+ */
+public class AuthViewEvents {
+	/**
+	 * This will clear user role from UserManager
+	 */
+	public final static String CLEAR_USERROLE = "CLEAR_USERROLE";
+	
+	public final static String CLEAR_GLOBAL_ROLES = "CLEAR_GLOBAL_ROLES";
+}

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/GlobalBinderAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/GlobalBinderAction.java	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/GlobalBinderAction.java	2008-03-13 16:36:57 UTC (rev 18929)
@@ -22,6 +22,8 @@
  */
 package org.jboss.labs.view.auth.action;
 
+import javax.faces.event.ValueChangeEvent;
+
 import org.jboss.labs.auth.RoleBinderService;
 import org.jboss.labs.auth.ViewHelper;
 import org.jboss.labs.core.model.auth.ServiceRole;
@@ -30,9 +32,12 @@
 import org.jboss.labs.injection.seam.Guice;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
+import org.jboss.seam.core.Events;
 
 import com.google.inject.Inject;
 
+import static org.jboss.labs.auth.AuthViewEvents.*;
+
 /**
  * @author tomaszszymanski
  * 
@@ -40,16 +45,16 @@
 @Name("globalBinder")
 @Guice
 public class GlobalBinderAction {
-	
+
 	@Inject
 	private RoleBinderService binderService;
-	
-	@In(value="#{users.currentRole}", required=false)
+
+	@In(value = "#{users.currentRole}", required = false)
 	private UserRole currentRole;
 
-	@In(value="#{services.currentServiceRole}", required = false)
+	@In(value = "#{services.currentServiceRole}", required = false)
 	private ServiceRole currentServiceRole;
-	
+
 	public boolean isOk() {
 		if (currentRole == null) {
 			ViewHelper.addMessage("Please set User Role");
@@ -57,19 +62,27 @@
 		if (currentServiceRole == null) {
 			ViewHelper.addMessage("Please set Service Role");
 		}
-		
+
 		return (currentRole != null && currentServiceRole != null);
 	}
-	
+
 	public void add() {
 		if (currentRole != null && currentServiceRole != null) {
 			try {
 				binderService.bindRolesGlobal(currentServiceRole, currentRole);
 				ViewHelper.addMessage("Role bound");
+				
+				Events.instance().raiseEvent(CLEAR_GLOBAL_ROLES);
 			} catch (NoSuchUserRoleException e) {
 				ViewHelper.addErrorMessage(e);
 			}
 		}
 	}
+
+	public void changePanel(ValueChangeEvent event) {
+		// clear user role in UserManager bean
+		Events.instance().raiseEvent(CLEAR_USERROLE, event);
+		Events.instance().raiseEvent(CLEAR_GLOBAL_ROLES);
+	}
+
 }
-

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java	2008-03-13 16:36:57 UTC (rev 18929)
@@ -25,6 +25,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.faces.event.FacesEvent;
+
 import org.jboss.labs.auth.RoleBinderService;
 import org.jboss.labs.core.model.auth.Service;
 import org.jboss.labs.core.model.auth.ServiceRole;
@@ -33,7 +35,7 @@
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.annotations.Logger;
 import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Out;
+import org.jboss.seam.annotations.Observer;
 import org.jboss.seam.annotations.Scope;
 import org.jboss.seam.log.Log;
 import org.richfaces.model.TreeNode;
@@ -41,6 +43,8 @@
 
 import com.google.inject.Inject;
 
+import static org.jboss.labs.auth.AuthViewEvents.*;
+
 /**
  * @author tomaszszymanski
  * 
@@ -64,6 +68,10 @@
 	private Log log;
 
 	public Service getCurrentService() {
+		if (currentServiceRole != null) {
+			currentServiceRole = null;
+		}
+		
 		return currentService;
 	}
 
@@ -108,7 +116,7 @@
 
 			for (Service s : getAllServices()) {
 				TreeNode tmp = new TreeNodeImpl();
-				tmp.setData(s.getDescription());
+				tmp.setData(s);
 
 				globalRolesTree.addChild(counter++, tmp);
 
@@ -127,10 +135,10 @@
 	private void addServiceRoles(TreeNode node, Service s, int counter) {
 		for (ServiceRole sr : s.getServiceRoles()) {
 			TreeNode tmp = new TreeNodeImpl();
-			tmp.setData(sr.getDescription());
-			
+			tmp.setData(sr);
+
 			node.addChild(counter++, tmp);
-			
+
 			addGlobalRoles(tmp, sr, counter);
 		}
 	}
@@ -143,8 +151,8 @@
 	private void addGlobalRoles(TreeNode node, ServiceRole sr, int counter) {
 		for (UserRole gr : sr.getGlobalRoles()) {
 			TreeNode tmp = new TreeNodeImpl();
-			tmp.setData(gr.getId());
-			
+			tmp.setData(gr);
+
 			node.addChild(counter++, tmp);
 		}
 	}
@@ -152,4 +160,10 @@
 	public void setGlobalRolesTree(TreeNode globalRolesTree) {
 		this.globalRolesTree = globalRolesTree;
 	}
+	
+	@Observer(CLEAR_GLOBAL_ROLES)
+	public void cleanGlobalRoles() {
+		globalRolesTree = null;
+	}
+
 }

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java	2008-03-13 16:36:57 UTC (rev 18929)
@@ -22,23 +22,31 @@
  */
 package org.jboss.labs.view.auth.action;
 
+import static org.jboss.labs.auth.AuthViewEvents.CLEAR_USERROLE;
+
 import java.util.List;
 import java.util.Vector;
 
+import javax.faces.event.FacesEvent;
+
+import org.jboss.labs.auth.UserService;
+import org.jboss.labs.auth.ViewHelper;
+import org.jboss.labs.core.model.auth.User;
+import org.jboss.labs.core.model.auth.UserRole;
+import org.jboss.labs.exception.auth.NoSuchUserRoleException;
+import org.jboss.labs.injection.seam.Guice;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.annotations.Factory;
 import org.jboss.seam.annotations.Logger;
 import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Out;
+import org.jboss.seam.annotations.Observer;
 import org.jboss.seam.annotations.Scope;
 import org.jboss.seam.annotations.datamodel.DataModel;
 import org.jboss.seam.annotations.datamodel.DataModelSelection;
 import org.jboss.seam.log.Log;
+import org.richfaces.component.UITree;
+import org.richfaces.event.NodeSelectedEvent;
 
-import org.jboss.labs.auth.UserService;
-import org.jboss.labs.core.model.auth.UserRole;
-import org.jboss.labs.injection.seam.Guice;
-
 import com.google.inject.Inject;
 
 /**
@@ -52,13 +60,15 @@
 
 	@Inject
 	private UserService userService;
-	
+
 	@DataModelSelection
 	private UserRole currentRole;
-	
+
 	@DataModel
 	private List<UserRole> allRoles;
-	
+
+	private List<User> usersInRole;
+
 	@Logger
 	private Log log;
 
@@ -66,7 +76,7 @@
 	public void findRoles() {
 		allRoles = new Vector<UserRole>(userService.getAllUserRoles());
 	}
-	
+
 	public void setRole() {
 	}
 
@@ -75,6 +85,63 @@
 	}
 
 	public void setCurrentRole(UserRole currentRole) {
+		usersInRole = null;
+
 		this.currentRole = currentRole;
 	}
+
+	public List<User> getUsersInRole() {
+		
+		if (usersInRole == null) {
+			if (currentRole != null)
+				try {
+					usersInRole = new Vector<User>(userService
+							.getUsersFromUserRole(currentRole));
+				} catch (NoSuchUserRoleException e) {
+					ViewHelper.addErrorMessage(e);
+				}
+		}
+
+		return usersInRole;
+	}
+
+	public void setUsersInRole(List<User> usersInRole) {
+		this.usersInRole = usersInRole;
+	}
+
+	public void selectGlobalNode(NodeSelectedEvent event) {
+		UITree tree = (UITree) event.getComponent();
+		Object ob = tree.getRowData();
+
+		if (ob instanceof UserRole) {
+			currentRole = (UserRole) ob;
+		}
+	}
+
+	@Observer(CLEAR_USERROLE)
+	public void clearRole(FacesEvent evnt) {
+		currentRole = null;
+		usersInRole = null;
+	}
+
+	public String getRowClasses() {
+		if (allRoles != null) {
+			String output = "";
+			int selectIndex = allRoles.indexOf(currentRole);
+			
+			for (int i = 0; i < allRoles.size() - 1; i++) {
+				output += (i == selectIndex ? "selected" : "notselected") + ",";
+			}
+
+			if (allRoles.size() - 1 == selectIndex) {
+				output += "selected";
+			} else {
+				output += "notselected";
+			}
+
+			return output;
+		}
+
+		return "";
+	}
 }

Added: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/auth_view.css
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/auth_view.css	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/auth_view.css	2008-03-13 16:36:57 UTC (rev 18929)
@@ -0,0 +1,4 @@
+.selected {
+	background-color: grey;
+	color: black;
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_service_role.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_service_role.xhtml	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_service_role.xhtml	2008-03-13 16:36:57 UTC (rev 18929)
@@ -18,10 +18,10 @@
 	<h:outputText value="Choose Service Role"></h:outputText>
 
 	<h:selectOneRadio id="serviceRoleList"
-		value="#{services.currentServiceRole}">
+		value="#{services.currentServiceRole}" >
 		<a4j:support event="onchange" reRender="msgs,buttons" />
 		<s:selectItems value="#{services.serviceRoles}" var="serviceRole"
-			label="#{serviceRole.description}" />
+			label="#{serviceRole.description}"/>
 		<f:converter converterId="serviceEntity" />
 	</h:selectOneRadio>
 </h:panelGroup>

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user_role.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user_role.xhtml	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user_role.xhtml	2008-03-13 16:36:57 UTC (rev 18929)
@@ -7,7 +7,7 @@
 	xmlns:a4j="http://richfaces.org/a4j" template="/layout/template.xhtml">
 	
 	<rich:dataTable width="483" id="roleList" rows="10" columnClasses="col"
-		value="#{allRoles}" var="role" >
+		value="#{allRoles}" var="role" rowClasses="#{users.rowClasses}">
 
 		<f:facet name="header">
 			<rich:columnGroup>

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/layout/template.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/layout/template.xhtml	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/layout/template.xhtml	2008-03-13 16:36:57 UTC (rev 18929)
@@ -22,7 +22,7 @@
 
 	<div class="body">
         <ui:include src="breadcrumbs.xhtml"/>
-        <rich:messages styleClass="message" id="msgs" />
+        <rich:messages styleClass="message" id="msgs"/>
         <ui:insert name="body"/>
 	</div>
 

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml	2008-03-13 16:36:25 UTC (rev 18928)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml	2008-03-13 16:36:57 UTC (rev 18929)
@@ -10,8 +10,8 @@
 
 	<ui:define name="body">
 
-		<rich:tabPanel switchType="ajax">
-			<rich:tab label="Add">
+		<rich:tabPanel switchType="ajax" valueChangeListener="#{globalBinder.changePanel}">
+			<rich:tab label="Add" name="add">
 				<a4j:form>
 
 					<ui:include src="include/choose_service_role.xhtml" />
@@ -19,26 +19,50 @@
 					<ui:include src="include/choose_user_role.xhtml" />
 
 					<h:panelGroup id="buttons">
-						<a4j:commandButton action="#{globalBinder.add}" value="Set"
-							reRender="msgs" disabled="#{! globalBinder.ok}" />
+						<a4j:commandButton action="#{globalBinder.add}" value="Bind"
+							reRender="msgs,globalRolesTree" disabled="#{services.currentServiceRole == null or users.currentRole == null}" />
 					</h:panelGroup>
 
 				</a4j:form>
 			</rich:tab>
-			<rich:tab label="View/Edit">
-				<a4j:form>
-					<rich:tree switchType="ajax" value="#{services.globalRolesTree}"
-						var="item" id="globalRolesTree">
-					</rich:tree>
-					<rich:contextMenu event="oncontextmenu" attached="true"
-							submitMode="none">
+			<rich:tab label="View/Edit" name="view">
+				<h:panelGrid columns="2">
+					<a4j:form>
+						<rich:tree switchType="ajax" value="#{services.globalRolesTree}"
+							var="item" id="globalRolesTree" ajaxSubmitSelection="true"
+							nodeSelectListener="#{users.selectGlobalNode}"
+							reRender="selectedRole" nodeFace="#{item.class.name}">
+							
+							<rich:treeNode type="org.jboss.labs.core.model.auth.Service">
+								<h:outputText value="[Service] #{item.description}" />
+							</rich:treeNode>
 
-							<rich:menuItem value="Zoom In" id="zin"></rich:menuItem>
+							<rich:treeNode type="org.jboss.labs.core.model.auth.ServiceRole">
+								<h:outputText value="[ServiceRole] #{item.description}" />
+							</rich:treeNode>
 
-							<rich:menuItem value="Zoom Out" id="zout"></rich:menuItem>
-
+							<rich:treeNode type="org.jboss.labs.core.model.auth.UserRole">
+								<h:outputText value="[UserRole] #{item.id}" />
+							</rich:treeNode>
+						</rich:tree>
+						<rich:contextMenu event="oncontextmenu" attached="true"
+							submitMode="none">
+							<rich:menuItem value="Edit" id="edit"></rich:menuItem>
+							<rich:menuItem value="Delete" id="delete"></rich:menuItem>
 						</rich:contextMenu>
-				</a4j:form>
+						<h:panelGroup id="buttons">
+							<a4j:commandButton value="Edit" />
+							<a4j:commandButton value="Delete" />
+						</h:panelGroup>
+					</a4j:form>
+					<h:panelGroup layout="vertical" id="selectedRole">
+						<h:outputText value="#{users.currentRole.id}"/>
+						<h:outputText value="#{users.currentRole.description}"/>
+						<rich:dataList var="user" value="#{users.usersInRole}">
+							<h:outputText value="#{user.name}" />
+						</rich:dataList>
+					</h:panelGroup>
+				</h:panelGrid>
 			</rich:tab>
 		</rich:tabPanel>
 	</ui:define>




More information about the jboss-svn-commits mailing list