You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tb...@apache.org on 2006/12/12 16:24:14 UTC
svn commit: r486187 [34/49] - in /directory/trunks/triplesec: ./ admin-api/
admin-api/src/ admin-api/src/main/ admin-api/src/main/java/
admin-api/src/main/java/org/ admin-api/src/main/java/org/safehaus/
admin-api/src/main/java/org/safehaus/triplesec/ a...
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserDependentsPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserDependentsPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserDependentsPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserDependentsPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,408 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.safehaus.triplesec.admin.swing;
+
+
+import javax.swing.JPanel;
+import java.awt.BorderLayout;
+import javax.swing.JButton;
+import java.awt.GridBagLayout;
+
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTree;
+
+import java.awt.GridBagConstraints;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.swing.table.AbstractTableModel;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+
+import org.safehaus.triplesec.admin.DataAccessException;
+import org.safehaus.triplesec.admin.Group;
+import org.safehaus.triplesec.admin.GroupModifier;
+import org.safehaus.triplesec.admin.Profile;
+import org.safehaus.triplesec.admin.User;
+
+
+public class UserDependentsPanel extends JPanel
+{
+ private static final long serialVersionUID = -5711894948847093836L;
+ private JPanel centerPanel = null;
+ private JPanel southPanel = null;
+ private JButton removeButton = null;
+ private JScrollPane jScrollPane = null;
+ private JTable dependentsTable = null;
+ private List dependents = new ArrayList();
+ private User user;
+ private DependencyModel dependencyModel = null;
+ private JTree tree;
+
+
+ /**
+ * This is the default constructor
+ */
+ public UserDependentsPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void setSelectedNode( DefaultMutableTreeNode node, JTree tree )
+ {
+ this.tree = tree;
+ this.user = ( User ) node.getUserObject();
+ this.dependents.clear();
+
+ if ( node == null || node.getParent() == null || node.getParent().getParent() == null )
+ {
+ return;
+ }
+
+ // -------------------------------------------------------------------
+ // Find the "Groups" and "Applications" nodes
+ // -------------------------------------------------------------------
+
+ DefaultMutableTreeNode rootNode = ( DefaultMutableTreeNode ) node.getParent().getParent();
+ DefaultMutableTreeNode groupsNode = null;
+ DefaultMutableTreeNode applicationsNode = null;
+ for ( Enumeration ii = rootNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( "Groups".equals( child.getUserObject() ) )
+ {
+ groupsNode = child;
+ }
+ if ( "Applications".equals( child.getUserObject() ) )
+ {
+ applicationsNode = child;
+ }
+ }
+
+ // -------------------------------------------------------------------
+ // Find the group dependents
+ // -------------------------------------------------------------------
+
+ for ( Enumeration ii = groupsNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ Group group = ( Group ) child.getUserObject();
+ if ( group.getMembers().contains( user.getId() ) )
+ {
+ dependents.add( child );
+ }
+ }
+
+ // -------------------------------------------------------------------
+ // Find the profile dependents
+ // -------------------------------------------------------------------
+
+ for ( Enumeration ii = applicationsNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ findDependentProfiles( child );
+ }
+
+ dependencyModel.fireTableDataChanged();
+ }
+
+
+ private void findDependentProfiles( DefaultMutableTreeNode applicationNode )
+ {
+ DefaultMutableTreeNode profilesNode = null;
+ for ( Enumeration ii = applicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( "Profiles".equals( child.getUserObject() ) )
+ {
+ profilesNode = child;
+ break;
+ }
+ }
+
+ for ( Enumeration ii = profilesNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ Profile profile = ( Profile ) child.getUserObject();
+ if ( profile.getUser().equals( user.getId() ) )
+ {
+ dependents.add( child );
+ }
+ }
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setLayout(new BorderLayout());
+ this.setSize(590, 289);
+ this.add(getCenterPanel(), java.awt.BorderLayout.CENTER);
+ this.add(getSouthPanel(), java.awt.BorderLayout.SOUTH);
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getCenterPanel()
+ {
+ if ( centerPanel == null )
+ {
+ GridBagConstraints gridBagConstraints = new GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.weightx = 1.0;
+ gridBagConstraints.weighty = 1.0;
+ gridBagConstraints.insets = new java.awt.Insets(10,10,10,10);
+ gridBagConstraints.gridx = 0;
+ centerPanel = new JPanel();
+ centerPanel.setLayout(new GridBagLayout());
+ centerPanel.add(getJScrollPane(), gridBagConstraints);
+ }
+ return centerPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getSouthPanel()
+ {
+ if ( southPanel == null )
+ {
+ southPanel = new JPanel();
+ southPanel.add(getRemoveButton(), null);
+ }
+ return southPanel;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getRemoveButton()
+ {
+ if ( removeButton == null )
+ {
+ removeButton = new JButton();
+ removeButton.setText("Remove");
+ removeButton.setToolTipText("Remove the link to the dependent object");
+ removeButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ String msg = UiUtils.wrap( "Removing dependency relationships will effect " +
+ "entities other than this user. User profiles for one will be deleted. Group " +
+ "membership will be effected. You cannot automatically revert from this operation. " +
+ "Would you like to continue?", 79 );
+ int response = JOptionPane.showOptionDialog( UserDependentsPanel.this, msg,
+ "Irreverable operation!", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
+ null, null, null );
+ if ( response == JOptionPane.NO_OPTION )
+ {
+ return;
+ }
+
+ int[] selectedRows = dependentsTable.getSelectedRows();
+ Set removed = new HashSet();
+ for ( int ii = 0; ii < selectedRows.length; ii++ )
+ {
+ DefaultMutableTreeNode dependentNode =
+ ( DefaultMutableTreeNode ) dependents.get( selectedRows[ii] );
+ Object dependent = dependentNode.getUserObject();
+ try
+ {
+ DefaultTreeModel model =( DefaultTreeModel ) tree.getModel();
+ if ( dependent instanceof Group )
+ {
+ Group group = ( Group ) dependent;
+ if ( group.getMembers().size() == 1 )
+ {
+ group.modifier().delete();
+ model.removeNodeFromParent( dependentNode );
+ }
+ else
+ {
+ GroupModifier modifier = group.modifier().removeMember( user.getId() );
+ dependentNode.setUserObject( modifier.modify() );
+ }
+ removed.add( dependentNode );
+ }
+ else if ( dependent instanceof Profile )
+ {
+ Profile profile = ( Profile ) dependent;
+ profile.modifier().delete();
+ removed.add( dependentNode );
+ model.removeNodeFromParent( dependentNode );
+ }
+ }
+ catch ( DataAccessException dae )
+ {
+ msg = UiUtils.wrap( "Failed to remove all dependency relationships for user: "
+ + dae.getMessage(), 79 );
+ JOptionPane.showMessageDialog( UserDependentsPanel.this, msg,
+ "Dependency removal failure!", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+
+ for ( Iterator ii = removed.iterator(); ii.hasNext(); /**/ )
+ {
+ dependents.remove( ii.next() );
+ }
+
+ if ( removed.size() > 0 )
+ {
+ dependencyModel.fireTableDataChanged();
+ }
+ }
+ } );
+ }
+ return removeButton;
+ }
+
+
+ /**
+ * This method initializes jScrollPane
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane()
+ {
+ if ( jScrollPane == null )
+ {
+ jScrollPane = new JScrollPane();
+ jScrollPane.setViewportView(getDependentsTable());
+ }
+ return jScrollPane;
+ }
+
+
+ /**
+ * This method initializes jTable
+ *
+ * @return javax.swing.JTable
+ */
+ private JTable getDependentsTable()
+ {
+ if ( dependentsTable == null )
+ {
+ dependentsTable = new JTable();
+ dependentsTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ dependentsTable.setToolTipText("Permission dependents");
+ dependencyModel = new DependencyModel();
+ dependentsTable.setModel( dependencyModel );
+ dependentsTable.setShowGrid(true);
+ }
+ return dependentsTable;
+ }
+
+
+ class DependencyModel extends AbstractTableModel
+ {
+ private static final long serialVersionUID = 5348529870374118604L;
+ private final String[] COLNAMES = new String[] { "Type", "Name/Id", "Application", "Nature" };
+
+
+ public String getColumnName( int columnIndex )
+ {
+ return COLNAMES[columnIndex];
+ }
+
+ public int getRowCount()
+ {
+ return dependents.size();
+ }
+
+ public int getColumnCount()
+ {
+ return 4;
+ }
+
+ public Object getValueAt( int rowIndex, int columnIndex )
+ {
+ Object dependent = ( ( DefaultMutableTreeNode ) dependents.get( rowIndex ) ).getUserObject();
+ if ( dependent instanceof Group )
+ {
+ switch( columnIndex )
+ {
+ case ( 0 ):
+ return "Group";
+ case ( 1 ):
+ return dependent;
+ case ( 2 ):
+ return "N/A";
+ case ( 3 ):
+ return "Membership";
+ default:
+ throw new IndexOutOfBoundsException( "Only 4 columns present so columnIndex is invalid: "
+ + columnIndex );
+ }
+ }
+ else if ( dependent instanceof Profile )
+ {
+ switch( columnIndex )
+ {
+ case ( 0 ):
+ return "Profile";
+ case ( 1 ):
+ return dependent;
+ case ( 2 ):
+ Profile profile = ( Profile ) dependent;
+ return profile.getApplicationName();
+ case ( 3 ):
+ return "Ownership";
+ default:
+ throw new IndexOutOfBoundsException( "Only 4 columns present so columnIndex is invalid: "
+ + columnIndex );
+ }
+ }
+ else
+ {
+ throw new IllegalStateException( "Only expecting Group and Profile dependents for Users not "
+ + dependent.getClass() );
+ }
+ }
+ }
+
+
+ public boolean hasDependents()
+ {
+ return dependents.size() > 0;
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserInfoPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserInfoPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserInfoPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserInfoPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,403 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.safehaus.triplesec.admin.swing;
+
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import org.safehaus.triplesec.admin.HauskeysUser;
+import org.safehaus.triplesec.admin.HauskeysUserModifier;
+import org.safehaus.triplesec.admin.LocalUser;
+import org.safehaus.triplesec.admin.LocalUserModifier;
+import org.safehaus.triplesec.admin.User;
+
+
+public class UserInfoPanel extends JPanel implements StatusObject, FocusListener, KeyListener
+{
+ private static final long serialVersionUID = 1L;
+ private JTextField firstNameTextField = null;
+ private JTextField lastNameTextField = null;
+ private JPasswordField passwordField = null;
+ private JTextField realmTextField = null;
+ private JLabel jLabel = null;
+ private JPasswordField confirmField = null;
+ private User user;
+ private StatusListener listener;
+ private boolean lastStatusState = true; // true = up to date, false means it was not up to date
+ private boolean newEntityMode = false;
+
+
+ /**
+ * This is the default constructor
+ */
+ public UserInfoPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void setNewEntityMode( boolean newEntityMode )
+ {
+ this.newEntityMode = newEntityMode;
+ }
+
+
+ public void setStatusListener( StatusListener listener )
+ {
+ this.listener = listener;
+ }
+
+
+ public void setFields( HauskeysUser hauskeysUser )
+ {
+ this.user = hauskeysUser;
+ this.lastStatusState = true;
+ firstNameTextField.setText( hauskeysUser.getFirstName() );
+ lastNameTextField.setText( hauskeysUser.getLastName() );
+ passwordField.setText( hauskeysUser.getPassword() );
+ confirmField.setText( hauskeysUser.getPassword() );
+ realmTextField.setText( hauskeysUser.getRealm() );
+ }
+
+
+ public void setFields( LocalUser localUser, String realm )
+ {
+ this.user = localUser;
+ this.lastStatusState = true;
+ firstNameTextField.setText( localUser.getFirstName() );
+ lastNameTextField.setText( localUser.getLastName() );
+ passwordField.setText( localUser.getPassword() );
+ confirmField.setText( localUser.getPassword() );
+ realmTextField.setText( realm );
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+ gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints1.gridy = 3;
+ gridBagConstraints1.weightx = 1.0;
+ gridBagConstraints1.insets = new java.awt.Insets(0,0,5,5);
+ gridBagConstraints1.gridx = 1;
+ GridBagConstraints gridBagConstraints = new GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.insets = new java.awt.Insets(0,5,5,5);
+ gridBagConstraints.gridy = 3;
+ jLabel = new JLabel();
+ jLabel.setText("Password Confirm:");
+ jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ this.setSize(577, 272);
+ GridBagConstraints gridBagConstraints32 = new GridBagConstraints();
+ gridBagConstraints32.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints32.gridy = 4;
+ gridBagConstraints32.weightx = 1.0;
+ gridBagConstraints32.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints32.gridx = 1;
+ GridBagConstraints gridBagConstraints31 = new GridBagConstraints();
+ gridBagConstraints31.gridx = 0;
+ gridBagConstraints31.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints31.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints31.gridy = 4;
+ JLabel jLabel14 = new JLabel();
+ jLabel14.setText( "Realm:" );
+ jLabel14.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints30 = new GridBagConstraints();
+ gridBagConstraints30.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints30.gridy = 2;
+ gridBagConstraints30.weightx = 1.0;
+ gridBagConstraints30.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints30.gridx = 1;
+ GridBagConstraints gridBagConstraints29 = new GridBagConstraints();
+ gridBagConstraints29.gridx = 0;
+ gridBagConstraints29.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints29.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints29.gridy = 2;
+ JLabel jLabel13 = new JLabel();
+ jLabel13.setText( "Password:" );
+ jLabel13.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints28 = new GridBagConstraints();
+ gridBagConstraints28.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints28.gridy = 1;
+ gridBagConstraints28.weightx = 1.0;
+ gridBagConstraints28.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints28.gridx = 1;
+ GridBagConstraints gridBagConstraints27 = new GridBagConstraints();
+ gridBagConstraints27.gridx = 0;
+ gridBagConstraints27.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints27.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints27.gridy = 1;
+ JLabel jLabel12 = new JLabel();
+ jLabel12.setText( "Last Name:" );
+ jLabel12.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints26 = new GridBagConstraints();
+ gridBagConstraints26.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints26.gridy = 0;
+ gridBagConstraints26.weightx = 1.0;
+ gridBagConstraints26.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints26.gridx = 1;
+ GridBagConstraints gridBagConstraints25 = new GridBagConstraints();
+ gridBagConstraints25.gridx = 0;
+ gridBagConstraints25.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints25.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints25.gridy = 0;
+ JLabel jLabel11 = new JLabel();
+ jLabel11.setText( "First Name:" );
+ jLabel11.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ setLayout( new GridBagLayout() );
+ add( jLabel11, gridBagConstraints25 );
+ add( getFirstNameTextField(), gridBagConstraints26 );
+ add( jLabel12, gridBagConstraints27 );
+ add( getLastNameTextField(), gridBagConstraints28 );
+ add( jLabel13, gridBagConstraints29 );
+ add( getPasswordField(), gridBagConstraints30 );
+ this.add(jLabel14, gridBagConstraints31);
+ this.add(getRealmTextField(), gridBagConstraints32);
+ this.add(jLabel, gridBagConstraints);
+ this.add(getConfirmField(), gridBagConstraints1);
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getFirstNameTextField()
+ {
+ if ( firstNameTextField == null )
+ {
+ firstNameTextField = new JTextField();
+ firstNameTextField.addFocusListener( this );
+ firstNameTextField.addKeyListener( this );
+ }
+ return firstNameTextField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getLastNameTextField()
+ {
+ if ( lastNameTextField == null )
+ {
+ lastNameTextField = new JTextField();
+ lastNameTextField.addFocusListener( this );
+ lastNameTextField.addKeyListener( this );
+ }
+ return lastNameTextField;
+ }
+
+
+ /**
+ * This method initializes jPasswordField
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getPasswordField()
+ {
+ if ( passwordField == null )
+ {
+ passwordField = new JPasswordField();
+ passwordField.addFocusListener( this );
+ passwordField.addKeyListener( this );
+ }
+ return passwordField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getRealmTextField()
+ {
+ if ( realmTextField == null )
+ {
+ realmTextField = new JTextField();
+ realmTextField.setEditable( false );
+ }
+ return realmTextField;
+ }
+
+
+ public void alterModifier( HauskeysUserModifier modifier )
+ {
+ modifier.setFirstName( firstNameTextField.getText() );
+ modifier.setLastName( lastNameTextField.getText() );
+ modifier.setPassword( new String( passwordField.getPassword() ) );
+ }
+
+
+ public void alterModifier( LocalUserModifier modifier )
+ {
+ modifier.setFirstName( firstNameTextField.getText() );
+ modifier.setLastName( lastNameTextField.getText() );
+ modifier.setPassword( new String( passwordField.getPassword() ) );
+ }
+
+
+ public String getFirstName()
+ {
+ return firstNameTextField.getText();
+ }
+
+
+ public String getLastName()
+ {
+ return lastNameTextField.getText();
+ }
+
+
+ public String getPassword()
+ {
+ return new String( passwordField.getPassword() );
+ }
+
+
+ public String getPasswordConfirm()
+ {
+ return new String( confirmField.getPassword() );
+ }
+
+
+ public boolean isPasswordOk()
+ {
+ if ( passwordField.getPassword() == null || confirmField.getPassword() == null )
+ {
+ return false;
+ }
+ String password = new String( passwordField.getPassword() );
+ String confirm = new String( confirmField.getPassword() );
+ return password.equals( confirm );
+ }
+
+
+ public String getRealm()
+ {
+ return realmTextField.getText();
+ }
+
+
+ /**
+ * This method initializes jPasswordField
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getConfirmField()
+ {
+ if ( confirmField == null )
+ {
+ confirmField = new JPasswordField();
+ confirmField.addFocusListener( this );
+ confirmField.addKeyListener( this );
+ }
+ return confirmField;
+ }
+
+
+ public boolean isUpToDate()
+ {
+ if ( newEntityMode )
+ {
+ return UiUtils.isFieldUpToDate( firstNameTextField, null ) &&
+ UiUtils.isFieldUpToDate( lastNameTextField, null ) &&
+ UiUtils.isFieldUpToDate( passwordField, null ) &&
+ UiUtils.isFieldUpToDate( confirmField, null );
+ }
+
+ if ( user instanceof LocalUser )
+ {
+ LocalUser lu = ( LocalUser ) user;
+ return UiUtils.isFieldUpToDate( firstNameTextField, lu.getFirstName() ) &&
+ UiUtils.isFieldUpToDate( lastNameTextField, lu.getLastName() ) &&
+ UiUtils.isFieldUpToDate( passwordField, lu.getPassword() ) &&
+ UiUtils.isFieldUpToDate( confirmField, lu.getPassword() );
+ }
+
+ HauskeysUser hu = ( HauskeysUser ) user;
+ return UiUtils.isFieldUpToDate( firstNameTextField, hu.getFirstName() ) &&
+ UiUtils.isFieldUpToDate( lastNameTextField, hu.getLastName() ) &&
+ UiUtils.isFieldUpToDate( passwordField, hu.getPassword() ) &&
+ UiUtils.isFieldUpToDate( confirmField, hu.getPassword() );
+ }
+
+
+ private void checkStatus()
+ {
+ boolean upToDate = isUpToDate();
+ if ( listener != null && lastStatusState != upToDate )
+ {
+ listener.statusChanged( UserInfoPanel.this );
+ lastStatusState = upToDate;
+ }
+ }
+
+
+ public void focusGained( FocusEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void focusLost( FocusEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyTyped( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyPressed( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyReleased( KeyEvent e )
+ {
+ checkStatus();
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserNorthPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserNorthPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserNorthPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserNorthPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,473 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.safehaus.triplesec.admin.swing;
+
+
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.safehaus.triplesec.admin.ExternalUser;
+import org.safehaus.triplesec.admin.HauskeysUser;
+import org.safehaus.triplesec.admin.LocalUser;
+import org.safehaus.triplesec.admin.User;
+
+
+public class UserNorthPanel extends JPanel implements StatusObject, FocusListener, KeyListener
+{
+ private static final long serialVersionUID = 7996658370769939502L;
+
+
+ private ImageIcon localUserIcon = new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/local_user_48x48.png" ) );
+ private ImageIcon externalUserIcon = new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/external_user_48x48.png" ) );
+ private ImageIcon hauskeysUserIcon = new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/hauskeys_user_48x48.png" ) );
+ private JLabel iconLabel = null;
+
+ private ButtonGroup userTypeButtonGroup;
+ private JPanel jPanel = null;
+ private JPanel jPanel4 = null;
+ private JLabel jLabel = null;
+ private JLabel jLabel1 = null;
+ private JTextField statusTextField = null;
+ private JLabel jLabel2 = null;
+ private JTextField userIdTextField = null;
+ private JPanel jPanel3 = null;
+ private JRadioButton externalUserRadioButton = null;
+ private JRadioButton localUserRadioButton = null;
+ private JRadioButton hauskeysUserRadioButton = null;
+ private User user;
+ private boolean lastStatusState = true;
+ private StatusListener listener;
+ private boolean newEnityMode = false;
+
+
+ /**
+ * This is the default constructor
+ */
+ public UserNorthPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void setNewEntityMode( boolean newEntityMode )
+ {
+ this.newEnityMode = newEntityMode;
+ }
+
+
+ public void setStatusListener( StatusListener listener )
+ {
+ this.listener = listener;
+ }
+
+
+ public void setStatus( Color color, String msg )
+ {
+ statusTextField.setForeground( color );
+ statusTextField.setText( msg );
+ }
+
+
+ public String getId()
+ {
+ return userIdTextField.getText();
+ }
+
+
+ public void setFields( User user )
+ {
+ this.user = user;
+ this.lastStatusState = true;
+ userIdTextField.setText( user.getId() );
+
+ if ( user instanceof ExternalUser )
+ {
+ iconLabel.setIcon( externalUserIcon );
+ userTypeButtonGroup.setSelected( externalUserRadioButton.getModel(), true );
+ }
+ else if ( user instanceof LocalUser )
+ {
+ iconLabel.setIcon( localUserIcon );
+ userTypeButtonGroup.setSelected( localUserRadioButton.getModel(), true );
+ }
+ else if ( user instanceof HauskeysUser )
+ {
+ iconLabel.setIcon( hauskeysUserIcon );
+ userTypeButtonGroup.setSelected( hauskeysUserRadioButton.getModel(), true );
+ }
+ else
+ {
+ throw new IllegalArgumentException( "Unknown user type: " + user.getClass() );
+ }
+ }
+
+
+ public boolean isExternalUserSelected()
+ {
+ return externalUserRadioButton.isSelected();
+ }
+
+
+ public boolean isHauskeysUserSelected()
+ {
+ return hauskeysUserRadioButton.isSelected();
+ }
+
+
+ public boolean isLocalUserSelected()
+ {
+ return localUserRadioButton.isSelected();
+ }
+
+
+ public void addActionListener( ActionListener listener )
+ {
+ externalUserRadioButton.addActionListener( listener );
+ localUserRadioButton.addActionListener( listener );
+ hauskeysUserRadioButton.addActionListener( listener );
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize(724, 119);
+ GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+ gridBagConstraints1.gridx = 1;
+ gridBagConstraints1.weightx = 1.0D;
+ gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints1.gridheight = 3;
+ gridBagConstraints1.insets = new java.awt.Insets( 0, 10, 0, 10 );
+ gridBagConstraints1.weighty = 1.0D;
+ gridBagConstraints1.gridy = 0;
+ setLayout( new GridBagLayout() );
+ setPreferredSize( new java.awt.Dimension( 179, 68 ) );
+ add( getJPanel4(), new GridBagConstraints() );
+ add( getJPanel(), gridBagConstraints1 );
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel()
+ {
+ if ( jPanel == null )
+ {
+ GridBagConstraints gridBagConstraints14 = new GridBagConstraints();
+ gridBagConstraints14.gridx = 1;
+ gridBagConstraints14.insets = new java.awt.Insets( 0, 5, 0, 0 );
+ gridBagConstraints14.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints14.gridy = 2;
+ GridBagConstraints gridBagConstraints15 = new GridBagConstraints();
+ gridBagConstraints15.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints15.gridy = 1;
+ gridBagConstraints15.weightx = 1.0;
+ gridBagConstraints15.insets = new java.awt.Insets( 0, 0, 0, 0 );
+ gridBagConstraints15.gridx = 1;
+ GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
+ gridBagConstraints3.gridx = 0;
+ gridBagConstraints3.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints3.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints3.gridy = 1;
+ jLabel2 = new JLabel();
+ jLabel2.setText( "User Id:" );
+ jLabel2.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
+ gridBagConstraints5.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints5.gridy = 0;
+ gridBagConstraints5.weightx = 1.0;
+ gridBagConstraints5.insets = new java.awt.Insets( 0, 0, 5, 0 );
+ gridBagConstraints5.gridx = 1;
+ GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
+ gridBagConstraints4.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints4.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
+ gridBagConstraints2.gridx = 0;
+ gridBagConstraints2.insets = new java.awt.Insets( 0, 0, 0, 5 );
+ gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints2.gridy = 2;
+ jLabel1 = new JLabel();
+ jLabel1.setText( "User Type:" );
+ jLabel1.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ jLabel = new JLabel();
+ jLabel.setText( "Status:" );
+ jLabel.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ jPanel = new JPanel();
+ jPanel.setLayout( new GridBagLayout() );
+ jPanel.setPreferredSize( new java.awt.Dimension( 131, 88 ) );
+ jPanel.add( jLabel, gridBagConstraints4 );
+ jPanel.add( jLabel1, gridBagConstraints2 );
+ jPanel.add( getStatusTextField(), gridBagConstraints5 );
+ jPanel.add( jLabel2, gridBagConstraints3 );
+ jPanel.add( getUserIdTextField(), gridBagConstraints15 );
+ jPanel.add( getJPanel3(), gridBagConstraints14 );
+ }
+ return jPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel4
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel4()
+ {
+ if ( jPanel4 == null )
+ {
+ jPanel4 = new JPanel();
+ jPanel4.setBorder( javax.swing.BorderFactory.createEtchedBorder( javax.swing.border.EtchedBorder.RAISED ) );
+ jPanel4.add( getIconLabel(), null );
+ }
+ return jPanel4;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getStatusTextField()
+ {
+ if ( statusTextField == null )
+ {
+ statusTextField = new JTextField();
+ statusTextField.setEditable( false );
+ }
+ return statusTextField;
+ }
+
+
+ /**
+ * This method initializes iconLabel
+ *
+ * @return javax.swing.JLabel
+ */
+ private JLabel getIconLabel()
+ {
+ if ( iconLabel == null )
+ {
+ iconLabel = new JLabel();
+ iconLabel.setIcon( new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/local_user_48x48.png" ) ) );
+ iconLabel.setPreferredSize( new java.awt.Dimension( 48, 48 ) );
+ iconLabel.setText( "" );
+ iconLabel.setVerticalTextPosition( javax.swing.SwingConstants.BOTTOM );
+ iconLabel.setVerticalAlignment( javax.swing.SwingConstants.BOTTOM );
+ iconLabel.setEnabled( true );
+ }
+ return iconLabel;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getUserIdTextField()
+ {
+ if ( userIdTextField == null )
+ {
+ userIdTextField = new JTextField();
+ userIdTextField.addFocusListener( this );
+ userIdTextField.addKeyListener( this );
+ }
+ return userIdTextField;
+ }
+
+
+ private void checkStatus()
+ {
+ boolean upToDate = isUpToDate();
+ if ( listener != null && lastStatusState != upToDate )
+ {
+ listener.statusChanged( UserNorthPanel.this );
+ lastStatusState = upToDate;
+ }
+ }
+
+
+ /**
+ * This method initializes jPanel3
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel3()
+ {
+ if ( jPanel3 == null )
+ {
+ FlowLayout flowLayout = new FlowLayout();
+ flowLayout.setAlignment( java.awt.FlowLayout.LEFT );
+ jPanel3 = new JPanel();
+ jPanel3.setLayout( flowLayout );
+ jPanel3.setPreferredSize( new java.awt.Dimension( 333, 20 ) );
+ jPanel3.add( getExternalUserRadioButton(), null );
+ jPanel3.add( getLocalUserRadioButton(), null );
+ jPanel3.add( getHauskeysUserRadioButton(), null );
+ userTypeButtonGroup = new ButtonGroup();
+ userTypeButtonGroup.add( getExternalUserRadioButton() );
+ userTypeButtonGroup.add( getLocalUserRadioButton() );
+ userTypeButtonGroup.add( getHauskeysUserRadioButton() );
+ }
+ return jPanel3;
+ }
+
+
+ /**
+ * This method initializes jRadioButton
+ *
+ * @return javax.swing.JRadioButton
+ */
+ private JRadioButton getExternalUserRadioButton()
+ {
+ if ( externalUserRadioButton == null )
+ {
+ externalUserRadioButton = new JRadioButton();
+ externalUserRadioButton.setText( "External User" );
+ externalUserRadioButton.setPreferredSize( new java.awt.Dimension( 107, 16 ) );
+ }
+ return externalUserRadioButton;
+ }
+
+
+ /**
+ * This method initializes jRadioButton1
+ *
+ * @return javax.swing.JRadioButton
+ */
+ private JRadioButton getLocalUserRadioButton()
+ {
+ if ( localUserRadioButton == null )
+ {
+ localUserRadioButton = new JRadioButton();
+ localUserRadioButton.setText( "Local User" );
+ localUserRadioButton.setPreferredSize( new java.awt.Dimension( 89, 16 ) );
+ }
+ return localUserRadioButton;
+ }
+
+
+ /**
+ * This method initializes jRadioButton2
+ *
+ * @return javax.swing.JRadioButton
+ */
+ private JRadioButton getHauskeysUserRadioButton()
+ {
+ if ( hauskeysUserRadioButton == null )
+ {
+ hauskeysUserRadioButton = new JRadioButton();
+ hauskeysUserRadioButton.setText( "Hauskeys User" );
+ hauskeysUserRadioButton.setPreferredSize( new java.awt.Dimension( 117, 16 ) );
+ }
+ return hauskeysUserRadioButton;
+ }
+
+
+ public void setId( String id )
+ {
+ userIdTextField.setText( id );
+ }
+
+
+ public void setStatus( String status )
+ {
+ statusTextField.setText( status );
+ }
+
+
+ public String getStatus()
+ {
+ return statusTextField.getText();
+ }
+
+
+ public void setIcon( ImageIcon icon )
+ {
+ iconLabel.setIcon( icon );
+ }
+
+
+ public boolean isUpToDate()
+ {
+ if ( newEnityMode )
+ {
+ return UiUtils.isFieldUpToDate( userIdTextField, null );
+ }
+ return UiUtils.isFieldUpToDate( userIdTextField, user.getId() );
+ }
+
+
+ public void focusGained( FocusEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void focusLost( FocusEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyTyped( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyPressed( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyReleased( KeyEvent e )
+ {
+ checkStatus();
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/UserPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,744 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.safehaus.triplesec.admin.swing;
+
+
+import javax.swing.JPanel;
+import java.awt.BorderLayout;
+
+import javax.swing.JOptionPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JButton;
+import javax.swing.JTree;
+
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.JTextArea;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+
+import org.safehaus.triplesec.admin.DataAccessException;
+import org.safehaus.triplesec.admin.ExternalUser;
+import org.safehaus.triplesec.admin.ExternalUserModifier;
+import org.safehaus.triplesec.admin.HauskeysUser;
+import org.safehaus.triplesec.admin.HauskeysUserModifier;
+import org.safehaus.triplesec.admin.LocalUser;
+import org.safehaus.triplesec.admin.LocalUserModifier;
+import org.safehaus.triplesec.admin.User;
+import javax.swing.JLabel;
+import javax.swing.JCheckBox;
+
+
+public class UserPanel extends JPanel implements StatusListener, StatusObject, KeyListener, FocusListener
+{
+ private static final long serialVersionUID = 1L;
+
+ private JPanel mainPanel = null;
+ private JPanel buttonPanel = null;
+ private JButton revertButton = null;
+ private JButton saveButton = null;
+ private JPanel aboveButtonPanel = null;
+ private UserNorthPanel userNorthPanel = null;
+ private JTabbedPane centerTabbedPane = null;
+ private JPanel southPanel = null;
+ private JTextArea descriptionTextArea = null;
+ private JButton deleteButton = null;
+ private User user;
+ private DefaultMutableTreeNode node;
+ private JTree tree;
+ private ProvisioningPanel provisioningPanel;
+ private HotpSettingsPanel hotpSettingsPanel;
+ private UserInfoPanel userInfoPanel;
+ private GeneralPanel generalPanel;
+ private ExternalLinkPanel externalLinkPanel;
+ private UserDependentsPanel userDependentsPanel;
+ private boolean lastStatusState = true;
+ private StatusListener listener = this;
+ private AdminFrame adminFrame = null;
+
+ private JLabel jLabel = null;
+
+ private JCheckBox disabledCheckBox = null;
+
+ /**
+ * This is the default constructor
+ */
+ public UserPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void setAdminFrame( AdminFrame adminFrame )
+ {
+ this.adminFrame = adminFrame;
+ this.provisioningPanel.setAdminFrame( adminFrame );
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ GridBagConstraints gridBagConstraints = new GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.weightx = 1.0D;
+ gridBagConstraints.weighty = 1.0D;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.insets = new java.awt.Insets( 10, 10, 10, 10 );
+ gridBagConstraints.gridy = 0;
+ this.setLayout( new GridBagLayout() );
+ this.setSize( 550, 417 );
+ this.setBorder( javax.swing.BorderFactory.createTitledBorder( null, "Existing User",
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
+ null, null ) );
+ this.add( getMainPanel(), gridBagConstraints );
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getMainPanel()
+ {
+ if ( mainPanel == null )
+ {
+ mainPanel = new JPanel();
+ mainPanel.setLayout( new BorderLayout() );
+ mainPanel.add( getButtonPanel(), java.awt.BorderLayout.SOUTH );
+ mainPanel.add( getAboveButtonPanel(), java.awt.BorderLayout.CENTER );
+ }
+ return mainPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getButtonPanel()
+ {
+ if ( buttonPanel == null )
+ {
+ buttonPanel = new JPanel();
+ buttonPanel.setBorder( javax.swing.BorderFactory.createEmptyBorder( 0, 0, 0, 0 ) );
+ buttonPanel.add( getDeleteButton(), null );
+ buttonPanel.add( getRevertButton(), null );
+ buttonPanel.add( getSaveButton(), null );
+ }
+ return buttonPanel;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getRevertButton()
+ {
+ if ( revertButton == null )
+ {
+ revertButton = new JButton();
+ revertButton.setText( "Revert" );
+ revertButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ setUserFields();
+ }
+ } );
+ }
+ return revertButton;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getSaveButton()
+ {
+ if ( saveButton == null )
+ {
+ saveButton = new JButton();
+ saveButton.setText( "Save" );
+ saveButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ saveAction();
+ }
+ } );
+ }
+ return saveButton;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getAboveButtonPanel()
+ {
+ if ( aboveButtonPanel == null )
+ {
+ aboveButtonPanel = new JPanel();
+ aboveButtonPanel.setLayout( new BorderLayout() );
+ aboveButtonPanel.add( getUserNorthPanel(), java.awt.BorderLayout.NORTH );
+ aboveButtonPanel.add( getCenterTabbedPane(), java.awt.BorderLayout.CENTER );
+ aboveButtonPanel.add( getSouthPanel(), java.awt.BorderLayout.SOUTH );
+ }
+ return aboveButtonPanel;
+ }
+
+
+ /**
+ * This method initializes jTabbedPane
+ *
+ * @return javax.swing.JTabbedPane
+ */
+ private JTabbedPane getCenterTabbedPane()
+ {
+ if ( centerTabbedPane == null )
+ {
+ centerTabbedPane = new JTabbedPane();
+ centerTabbedPane.addTab( "General", null, getGeneralPanel(), null );
+ centerTabbedPane.addTab( "External Link", null, getExternalLinkPanel(), null );
+ centerTabbedPane.addTab( "User Info", null, getUserInfoPanel(), null );
+ centerTabbedPane.addTab( "Provisioning", null, getProvisioningPanel(), null );
+ centerTabbedPane.addTab( "HOTP Settings", null, getHotpSettingsPanel(), null );
+ centerTabbedPane.addTab( "Dependents", null, getUserDependentsPanel(), null );
+ }
+ return centerTabbedPane;
+ }
+
+
+ public UserDependentsPanel getUserDependentsPanel()
+ {
+ if ( userDependentsPanel == null )
+ {
+ userDependentsPanel = new UserDependentsPanel();
+ }
+ return userDependentsPanel;
+ }
+
+
+ public UserNorthPanel getUserNorthPanel()
+ {
+ if ( userNorthPanel == null )
+ {
+ userNorthPanel = new UserNorthPanel();
+ userNorthPanel.setStatusListener( this );
+ }
+
+ return userNorthPanel;
+ }
+
+
+ public GeneralPanel getGeneralPanel()
+ {
+ if ( generalPanel == null )
+ {
+ generalPanel = new GeneralPanel();
+
+ GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
+ gridBagConstraints2.gridx = 1;
+ gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints2.gridy = 5;
+ GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+ gridBagConstraints1.gridx = 0;
+ gridBagConstraints1.insets = new java.awt.Insets(0,0,0,5);
+ gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints1.gridy = 5;
+ jLabel = new JLabel();
+ jLabel.setText("Disabled:");
+ jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ generalPanel.add(jLabel, gridBagConstraints1);
+ generalPanel.add(getJCheckBox(), gridBagConstraints2);
+
+ }
+
+ return generalPanel;
+ }
+
+
+ public ExternalLinkPanel getExternalLinkPanel()
+ {
+ if ( externalLinkPanel == null )
+ {
+ externalLinkPanel = new ExternalLinkPanel();
+ externalLinkPanel.setStatusListener( this );
+ }
+
+ return externalLinkPanel;
+ }
+
+
+ public ProvisioningPanel getProvisioningPanel()
+ {
+ if ( provisioningPanel == null )
+ {
+ provisioningPanel = new ProvisioningPanel();
+ provisioningPanel.setAdminFrame( this.adminFrame );
+ provisioningPanel.setStatusListener( this );
+ }
+
+ return provisioningPanel;
+ }
+
+
+ public UserInfoPanel getUserInfoPanel()
+ {
+ if ( userInfoPanel == null )
+ {
+ userInfoPanel = new UserInfoPanel();
+ userInfoPanel.setStatusListener( this );
+ }
+
+ return userInfoPanel;
+ }
+
+
+ public HotpSettingsPanel getHotpSettingsPanel()
+ {
+ if ( hotpSettingsPanel == null )
+ {
+ hotpSettingsPanel = new HotpSettingsPanel();
+ hotpSettingsPanel.setStatusListener( this );
+ }
+
+ return hotpSettingsPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getSouthPanel()
+ {
+ if ( southPanel == null )
+ {
+ southPanel = new JPanel();
+ southPanel.setLayout( new BorderLayout() );
+ southPanel.setBorder( javax.swing.BorderFactory.createTitledBorder( null, "Description",
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+ javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null ) );
+ southPanel.add( getDescriptionTextArea(), java.awt.BorderLayout.NORTH );
+ }
+ return southPanel;
+ }
+
+
+ /**
+ * This method initializes jTextArea
+ *
+ * @return javax.swing.JTextArea
+ */
+ private JTextArea getDescriptionTextArea()
+ {
+ if ( descriptionTextArea == null )
+ {
+ descriptionTextArea = new JTextArea();
+ descriptionTextArea.setRows(3);
+ descriptionTextArea.addFocusListener( this );
+ descriptionTextArea.addKeyListener( this );
+ }
+ return descriptionTextArea;
+ }
+
+
+ public void checkStatus()
+ {
+ boolean upToDate = isUpToDate();
+ if ( listener != null && lastStatusState != upToDate )
+ {
+ listener.statusChanged( UserPanel.this );
+ lastStatusState = upToDate;
+ }
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getDeleteButton()
+ {
+ if ( deleteButton == null )
+ {
+ deleteButton = new JButton();
+ deleteButton.setText( "Delete" );
+ deleteButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ if ( userDependentsPanel.hasDependents() )
+ {
+ String msg = UiUtils.wrap( "This user has dependent objects. Remove all " +
+ "dependency relationships before attempting to delete this user.", 79 );
+ JOptionPane.showMessageDialog( UserPanel.this, msg, "User has dependents!",
+ JOptionPane.INFORMATION_MESSAGE );
+ return;
+ }
+
+ try
+ {
+ if ( user instanceof ExternalUser )
+ {
+ ( ( ExternalUser ) user ).modifier().delete();
+ }
+ else if ( user instanceof LocalUser )
+ {
+ ( ( LocalUser ) user ).modifier().delete();
+ }
+ else if ( user instanceof HauskeysUser )
+ {
+ ( ( HauskeysUser ) user ).modifier().delete();
+ }
+ else
+ {
+ throw new IllegalStateException( "Unknown user type: " + user.getClass() );
+ }
+
+ DefaultMutableTreeNode parentNode = ( DefaultMutableTreeNode ) node.getParent();
+ DefaultTreeModel treeModel = ( DefaultTreeModel ) tree.getModel();
+ treeModel.removeNodeFromParent( node );
+ TreePath path = new TreePath( parentNode.getPath() );
+ tree.setSelectionPaths( new TreePath[]
+ { path } );
+ }
+ catch ( DataAccessException e1 )
+ {
+ String msg = UiUtils.wrap( "Failed to delete user: " + e1.getMessage(), 79 );
+ JOptionPane.showMessageDialog( UserPanel.this, msg, "Delete Failed", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ } );
+ }
+ return deleteButton;
+ }
+
+
+ private void setUserFields()
+ {
+ generalPanel.setFields( user );
+ disabledCheckBox.setSelected( user.isDisabled() );
+ userNorthPanel.setFields( user );
+
+ if ( user instanceof ExternalUser )
+ {
+ ExternalUser externalUser = ( ExternalUser ) user;
+ centerTabbedPane.addTab( "External Link", null, externalLinkPanel, null );
+ centerTabbedPane.remove( userInfoPanel );
+ centerTabbedPane.remove( provisioningPanel );
+ centerTabbedPane.remove( hotpSettingsPanel );
+ externalLinkPanel.setFields( externalUser );
+ }
+ else if ( user instanceof LocalUser )
+ {
+ LocalUser localUser = ( LocalUser ) user;
+ centerTabbedPane.remove( externalLinkPanel );
+ centerTabbedPane.remove( provisioningPanel );
+ centerTabbedPane.remove( hotpSettingsPanel );
+ centerTabbedPane.remove( userInfoPanel );
+ centerTabbedPane.addTab( "User Info", null, userInfoPanel, null );
+ userInfoPanel.setFields( localUser, "not implemented" );
+ }
+ else if ( user instanceof HauskeysUser )
+ {
+ HauskeysUser hauskeysUser = ( HauskeysUser ) user;
+ centerTabbedPane.remove( externalLinkPanel );
+ centerTabbedPane.remove( userInfoPanel );
+ centerTabbedPane.addTab( "User Info", null, userInfoPanel, null );
+ centerTabbedPane.addTab( "Provisioning", null, provisioningPanel, null );
+ centerTabbedPane.addTab( "HOTP Settings", null, hotpSettingsPanel, null );
+ userInfoPanel.setFields( hauskeysUser );
+ hotpSettingsPanel.setFields( hauskeysUser );
+ provisioningPanel.setFields( hauskeysUser );
+ }
+
+ descriptionTextArea.setText( user.getDescription() );
+ }
+
+
+ public void setTree( JTree tree )
+ {
+ this.tree = tree;
+ }
+
+
+ public void setTreeNode( DefaultMutableTreeNode node )
+ {
+ this.node = node;
+ this.user = ( User ) node.getUserObject();
+ setUserFields();
+ this.userDependentsPanel.setSelectedNode( node, tree );
+ }
+
+
+ public DefaultMutableTreeNode getTreeNode()
+ {
+ return node;
+ }
+
+
+ public void saveAction( HauskeysUser hauskeysUser )
+ {
+ HauskeysUserModifier modifier = hauskeysUser.modifier().setDescription( descriptionTextArea.getText() );
+ modifier.setDisabled( disabledCheckBox.isSelected() );
+ userInfoPanel.alterModifier( modifier );
+
+ if ( ! userInfoPanel.isPasswordOk() )
+ {
+ JOptionPane.showMessageDialog( this, "Passwords are not equal or are invalid. Save aborted!" );
+ return;
+ }
+
+ hotpSettingsPanel.alterModifier( modifier );
+ provisioningPanel.alterModifier( modifier );
+
+ if ( modifier.isUpdateNeeded() )
+ {
+ try
+ {
+ user = modifier.modify();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this, UiUtils.wrap( "Failed to modify user:\n" + e.getMessage(), 79 ),
+ "User modification failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ node.setUserObject( user );
+ }
+
+ if ( !user.getId().equals( userNorthPanel.getId() ) )
+ {
+ try
+ {
+ user = hauskeysUser.modifier().rename( userNorthPanel.getId() );
+ ( ( DefaultTreeModel ) tree.getModel() ).valueForPathChanged( new TreePath( node.getPath() ), user );
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this, UiUtils.wrap( "Failed to rename user:\n" + e.getMessage(), 79 ),
+ "User rename failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+
+ node.setUserObject( user );
+ setUserFields();
+ }
+
+
+ public void saveAction( LocalUser localUser )
+ {
+ LocalUserModifier modifier = localUser.modifier().setDescription( descriptionTextArea.getText() );
+ modifier.setDisabled( disabledCheckBox.isSelected() );
+ userInfoPanel.alterModifier( modifier );
+
+ if ( ! userInfoPanel.isPasswordOk() )
+ {
+ JOptionPane.showMessageDialog( this, "Passwords are not equal or are invalid. Save aborted!" );
+ return;
+ }
+
+ if ( modifier.isUpdateNeeded() )
+ {
+ try
+ {
+ user = modifier.modify();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this, UiUtils.wrap( "Failed to modify user:\n" + e.getMessage(), 79 ),
+ "User modification failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ node.setUserObject( user );
+ }
+
+ if ( !user.getId().equals( userNorthPanel.getId() ) )
+ {
+ try
+ {
+ user = localUser.modifier().rename( userNorthPanel.getId() );
+ ( ( DefaultTreeModel ) tree.getModel() ).valueForPathChanged( new TreePath( node.getPath() ), user );
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this, UiUtils.wrap( "Failed to rename user:\n" + e.getMessage(), 79 ),
+ "User rename failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+
+ node.setUserObject( user );
+ setUserFields();
+ }
+
+
+ public void saveAction( ExternalUser externalUser )
+ {
+ ExternalUserModifier modifier = externalUser.modifier().setDescription( descriptionTextArea.getText() );
+ modifier.setDisabled( disabledCheckBox.isSelected() );
+ externalLinkPanel.alterModifier( modifier );
+ if ( modifier.isUpdateNeeded() )
+ {
+ try
+ {
+ user = modifier.modify();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this, UiUtils.wrap( "Failed to modify user:\n" + e.getMessage(), 79 ),
+ "User modification failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ node.setUserObject( user );
+ }
+
+ if ( !user.getId().equals( userNorthPanel.getId() ) )
+ {
+ try
+ {
+ user = externalUser.modifier().rename( userNorthPanel.getId() );
+ ( ( DefaultTreeModel ) tree.getModel() ).valueForPathChanged( new TreePath( node.getPath() ), user );
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this, UiUtils.wrap( "Failed to rename user:\n" + e.getMessage(), 79 ),
+ "User rename failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+
+ node.setUserObject( user );
+ setUserFields();
+ }
+
+
+ public void saveAction()
+ {
+ if ( user instanceof ExternalUser )
+ {
+ saveAction( ( ExternalUser ) user );
+ }
+ else if ( user instanceof LocalUser )
+ {
+ saveAction( ( LocalUser ) user );
+ }
+ else if ( user instanceof HauskeysUser )
+ {
+ saveAction( ( HauskeysUser ) user );
+ }
+ else
+ {
+ throw new IllegalStateException( "Unknown user type: " + user.getClass() );
+ }
+ }
+
+
+ public void statusChanged( StatusObject obj )
+ {
+ if ( ! obj.isUpToDate() )
+ {
+// userNorthPanel.setStatus( Color.RED, "Save needed!" );
+ return;
+ }
+
+ if ( isUpToDate() && userNorthPanel.isUpToDate() && userInfoPanel.isUpToDate()
+ && provisioningPanel.isUpToDate() && hotpSettingsPanel.isUpToDate() )
+ {
+// userNorthPanel.setStatus( Color.GREEN, "Up to date!" );
+ }
+ }
+
+
+ public boolean isUpToDate()
+ {
+ return UiUtils.isFieldUpToDate( descriptionTextArea, user.getDescription() );
+ }
+
+
+ public void keyTyped( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyPressed( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void keyReleased( KeyEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void focusGained( FocusEvent e )
+ {
+ checkStatus();
+ }
+
+
+ public void focusLost( FocusEvent e )
+ {
+ checkStatus();
+ }
+
+
+ /**
+ * This method initializes jCheckBox
+ *
+ * @return javax.swing.JCheckBox
+ */
+ private JCheckBox getJCheckBox()
+ {
+ if ( disabledCheckBox == null )
+ {
+ disabledCheckBox = new JCheckBox();
+ }
+ return disabledCheckBox;
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/manifest/MANIFEST.MF
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/manifest/MANIFEST.MF?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/manifest/MANIFEST.MF (added)
+++ directory/trunks/triplesec/swing-admin/src/main/manifest/MANIFEST.MF Tue Dec 12 07:23:31 2006
@@ -0,0 +1,47 @@
+Manifest-Version: 1.0
+Main-Class: org.safehaus.triplesec.admin.swing.AdminFrame
+Class-Path: logger.jar daemon.jar bootstrapper.jar
+ ../lib/antlr-2.7.2.jar
+ ../lib/apacheds-core-1.0-RC3.jar
+ ../lib/apacheds-core-shared-1.0-RC3.jar
+ ../lib/apacheds-kerberos-shared-1.0-RC3.jar
+ ../lib/apacheds-protocol-changepw-1.0-RC3.jar
+ ../lib/apacheds-protocol-shared-1.0-RC3.jar
+ ../lib/apacheds-protocol-kerberos-1.0-RC3.jar
+ ../lib/apacheds-protocol-ldap-1.0-RC3.jar
+ ../lib/apacheds-protocol-ntp-1.0-RC3.jar
+ ../lib/apacheds-server-jndi-1.0-RC3.jar
+ ../lib/apacheds-server-main-1.0-RC3.jar
+ ../lib/tools/apacheds-server-tools-1.0-RC3.jar
+ ../lib/tools/commons-cli-1.0.jar
+ ../lib/commons-collections-3.1.jar
+ ../lib/commons-lang-2.0.jar
+ ../lib/commons-logging-1.0.4.jar
+ ../lib/commons-httpclient-2.0.2.jar
+ ../lib/activation-1.0.2.jar
+ ../lib/mail-1.3.2.jar
+ ../lib/jdbm-1.0.jar
+ ../lib/lcrypto-jdk14-131.jar
+ ../lib/mina-core-0.9.4.jar
+ ../lib/mina-filter-codec-asn1-0.9.4.jar
+ ../lib/mina-filter-ssl-0.9.4.jar
+ ../lib/shared-asn1-0.9.5.1.jar
+ ../lib/shared-ldap-0.9.5.1.jar
+ ../lib/spring-beans-1.2.6.jar
+ ../lib/spring-context-1.2.6.jar
+ ../lib/spring-core-1.2.6.jar
+ ../guardian/triplesec-guardian-api-0.7.1.jar
+ ../guardian/triplesec-guardian-ldap-0.7.1.jar
+ ../guardian/triplesec-jaas-0.7.1.jar
+ ../lib/triplesec-crypto-0.7.1.jar
+ ../lib/triplesec-main-0.7.1.jar
+ ../lib/triplesec-otp-0.7.1.jar
+ ../lib/triplesec-profile-0.7.1.jar
+ ../lib/triplesec-store-0.7.1.jar
+ ../lib/triplesec-testdata-0.7.1.jar
+ ../lib/triplesec-verifier-0.7.1.jar
+ ../lib/triplesec-configuration-0.7.1.jar
+ ../lib/triplesec-admin-api-0.7.1.jar
+Specification-Title: triplesec-swing-admin
+Specification-Version: 1.0
+
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application2_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application2_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application2_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_48x48.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_48x48.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_48x48.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_container_closed_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_container_closed_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_container_closed_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_container_opened_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_container_opened_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/application_container_opened_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/connect_22x22.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/connect_22x22.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/connect_22x22.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/container_closed_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/container_closed_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/container_closed_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/container_opened_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/container_opened_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/container_opened_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/disconnect_22x22.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/disconnect_22x22.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/disconnect_22x22.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/error_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/error_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/error_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/error_32x32.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/error_32x32.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/error_32x32.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/external_user_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/external_user_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/external_user_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/external_user_48x48.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/external_user_48x48.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/external_user_48x48.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_22x22.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_22x22.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_22x22.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_32x32.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_32x32.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileclose_32x32.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_22x22.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_22x22.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_22x22.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_32x32.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_32x32.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/fileopen_32x32.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_22x22.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_22x22.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_22x22.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_32x32.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_32x32.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/filesave_32x32.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_48x48.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_48x48.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_48x48.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_container_closed_16x16.png
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_container_closed_16x16.png?view=auto&rev=486187
==============================================================================
Binary file - no diff available.
Propchange: directory/trunks/triplesec/swing-admin/src/main/resources/org/safehaus/triplesec/admin/swing/group_container_closed_16x16.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream