You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by dl...@apache.org on 2004/11/29 22:11:59 UTC

cvs commit: jakarta-jetspeed-2/applications/security/src/webapp/images sw_med_rond.gif

dlestrat    2004/11/29 13:11:58

  Added:       applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt
                        RoleMgtPortlet.java RoleActionForm.java
                        RoleMgtUser.java RoleMgtRenderUtil.java
                        RoleActionController.java
                        PanelTabStateListener.java
                        AddRoleCommandLinkActionListener.java
                        RoleTreeItem.java SelectedUsersList.java
                        RoleActionListener.java AvailableUsersList.java
                        RoleTreeTable.java
               applications/security/src/webapp/images/tree
                        node_close_middle.gif node_open.gif node_close.gif
                        folder.png node_open_first.gif folder.gif
                        noline.gif node_open_last.gif line_middle.gif
                        node_close_first.gif line.gif node_close_last.gif
                        node_open_middle.gif line_first.gif line_last.gif
               applications/security/src/webapp/images sw_med_rond.gif
  Log:
  http://nagoya.apache.org/jira/browse/JS2-23#action_55991
  
  Revision  Changes    Path
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleMgtPortlet.java
  
  Index: RoleMgtPortlet.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.util.prefs.BackingStoreException;
  import java.util.prefs.Preferences;
  
  import javax.faces.context.FacesContext;
  import javax.portlet.PortletConfig;
  import javax.portlet.PortletException;
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.jetspeed.security.BasePrincipal;
  import org.apache.myfaces.custom.tree.DefaultMutableTreeNode;
  import org.apache.myfaces.custom.tree.model.DefaultTreeModel;
  import org.apache.myfaces.custom.tree.model.TreeModel;
  import org.apache.portals.bridges.myfaces.FacesPortlet;
  
  /**
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class RoleMgtPortlet extends FacesPortlet
  {
  
      private static final Log log = LogFactory.getLog(RoleMgtPortlet.class);
  
      /** Role tree table binding variable. */
      private static final String ROLE_TREE_TABLE = "roleTreeTable";
      
      /** The role tree model. */
      TreeModel roleTreeModel = new DefaultTreeModel();
  
      /**
       * @see javax.portlet.Portlet#init(javax.portlet.PortletConfig)
       */
      public void init(PortletConfig config) throws PortletException
      {
          super.init(config);
  
          Preferences prefs = Preferences.userRoot().node(
                  (BasePrincipal.PREFS_ROLE_ROOT).substring(0, (BasePrincipal.PREFS_ROLE_ROOT).length() - 1));
  
          roleTreeModel = buildTreeModel(prefs);
      }
     
      /**
       * @see org.apache.portals.bridges.myfaces.FacesPortlet#preProcessFaces(javax.faces.context.FacesContext)
       */
      protected void preProcessFaces(FacesContext context)
      {
          context.getExternalContext().getSessionMap().put(ROLE_TREE_TABLE, new RoleTreeTable(roleTreeModel));
      }
      
      /**
       * <p>
       * Build the tree model.
       * </p>
       * 
       * @param prefs The preferences.
       * @return The tree model.
       */
      private TreeModel buildTreeModel(Preferences prefs)
      {
          DefaultMutableTreeNode root = new DefaultMutableTreeNode(new RoleTreeItem(prefs.absolutePath(), prefs.name()));
          processPreferences(prefs, root);
  
          return new DefaultTreeModel(root);
      }
  
      /**
       * <p>
       * Recursively processes the preferences to build the role tree model.
       * </p>
       * 
       * @param prefs The preferences.
       * @param parent The parent to add the role item to.
       */
      protected void processPreferences(Preferences prefs, DefaultMutableTreeNode parent)
      {
          try
          {
              String[] names = prefs.childrenNames();
              for (int i = 0; i < names.length; i++)
              {
                  Preferences childPrefs = prefs.node(names[i]);
                  DefaultMutableTreeNode child = new DefaultMutableTreeNode(new RoleTreeItem(childPrefs.absolutePath(), names[i]));
                  parent.insert(child);
                  processPreferences(childPrefs, child);
              }
          }
          catch (BackingStoreException bse)
          {
              log.warn("can't find children of " + prefs.absolutePath(), bse);
          }
      }
  
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleActionForm.java
  
  Index: RoleActionForm.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.io.Serializable;
  
  /**
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class RoleActionForm implements Serializable
  {
      /** The role action form bean. */
      public final static String ROLE_ACTION_FORM = "roleActionForm";
  
      /** The parent role. */
      private RoleTreeItem parentRole;
  
      /** The selected roles. */
      private String[] selectedRoles;
  
      /** The new role name. */
      private String roleName;
  
      /** The new role path. */
      private String rolePath;
  
      /**
       * <p>
       * Default Constructor.
       * </p>
       */
      public RoleActionForm()
      {
          this.parentRole = new RoleTreeItem("/role", "role");
      }
  
      /**
       * @return Returns the parentRole.
       */
      public RoleTreeItem getParentRole()
      {
          return parentRole;
      }
  
      /**
       * @param parentRole The parentRole to set.
       */
      public void setParentRole(RoleTreeItem parentRole)
      {
          this.parentRole = parentRole;
      }
  
      /**
       * @return Returns the selectedRoles.
       */
      public String[] getSelectedRoles()
      {
          return selectedRoles;
      }
  
      /**
       * @param selectedRoles The selectedRoles to set.
       */
      public void setSelectedRoles(String[] selectedRoles)
      {
          this.selectedRoles = selectedRoles;
      }
  
      /**
       * @return Returns the roleName.
       */
      public String getRoleName()
      {
          return roleName;
      }
  
      /**
       * @param roleName The roleName to set.
       */
      public void setRoleName(String roleName)
      {
          this.roleName = roleName;
      }
  
      /**
       * @return Returns the rolePath.
       */
      public String getRolePath()
      {
          return rolePath;
      }
  
      /**
       * @param rolePath The rolePath to set.
       */
      public void setRolePath(String rolePath)
      {
          this.rolePath = rolePath;
      }
  
      /**
       * <p>
       * Add a new role.
       * </p>
       */
      public void addRole()
      {
          // Call the role manager. Add the role.
          String newRoleFullPath = getParentRole().getFullPath() + "/" + getRoleName();
          System.out.println("******* New Full Path: " + newRoleFullPath);
      }   
  
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleMgtUser.java
  
  Index: RoleMgtUser.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  /**
   * <p>
   * Light weight user used for the role management portlet.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class RoleMgtUser
  {
      /** The user name. */
      private String username;
  
      /**
       * @param username The username.
       */
      public RoleMgtUser(String username)
      {
          this.username = username;
      }
  
      /**
       * @return Returns the username.
       */
      public String getUsername()
      {
          return username;
      }
  
      /**
       * @param username The username to set.
       */
      public void setUsername(String username)
      {
          this.username = username;
      }
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleMgtRenderUtil.java
  
  Index: RoleMgtRenderUtil.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.text.MessageFormat;
  import java.util.Locale;
  import java.util.MissingResourceException;
  import java.util.ResourceBundle;
  
  import javax.faces.application.FacesMessage;
  import javax.faces.component.UIComponent;
  
  import org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane;
  
  /**
   * <p>
   * Utility class used for rendering.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class RoleMgtRenderUtil
  {
      private static final String DETAIL_SUFFIX = "Detail";
      
      /**
       * <p>
       * Utility method used to locate the tabbed panel component.
       * </p>
       * 
       * @param component The component.
       * @return The {@link HtmlPanelTabbedPane}.
       */
      public static HtmlPanelTabbedPane findTabbedPane(UIComponent component)
      {
          HtmlPanelTabbedPane tabbedPane = null;
  
          UIComponent parent = component.getParent();
          if (parent instanceof HtmlPanelTabbedPane)
          {
              tabbedPane = (HtmlPanelTabbedPane) parent;
          }
          else
          {
              tabbedPane = findTabbedPane(parent);
          }
  
          return tabbedPane;
      }
  
      /**
       * <p>
       * Utility to get validation messages.
       * </p>
       * 
       * @param locale The locale.
       * @param severity The severity.
       * @param messageId The messageId.
       * @param bundleName The bundleName.
       * @param args The args.
       * @return The {@link FacesMessage}
       */
      public static FacesMessage getMessage(Locale locale, FacesMessage.Severity severity,
              String messageId, String bundleName, Object args[])
      {
          ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleName, locale);
          String detail = null;
  
          String summary = getBundleString(resourceBundle, messageId);
          if (summary != null)
          {
              detail = getBundleString(resourceBundle, messageId + DETAIL_SUFFIX);
          }
  
          if (args != null && args.length > 0)
          {
              MessageFormat format;
  
              if (summary != null)
              {
                  format = new MessageFormat(summary, locale);
                  summary = format.format(args);
              }
  
              if (detail != null)
              {
                  format = new MessageFormat(detail, locale);
                  detail = format.format(args);
              }
          }
  
          return new FacesMessage(severity, summary, detail);
      }
      
      /**
       * <p>
       * Utility to get a bundle string.
       * </p>
       * 
       * @param bundle The bundle.
       * @param key The key.
       * @return The message.
       */
      private static String getBundleString(ResourceBundle bundle, String key)
      {
          try
          {
              return bundle == null ? null : bundle.getString(key);
          }
          catch (MissingResourceException e)
          {
              return null;
          }
      }
  
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleActionController.java
  
  Index: RoleActionController.java
  ===================================================================
  /*
   * Created on Nov 28, 2004
   *
   * TODO To change the template for this generated file go to
   * Window - Preferences - Java - Code Style - Code Templates
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  /**
   * @author David Le Strat
   *
   * TODO To change the template for this generated type comment go to
   * Window - Preferences - Java - Code Style - Code Templates
   */
  public class RoleActionController
  {
      /** The parent role. */
      private RoleTreeItem parentRole;
      
      
  
  }
  
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/PanelTabStateListener.java
  
  Index: PanelTabStateListener.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.io.Serializable;
  import java.util.List;
  
  import javax.faces.component.UIComponent;
  import javax.faces.context.FacesContext;
  import javax.faces.event.AbortProcessingException;
  
  import org.apache.myfaces.custom.tabbedpane.HtmlPanelTab;
  import org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane;
  import org.apache.myfaces.custom.tabbedpane.TabChangeEvent;
  import org.apache.myfaces.custom.tabbedpane.TabChangeListener;
  
  /**
   * <p>
   * Controls the state of the role management tabs.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class PanelTabStateListener implements Serializable, TabChangeListener
  {
      /** The panel tab state bean. */
      public static final String PANEL_TAB_STATE = "roleMgtPanelTabState";
      
      /** Edit role id. */
      private static final String EDIT_ROLE_TAB_ID = "editRoleTab";
  
      /** Role management panel tab state value binding. */
      private static final String ROLE_MGT_PANEL_TAB_STATE = "roleMgtPanelTabState";
  
      /** Whether to render edit role. */
      private boolean renderEditRole = false;
  
      /** Whether to render view roles. */
      private boolean renderViewRoles = true;
  
      /**
       * @return Returns the renderEditRole.
       */
      public boolean isRenderEditRole()
      {
          return renderEditRole;
      }
  
      /**
       * @param renderEditRole The renderEditRole to set.
       */
      public void setRenderEditRole(boolean renderEditRole)
      {
          this.renderEditRole = renderEditRole;
      }
  
      /**
       * @return Returns the renderViewRoles.
       */
      public boolean isRenderViewRoles()
      {
          return renderViewRoles;
      }
  
      /**
       * @param renderViewRoles The renderViewRoles to set.
       */
      public void setRenderViewRoles(boolean renderViewRoles)
      {
          this.renderViewRoles = renderViewRoles;
      }
  
      /**
       * <p>
       * Render edit role.
       * </p>
       */
      public void renderEditRole()
      {
          this.renderEditRole = true;
          this.renderViewRoles = false;
          FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(ROLE_MGT_PANEL_TAB_STATE, this);
      }
  
      /**
       * <p>
       * Render view roles.
       * </p>
       */
      public void renderViewRoles()
      {
          this.renderEditRole = false;
          this.renderViewRoles = true;
          FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(ROLE_MGT_PANEL_TAB_STATE, this);
      }
  
      /**
       * @see org.apache.myfaces.custom.tabbedpane.TabChangeListener#processTabChange(org.apache.myfaces.custom.tabbedpane.TabChangeEvent)
       */
      public void processTabChange(TabChangeEvent tabChangeEvent) throws AbortProcessingException
      {
          HtmlPanelTabbedPane tabbedPane = (HtmlPanelTabbedPane) tabChangeEvent.getComponent();
          List children = tabbedPane.getChildren();
          for (int i = 0, len = children.size(); i < len; i++)
          {
              UIComponent child = (UIComponent) children.get(i);
              if (child instanceof HtmlPanelTab)
              {
                  if (child.getId().equals(EDIT_ROLE_TAB_ID) && child.isRendered())
                  {
                      renderViewRoles();
                  }
              }
          }
      }
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/AddRoleCommandLinkActionListener.java
  
  Index: AddRoleCommandLinkActionListener.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.util.prefs.Preferences;
  
  import javax.faces.component.UIComponent;
  import javax.faces.context.FacesContext;
  
  import javax.faces.el.VariableResolver;
  import javax.faces.event.AbortProcessingException;
  import javax.faces.event.ActionEvent;
  import javax.faces.event.ActionListener;
  
  import org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane;
  
  /**
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class AddRoleCommandLinkActionListener implements ActionListener
  {
      /** The role action controller bean. */
      private final static String ADD_ROLE_TO_PARAM = "addRoleToParam";
  
      public void processAction(ActionEvent event) throws AbortProcessingException
      {
          UIComponent component = event.getComponent();
          HtmlPanelTabbedPane tabbedPane = RoleMgtRenderUtil.findTabbedPane(component);
  
          // Load add role pane.
          tabbedPane.setSelectedIndex(1);
  
          // Set the current role action.
          FacesContext facesContext = FacesContext.getCurrentInstance();
          VariableResolver vr = facesContext.getApplication().getVariableResolver();
  
          RoleActionForm roleAction = (RoleActionForm) vr.resolveVariable(facesContext, RoleActionForm.ROLE_ACTION_FORM);
  
          String fullPath = (String) facesContext.getExternalContext().getRequestParameterMap().get(ADD_ROLE_TO_PARAM);
          Preferences prefs = Preferences.userRoot().node(fullPath);
  
          roleAction.setParentRole(new RoleTreeItem(fullPath, prefs.name()));
  
          //if (component.getId().equals("addButton") ||
          //    component.getId().equals("href1"))
          //{
          //    form.add();
          //}
          //else
          //{
          //    form.subtract();
          //}
      }
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleTreeItem.java
  
  Index: RoleTreeItem.java
  ===================================================================
  /*
   * Copyright 2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.io.Serializable;
  
  /**
   * <p>
   * Bean class holding a role tree item.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
   */
  public class RoleTreeItem implements Serializable
  {
      /** The full path. */
      private String fullPath;
  
      /** The role name. */
      private String roleName;
      
      /**
       * @param fullPath The full path.
       * @param roleName The role name.
       */
      public RoleTreeItem(String fullPath, String roleName)
      {
          this.fullPath = fullPath;
          this.roleName = roleName;
      }
  
      /**
       * @return Returns the fullPath.
       */
      public String getFullPath()
      {
          return fullPath;
      }
  
      /**
       * @param fullPath The fullPath to set.
       */
      public void setFullPath(String fullPath)
      {
          this.fullPath = fullPath;
      }
  
      /**
       * @return Returns the roleName.
       */
      public String getRoleName()
      {
          return roleName;
      }
  
      /**
       * @param roleName The roleName to set.
       */
      public void setRoleName(String roleName)
      {
          this.roleName = roleName;
      }
  
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/SelectedUsersList.java
  
  Index: SelectedUsersList.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.util.ArrayList;
  import java.util.List;
  
  /**
   * <p>
   * Selected users list.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat</a>
   */
  public class SelectedUsersList
  {
      private List selectedUsers = new ArrayList();
      
      /**
       * <p>
       * Default constructor.
       * </p>
       */
      public SelectedUsersList()
      {
          for (int i = 1; i < 7; i++)
          {
              selectedUsers.add(new RoleMgtUser("username" + i));
          }
      }
  
      /**
       * @return Returns the selectedUsers.
       */
      public List getSelectedUsers()
      {
          return this.selectedUsers;
      }
      /**
       * @param selectedUsers The selectedUsers to set.
       */
      public void setSelectedUsers(List selectedUsers)
      {
          this.selectedUsers = selectedUsers;
      }
  }
  
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleActionListener.java
  
  Index: RoleActionListener.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.util.prefs.Preferences;
  
  import javax.faces.application.FacesMessage;
  import javax.faces.component.UIComponent;
  import javax.faces.context.FacesContext;
  import javax.faces.el.VariableResolver;
  import javax.faces.event.AbortProcessingException;
  import javax.faces.event.ActionEvent;
  import javax.faces.event.ActionListener;
  import javax.faces.event.PhaseId;
  
  import org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane;
  
  /**
   * @author <a href="dlestrat@apache.org">David Le Strat </a>
   */
  public class RoleActionListener implements ActionListener
  {
      /** The role management bundle name. */
      private final static String ROLE_MGT_RESOURCES = "org.apache.jetspeed.portlets.security.resources.RoleMgtResources";
      
      /** The invalid selected roles message id. */
      private final static String INVALID_SELECTED_ROLES_MESSAGE_ID = "invalidSelectedRoles";
      
      /** The add role action. */
      private final static String ADD_ROLE_ACTION = "addRoleAction";
      
      /** The edit role action. */
      private final static String EDIT_ROLE_ACTION = "editRoleAction";
  
      /**
       * @see javax.faces.event.ActionListener#processAction(javax.faces.event.ActionEvent)
       */
      public void processAction(ActionEvent event) throws AbortProcessingException
      {
          if (event.getPhaseId() == PhaseId.INVOKE_APPLICATION)
          {
              FacesContext facesContext = FacesContext.getCurrentInstance();
              UIComponent component = event.getComponent();
  
              VariableResolver vr = facesContext.getApplication().getVariableResolver();
              RoleActionForm roleActionForm = (RoleActionForm) vr.resolveVariable(facesContext,
                      RoleActionForm.ROLE_ACTION_FORM);
              if (component.getId().equals(ADD_ROLE_ACTION))
              {
                  roleActionForm.addRole();
                  HtmlPanelTabbedPane tabbedPane = RoleMgtRenderUtil.findTabbedPane(component);
                  // Load the view roles pane.
                  tabbedPane.setSelectedIndex(0);
              }
              else if (component.getId().equals(EDIT_ROLE_ACTION))
              {
                  String[] selectedRoles = roleActionForm.getSelectedRoles();
                  
                  if ((null == selectedRoles) || (selectedRoles.length == 0) || (selectedRoles.length > 1))
                  {
                      facesContext.addMessage(component.getClientId(facesContext),
                              RoleMgtRenderUtil.getMessage(facesContext.getViewRoot().getLocale(),
  									   					 FacesMessage.SEVERITY_ERROR,
  									   					 INVALID_SELECTED_ROLES_MESSAGE_ID,
  									   					 ROLE_MGT_RESOURCES,
  									   					 null));
                  }
                  else
                  {
                      Preferences prefs = Preferences.userRoot().node(selectedRoles[0]);
                      roleActionForm.setRolePath(prefs.absolutePath());
                      roleActionForm.setRoleName(prefs.name());
                      
                      PanelTabStateListener panelTabState = (PanelTabStateListener) vr.resolveVariable(facesContext,
                              PanelTabStateListener.PANEL_TAB_STATE);
                      panelTabState.renderEditRole();
                  }
  
              }
          }
      }
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/AvailableUsersList.java
  
  Index: AvailableUsersList.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.util.ArrayList;
  import java.util.List;
  
  /**
   * <p>
   * Available users list.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat</a>
   */
  public class AvailableUsersList
  {
      private List availableUsers = new ArrayList();
      
      /**
       * <p>
       * Default constructor.
       * </p>
       */
      public AvailableUsersList()
      {
          for (int i = 1; i < 995; i++)
          {
              availableUsers.add(new RoleMgtUser("username" + i));
          }
      }
  
      /**
       * @return Returns the availableUsers.
       */
      public List getAvailableUsers()
      {
          return availableUsers;
      }
      /**
       * @param availableUsers The availableUsers to set.
       */
      public void setAvailableUsers(List availableUsers)
      {
          this.availableUsers = availableUsers;
      }
  }
  
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/rolemgt/RoleTreeTable.java
  
  Index: RoleTreeTable.java
  ===================================================================
  /*
   * Copyright 2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.portlets.security.rolemgt;
  
  import java.io.Serializable;
  
  import org.apache.myfaces.custom.tree.DefaultMutableTreeNode;
  import org.apache.myfaces.custom.tree.model.DefaultTreeModel;
  import org.apache.myfaces.custom.tree.model.TreeModel;
  
  /**
   * <p>
   * Bean holding the tree hierarchy.
   * </p>
   * 
   * @author <a href="mailto:dlestrat@apache.org">David Le Strat</a>
   */
  public class RoleTreeTable implements Serializable
  {
      private DefaultTreeModel treeModel;
  
      /**
       * @param treeModel The treeModel.
       */
      public RoleTreeTable(TreeModel treeModel)
      {
          this.treeModel = (DefaultTreeModel) treeModel;
      }
  
      /**
       * <p>
       * Default constructor.
       * </p>
       */
      public RoleTreeTable()
      {
          DefaultMutableTreeNode root = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY", "XY"));
          DefaultMutableTreeNode a = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/A", "A"));
          root.insert(a);
          DefaultMutableTreeNode b = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/B", "B"));
          root.insert(b);
          DefaultMutableTreeNode c = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/C", "C"));
          root.insert(c);
  
          DefaultMutableTreeNode node = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/A/a1", "a1"));
          a.insert(node);
          node = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/A/a2", "a2"));
          a.insert(node);
          node = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/A/a3", "a3"));
          a.insert(node);
          node = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/B/b", "b"));
          b.insert(node);
  
          a = node;
          node = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/B/b/x1", "x1"));
          a.insert(node);
          node = new DefaultMutableTreeNode(new RoleTreeItem("/role/XY/B/b/x2", "x2"));
          a.insert(node);
          
          this.treeModel = new DefaultTreeModel(root);
      }
  
      /**
       * @return Returns the treeModel.
       */
      public DefaultTreeModel getTreeModel()
      {
          return treeModel;
      }
  
      /**
       * @param treeModel The treeModel to set.
       */
      public void setTreeModel(DefaultTreeModel treeModel)
      {
          this.treeModel = treeModel;
      }
  }
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_close_middle.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_open.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_close.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/folder.png
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_open_first.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/folder.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/noline.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_open_last.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/line_middle.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_close_first.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/line.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_close_last.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/node_open_middle.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/line_first.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/tree/line_last.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-jetspeed-2/applications/security/src/webapp/images/sw_med_rond.gif
  
  	<<Binary file>>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org