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 [28/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/HotpSettingsPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/HotpSettingsPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/HotpSettingsPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/HotpSettingsPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,321 @@
+/*
+ * 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;
+
+
+public class HotpSettingsPanel extends JPanel implements StatusObject, KeyListener, FocusListener
+{
+ private static final long serialVersionUID = 1L;
+ private JPasswordField secretPasswordField = null;
+ private JTextField movingFactorTextField = null;
+ private JTextField activationKeyTextField = null;
+ private JTextField failuresInEpochTextField = null;
+ private HauskeysUser 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 HotpSettingsPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void setNewEntityMode( boolean newEntityMode )
+ {
+ this.newEntityMode = newEntityMode;
+ }
+
+
+ public void alterModifier( Object unkownModifier )
+ {
+ if ( unkownModifier instanceof HauskeysUserModifier )
+ {
+ HauskeysUserModifier modifier = ( HauskeysUserModifier ) unkownModifier;
+ modifier.setSecret( new String( secretPasswordField.getPassword() ) );
+ modifier.setMovingFactor( movingFactorTextField.getText() );
+ modifier.setActivationKey( activationKeyTextField.getText() );
+ modifier.setFailuresInEpoch( failuresInEpochTextField.getText() );
+ }
+ }
+
+
+ public void setFields( HauskeysUser user )
+ {
+ this.user = user;
+ this.lastStatusState = true;
+ secretPasswordField.setText( user.getSecret() );
+ movingFactorTextField.setText( user.getMovingFactor() );
+ activationKeyTextField.setText( user.getActivationKey() );
+ failuresInEpochTextField.setText( user.getFailuresInEpoch() );
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize(517, 241);
+ GridBagConstraints gridBagConstraints52 = new GridBagConstraints();
+ gridBagConstraints52.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints52.gridy = 3;
+ gridBagConstraints52.weightx = 1.0;
+ gridBagConstraints52.insets = new java.awt.Insets( 0, 0, 0, 5 );
+ gridBagConstraints52.gridx = 1;
+ GridBagConstraints gridBagConstraints51 = new GridBagConstraints();
+ gridBagConstraints51.gridx = 0;
+ gridBagConstraints51.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints51.insets = new java.awt.Insets(0,0,0,5);
+ gridBagConstraints51.gridy = 3;
+ JLabel jLabel24 = new JLabel();
+ jLabel24.setText( "Failures In Epoch:" );
+ jLabel24.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints50 = new GridBagConstraints();
+ gridBagConstraints50.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints50.gridy = 2;
+ gridBagConstraints50.weightx = 1.0;
+ gridBagConstraints50.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints50.gridx = 1;
+ GridBagConstraints gridBagConstraints49 = new GridBagConstraints();
+ gridBagConstraints49.gridx = 0;
+ gridBagConstraints49.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints49.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints49.gridy = 2;
+ JLabel jLabel23 = new JLabel();
+ jLabel23.setText( "Activation Key:" );
+ jLabel23.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints48 = new GridBagConstraints();
+ gridBagConstraints48.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints48.gridy = 1;
+ gridBagConstraints48.weightx = 1.0;
+ gridBagConstraints48.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints48.gridx = 1;
+ GridBagConstraints gridBagConstraints47 = new GridBagConstraints();
+ gridBagConstraints47.gridx = 0;
+ gridBagConstraints47.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints47.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints47.gridy = 1;
+ JLabel jLabel22 = new JLabel();
+ jLabel22.setText( "Moving Factor:" );
+ jLabel22.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints46 = new GridBagConstraints();
+ gridBagConstraints46.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints46.gridy = 0;
+ gridBagConstraints46.weightx = 1.0;
+ gridBagConstraints46.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints46.gridx = 1;
+ GridBagConstraints gridBagConstraints45 = new GridBagConstraints();
+ gridBagConstraints45.gridx = 0;
+ gridBagConstraints45.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints45.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints45.gridy = 0;
+ JLabel jLabel21 = new JLabel();
+ jLabel21.setText( "Secret:" );
+ jLabel21.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ setLayout( new GridBagLayout() );
+ add( jLabel21, gridBagConstraints45 );
+ add( getSecretPasswordField(), gridBagConstraints46 );
+ add( jLabel22, gridBagConstraints47 );
+ add( getMovingFactorTextField(), gridBagConstraints48 );
+ add( jLabel23, gridBagConstraints49 );
+ add( getActivationKeyTextField(), gridBagConstraints50 );
+ this.add(jLabel24, gridBagConstraints51);
+ add( getFailuresInEpochTextField(), gridBagConstraints52 );
+ }
+
+
+ /**
+ * This method initializes jPasswordField
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getSecretPasswordField()
+ {
+ if ( secretPasswordField == null )
+ {
+ secretPasswordField = new JPasswordField();
+ secretPasswordField.addFocusListener( this );
+ secretPasswordField.addKeyListener( this );
+ }
+ return secretPasswordField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getMovingFactorTextField()
+ {
+ if ( movingFactorTextField == null )
+ {
+ movingFactorTextField = new JTextField();
+ movingFactorTextField.addFocusListener( this );
+ movingFactorTextField.addKeyListener( this );
+ }
+ return movingFactorTextField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getActivationKeyTextField()
+ {
+ if ( activationKeyTextField == null )
+ {
+ activationKeyTextField = new JTextField();
+ activationKeyTextField.addFocusListener( this );
+ activationKeyTextField.addKeyListener( this );
+ }
+ return activationKeyTextField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getFailuresInEpochTextField()
+ {
+ if ( failuresInEpochTextField == null )
+ {
+ failuresInEpochTextField = new JTextField();
+ failuresInEpochTextField.addFocusListener( this );
+ failuresInEpochTextField.addKeyListener( this );
+ }
+ return failuresInEpochTextField;
+ }
+
+
+ public String getActivationKey()
+ {
+ return activationKeyTextField.getText();
+ }
+
+
+ public String getFailuresInEpoch()
+ {
+ return failuresInEpochTextField.getText();
+ }
+
+
+ public String getSecret()
+ {
+ return new String( secretPasswordField.getPassword() );
+ }
+
+
+ public String getMovingFactor()
+ {
+ return movingFactorTextField.getText();
+ }
+
+
+ public boolean isUpToDate()
+ {
+ if ( newEntityMode )
+ {
+ return UiUtils.isFieldUpToDate( this.activationKeyTextField, null ) &&
+ UiUtils.isFieldUpToDate( this.failuresInEpochTextField, null ) &&
+ UiUtils.isFieldUpToDate( this.movingFactorTextField, null ) &&
+ UiUtils.isFieldUpToDate( this.secretPasswordField, null );
+ }
+ return UiUtils.isFieldUpToDate( this.activationKeyTextField, user.getActivationKey() ) &&
+ UiUtils.isFieldUpToDate( this.failuresInEpochTextField, user.getFailuresInEpoch() ) &&
+ UiUtils.isFieldUpToDate( this.movingFactorTextField, user.getMovingFactor() ) &&
+ UiUtils.isFieldUpToDate( this.secretPasswordField, user.getSecret() );
+ }
+
+
+ public void setStatusListener( StatusListener listener )
+ {
+ this.listener = listener;
+ }
+
+
+ private void checkStatus()
+ {
+ boolean upToDate = isUpToDate();
+ if ( listener != null && lastStatusState != upToDate )
+ {
+ listener.statusChanged( HotpSettingsPanel.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/LeftTreeCellRenderer.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeCellRenderer.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeCellRenderer.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeCellRenderer.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,427 @@
+/*
+ * 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.Component;
+
+import javax.swing.ImageIcon;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import org.safehaus.triplesec.admin.Application;
+import org.safehaus.triplesec.admin.ExternalUser;
+import org.safehaus.triplesec.admin.Group;
+import org.safehaus.triplesec.admin.HauskeysUser;
+import org.safehaus.triplesec.admin.LocalUser;
+import org.safehaus.triplesec.admin.Permission;
+import org.safehaus.triplesec.admin.Profile;
+import org.safehaus.triplesec.admin.Role;
+
+
+/**
+ * The left tree navigation cell renderer.
+ *
+ * @author <a href="mailto:akarasulu@safehaus.org">Alex Karasulu</a>
+ * @version $Rev$
+ */
+public class LeftTreeCellRenderer extends DefaultTreeCellRenderer
+{
+ private static final long serialVersionUID = 1L;
+
+ // -----------------------------------------------------------------------
+ // Leaf node icons
+ // -----------------------------------------------------------------------
+
+ private ImageIcon rootIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/home2_16x16.png" ) );
+
+ private ImageIcon localUserIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/local_user_16x16.png" ) );
+ private ImageIcon externalUserIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/external_user_16x16.png" ) );
+ private ImageIcon hauskeysUserIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/hauskeys_user_16x16.png" ) );
+
+ private ImageIcon userContainerClosedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/user_container_closed_16x16.png" ) );
+ private ImageIcon userContainerOpenedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/user_container_opened_16x16.png" ) );
+
+ private ImageIcon profileIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/profile2_16x16.png" ) );
+ private ImageIcon profileContainerClosedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/profile_container_closed_16x16.png" ) );
+ private ImageIcon profileContainerOpenedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/profile_container_opened_16x16.png" ) );
+
+ private ImageIcon permissionIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/permission2_16x16.png" ) );
+ private ImageIcon permissionContainerClosedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/permission_container_closed_16x16.png" ) );
+ private ImageIcon permissionContainerOpenedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/permission_container_opened_16x16.png" ) );
+
+ private ImageIcon applicationIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/application_16x16.png" ) );
+ private ImageIcon applicationContainerClosedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/application_container_closed_16x16.png" ) );
+ private ImageIcon applicationContainerOpenedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/application_container_opened_16x16.png" ) );
+
+ private ImageIcon roleIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/role_16x16.png" ) );
+ private ImageIcon roleContainerClosedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/role_container_closed_16x16.png" ) );
+ private ImageIcon roleContainerOpenedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/role_container_opened_16x16.png" ) );
+
+ private ImageIcon groupIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/group_16x16.png" ) );
+ private ImageIcon groupContainerClosedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/group_container_closed_16x16.png" ) );
+ private ImageIcon groupContainerOpenedIcon = new ImageIcon(
+ getClass().getResource( "/org/safehaus/triplesec/admin/swing/group_container_opened_16x16.png" ) );
+
+ private DefaultMutableTreeNode rootNode;
+
+ // -----------------------------------------------------------------------
+ // Branch node icons
+ // -----------------------------------------------------------------------
+
+
+ public LeftTreeCellRenderer ( DefaultMutableTreeNode rootNode )
+ {
+ this.rootNode = rootNode;
+ }
+
+
+ public Component getTreeCellRendererComponent( JTree tree, Object value, boolean sel, boolean expanded,
+ boolean leaf, int row, boolean hasFocus )
+ {
+ super.getTreeCellRendererComponent( tree, value, sel, expanded, leaf, row, hasFocus );
+
+ if ( isRoot( value ) )
+ {
+ setIcon( rootIcon );
+ }
+ else if ( isContainer( "Permissions", value ) )
+ {
+ if ( expanded )
+ {
+ setIcon( permissionContainerOpenedIcon );
+ }
+ else
+ {
+ setIcon( permissionContainerClosedIcon );
+ }
+ }
+ else if ( isContainer( "Roles", value ) )
+ {
+ if ( expanded )
+ {
+ setIcon( roleContainerOpenedIcon );
+ }
+ else
+ {
+ setIcon( roleContainerClosedIcon );
+ }
+ }
+ else if ( isContainer( "Profiles", value ) )
+ {
+ if ( expanded )
+ {
+ setIcon( profileContainerOpenedIcon );
+ }
+ else
+ {
+ setIcon( profileContainerClosedIcon );
+ }
+ }
+ else if ( isContainer( "Users", value ) )
+ {
+ if ( expanded )
+ {
+ setIcon( userContainerOpenedIcon );
+ }
+ else
+ {
+ setIcon( userContainerClosedIcon );
+ }
+ }
+ else if ( isContainer( "Groups", value ) )
+ {
+ if ( expanded )
+ {
+ setIcon( groupContainerOpenedIcon );
+ }
+ else
+ {
+ setIcon( groupContainerClosedIcon );
+ }
+ }
+ else if ( isContainer( "Applications", value ) )
+ {
+ if ( expanded )
+ {
+ setIcon( applicationContainerOpenedIcon );
+ }
+ else
+ {
+ setIcon( applicationContainerClosedIcon );
+ }
+ }
+ else if ( leaf && isPermission( value ) )
+ {
+ setIcon( permissionIcon );
+ Permission permission = getPermission( value );
+ if ( permission.getDescription() != null )
+ {
+ setToolTipText( permission.getDescription() );
+ }
+ }
+ else if ( isApplication( value ) )
+ {
+ setIcon( applicationIcon );
+ Application app = getApplication( value );
+ if ( app.getDescription() != null )
+ {
+ setToolTipText( app.getDescription() );
+ }
+ }
+ else if ( leaf && isRole( value ) )
+ {
+ setIcon( roleIcon );
+ Role role = getRole( value );
+ if ( role.getDescription() != null )
+ {
+ setToolTipText( role.getDescription() );
+ }
+ }
+ else if ( leaf && isProfile( value ) )
+ {
+ setIcon( profileIcon );
+ Profile profile = getProfile( value );
+ if ( profile.getDescription() != null )
+ {
+ setToolTipText( profile.getDescription() );
+ }
+ }
+ else if ( leaf && isGroup( value ) )
+ {
+ setIcon( groupIcon );
+ Group group = getGroup( value );
+ if ( group.getName() != null )
+ {
+ setToolTipText( group.getName() );
+ }
+ }
+ else if ( leaf && isLocalUser( value ) )
+ {
+ setIcon( localUserIcon );
+ LocalUser user = getLocalUser( value );
+ setToolTipText( "Local User: " + user.getId() );
+ }
+ else if ( leaf && isHauskeysUser( value ) )
+ {
+ setIcon( hauskeysUserIcon );
+ HauskeysUser user = getHauskeysUser( value );
+ setToolTipText( "Hauskeys User: " + user.getId() );
+ }
+ else if ( leaf && isExternalUser( value ) )
+ {
+ setIcon( externalUserIcon );
+ ExternalUser user = getExternalUser( value );
+ setToolTipText( "External User: " + user.getId() + " -> " + user.getReferral() );
+ }
+ else
+ {
+ setToolTipText( null ); //no tool tip
+ }
+
+ return this;
+ }
+
+
+ private boolean isContainer( String name, Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ if ( node.getUserObject() instanceof String )
+ {
+ String nodeName = ( String ) node.getUserObject();
+ if ( nodeName.equals( name ) )
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ private boolean isRoot( Object value )
+ {
+ return rootNode.equals( value );
+ }
+
+
+ private Group getGroup( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ return ( Group ) node.getUserObject();
+ }
+
+
+ private boolean isGroup( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ if ( node.getUserObject() instanceof Group )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private Profile getProfile( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ return ( Profile ) node.getUserObject();
+ }
+
+
+ private LocalUser getLocalUser( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ return ( LocalUser ) node.getUserObject();
+ }
+
+
+ private ExternalUser getExternalUser( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ return ( ExternalUser ) node.getUserObject();
+ }
+
+
+ private HauskeysUser getHauskeysUser( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ return ( HauskeysUser ) node.getUserObject();
+ }
+
+
+ private boolean isProfile( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ if ( node.getUserObject() instanceof Profile )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private Role getRole( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ return ( Role ) node.getUserObject();
+ }
+
+
+ private boolean isRole( Object value )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) value;
+ if ( node.getUserObject() instanceof Role )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private boolean isPermission( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ if ( node.getUserObject() instanceof Permission )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private boolean isLocalUser( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ if ( node.getUserObject() instanceof LocalUser )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private boolean isExternalUser( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ if ( node.getUserObject() instanceof ExternalUser )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private boolean isHauskeysUser( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ if ( node.getUserObject() instanceof HauskeysUser )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private Permission getPermission( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ return ( Permission ) node.getUserObject();
+ }
+
+
+ private boolean isApplication( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ if ( node.getUserObject() instanceof Application )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private Application getApplication( Object obj )
+ {
+ DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) obj;
+ return ( Application ) node.getUserObject();
+ }
+}
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeNavigation.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeNavigation.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeNavigation.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LeftTreeNavigation.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,322 @@
+/*
+ * 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.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+
+import org.safehaus.triplesec.admin.Application;
+import org.safehaus.triplesec.admin.DataAccessException;
+import org.safehaus.triplesec.admin.TriplesecAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.awt.GridLayout;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Observable;
+import java.util.Observer;
+
+
+/**
+ * The left tree navigation.
+ *
+ * @author <a href="mailto:akarasulu@safehaus.org">Alex Karasulu</a>
+ * @version $Rev$
+ */
+public class LeftTreeNavigation extends JPanel implements Observer
+{
+ private static final long serialVersionUID = 105910555885359618L;
+ private JScrollPane scrollPane = null;
+ private JTree tree = null;
+ private JPanel rightDetailPanel;
+
+ private DefaultTreeModel model;
+ private DefaultMutableTreeNode rootNode;
+ private DefaultMutableTreeNode groupsNode;
+ private DefaultMutableTreeNode usersNode;
+ private DefaultMutableTreeNode applicationsNode;
+
+
+ /**
+ * This method initializes
+ */
+ public LeftTreeNavigation()
+ {
+ super();
+ initialize();
+ }
+
+
+ /**
+ * This method initializes this
+ */
+ private void initialize()
+ {
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.setRows( 1 );
+ this.setLayout( gridLayout );
+ this.setSize( new java.awt.Dimension( 315, 497 ) );
+ this.add( getJScrollPane(), null );
+ }
+
+
+ /**
+ * This method initializes jScrollPane
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane()
+ {
+ if ( scrollPane == null )
+ {
+ scrollPane = new JScrollPane();
+ scrollPane.setViewportView( getJTree() );
+ }
+ return scrollPane;
+ }
+
+
+ /**
+ * This method initializes jTree
+ *
+ * @return javax.swing.JTree
+ */
+ private JTree getJTree()
+ {
+ if ( tree == null )
+ {
+ tree = new JTree();
+ tree.setShowsRootHandles( true );
+ tree.setRootVisible( true );
+ tree.putClientProperty("JTree.lineStyle", "None");
+ rootNode = new DefaultMutableTreeNode( "disconnected" );
+ tree.setCellRenderer( new LeftTreeCellRenderer( rootNode ) );
+ model = new DefaultTreeModel( rootNode );
+ tree.setModel( model );
+ usersNode = new DefaultMutableTreeNode( "Users" );
+ model.insertNodeInto( usersNode, rootNode, 0 );
+ groupsNode = new DefaultMutableTreeNode( "Groups" );
+ model.insertNodeInto( groupsNode, rootNode, 0 );
+ applicationsNode = new DefaultMutableTreeNode( "Applications" );
+ model.insertNodeInto( applicationsNode, rootNode, 0 );
+ }
+ return tree;
+ }
+
+
+ public void addTreeSelectionListener( TreeSelectionListener listener )
+ {
+ tree.addTreeSelectionListener( listener );
+ }
+
+
+ public JPanel getRightDetailPanel()
+ {
+ return rightDetailPanel;
+ }
+
+
+ public void setRightDetailPanel( JPanel rightDetailPanel )
+ {
+ this.rightDetailPanel = rightDetailPanel;
+ }
+
+
+ String realm = null;
+ TriplesecAdmin admin = null;
+ private static Logger log = LoggerFactory.getLogger( LeftTreeNavigation.class );
+ public void update( Observable o, Object arg )
+ {
+ if ( o instanceof ConnectionManager )
+ {
+ ConnectionManager connMan = ( ConnectionManager ) o;
+ if ( connMan.isConnected() )
+ {
+ admin = connMan.getTriplesecAdmin();
+ realm = connMan.getRealm();
+ try
+ {
+ load();
+ }
+ catch ( DataAccessException e )
+ {
+ log.error( "failed on load", e );
+ JOptionPane.showMessageDialog( this, e.getMessage(), "Failed on load", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ else
+ {
+ realm = null;
+ admin = null;
+ clear();
+ }
+ }
+ }
+
+
+ private void load() throws DataAccessException
+ {
+ if ( admin == null )
+ {
+ throw new IllegalStateException( "Admin should not be null" );
+ }
+
+ rootNode.setUserObject( realm );
+
+ for ( Iterator ii = admin.groupIterator(); ii.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( ii.next() ), groupsNode, 0 );
+ }
+
+ for ( Iterator ii = admin.userIterator(); ii.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( ii.next() ), usersNode, 0 );
+ }
+
+ for ( Iterator ii = admin.applicationIterator(); ii.hasNext(); /**/ )
+ {
+ Application app = ( Application ) ii.next();
+ DefaultMutableTreeNode appNode = new DefaultMutableTreeNode( app );
+ model.insertNodeInto( appNode, applicationsNode, 0 );
+
+ DefaultMutableTreeNode profilesNode = new DefaultMutableTreeNode( "Profiles" );
+ model.insertNodeInto( profilesNode, appNode, 0 );
+ for ( Iterator jj = app.profileIterator(); jj.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( jj.next() ), profilesNode, 0 );
+ }
+
+ DefaultMutableTreeNode rolesNode = new DefaultMutableTreeNode( "Roles" );
+ model.insertNodeInto( rolesNode, appNode, 0 );
+ for ( Iterator jj = app.roleIterator(); jj.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( jj.next() ), rolesNode, 0 );
+ }
+
+ DefaultMutableTreeNode permissionsNode = new DefaultMutableTreeNode( "Permissions" );
+ model.insertNodeInto( permissionsNode, appNode, 0 );
+ for ( Iterator jj = app.permissionIterator(); jj.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( jj.next() ), permissionsNode, 0 );
+ }
+ }
+ }
+
+
+ void reloadApplication( DefaultMutableTreeNode appNode ) throws DataAccessException
+ {
+ // -------------------------------------------------------------------
+ // clear out the old application
+ // -------------------------------------------------------------------
+
+ while( appNode.children().hasMoreElements() )
+ {
+ clear( appNode );
+ }
+
+ // -------------------------------------------------------------------
+ // load the application again
+ // -------------------------------------------------------------------
+
+ Application app = ( Application ) appNode.getUserObject();
+ DefaultMutableTreeNode profilesNode = new DefaultMutableTreeNode( "Profiles" );
+ model.insertNodeInto( profilesNode, appNode, 0 );
+ for ( Iterator jj = app.profileIterator(); jj.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( jj.next() ), profilesNode, 0 );
+ }
+
+ DefaultMutableTreeNode rolesNode = new DefaultMutableTreeNode( "Roles" );
+ model.insertNodeInto( rolesNode, appNode, 0 );
+ for ( Iterator jj = app.roleIterator(); jj.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( jj.next() ), rolesNode, 0 );
+ }
+
+ DefaultMutableTreeNode permissionsNode = new DefaultMutableTreeNode( "Permissions" );
+ model.insertNodeInto( permissionsNode, appNode, 0 );
+ for ( Iterator jj = app.permissionIterator(); jj.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( jj.next() ), permissionsNode, 0 );
+ }
+ }
+
+
+ private void clear()
+ {
+ rootNode.setUserObject( "disconnected" );
+
+ while ( usersNode.children().hasMoreElements() )
+ {
+ clear( usersNode );
+ }
+
+ while ( groupsNode.children().hasMoreElements() )
+ {
+ clear( groupsNode );
+ }
+
+ while ( applicationsNode.children().hasMoreElements() )
+ {
+ clear( applicationsNode );
+ }
+ }
+
+
+ private void clear( DefaultMutableTreeNode node )
+ {
+ for ( Enumeration ii = node.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ clear( child );
+ model.removeNodeFromParent( child );
+ }
+ }
+
+
+ public JTree getTree()
+ {
+ return tree;
+ }
+
+
+ public void reloadGroups() throws DataAccessException
+ {
+ while ( groupsNode.children().hasMoreElements() )
+ {
+ for ( Enumeration ii = groupsNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ model.removeNodeFromParent( ( DefaultMutableTreeNode ) ii.nextElement() );
+ }
+ }
+
+ for ( Iterator ii = admin.groupIterator(); ii.hasNext(); /**/ )
+ {
+ model.insertNodeInto( new DefaultMutableTreeNode( ii.next() ), groupsNode, 0 );
+ }
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LoginDialog.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LoginDialog.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LoginDialog.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/LoginDialog.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,450 @@
+/*
+ * 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 javax.swing.JDialog;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+import javax.swing.JLabel;
+import javax.swing.JPasswordField;
+import javax.swing.JComboBox;
+import javax.swing.JButton;
+
+
+/**
+ * A login dialog used to capture optional 2-factor authentication credentials
+ * as well as standard static password credentials.
+ *
+ * @author <a href="mailto:akarasulu@safehaus.org">Alex Karasulu</a>
+ * @version $Rev$
+ */
+public class LoginDialog extends JDialog
+{
+ private static final long serialVersionUID = -7314707823982966424L;
+
+ private JPanel mainPanel = null;
+ private JPanel inputPanel = null;
+ private JPanel usernamePanel = null;
+ private JLabel usernameLabel = null;
+ private JTextField usernameField = null;
+ private JPanel passwordPanel = null;
+ private JLabel passwordLabel = null;
+ private JPasswordField passwordField = null;
+ private JPanel realmPanel = null;
+ private JLabel realmLabel = null;
+ private JComboBox realmComboBox = null;
+ private JPanel passcodePanel = null;
+ private JLabel passcodeLabel = null;
+ private JPasswordField passcodeField = null;
+ private JPanel buttonPanel = null;
+ private JButton loginButton = null;
+ private JButton cancelButton = null;
+ private ConnectionInfoModifier modifier;
+
+
+ // -----------------------------------------------------------------------
+ // Constructors and main initialization routine
+ // -----------------------------------------------------------------------
+
+
+ /**
+ * This is the default constructor
+ */
+ public LoginDialog()
+ {
+ super();
+ modifier = new ConnectionInfoModifier();
+ setModal( true );
+ initialize();
+ }
+
+
+ public LoginDialog( ConnectionInfoModifier modifier )
+ {
+ super();
+ this.modifier = modifier;
+ setModal( true );
+ initialize();
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize( 325, 257 );
+ //this.setPreferredSize( new java.awt.Dimension( 400, 200 ) );
+ this.setTitle( "Login" );
+ this.setContentPane( getMainPanel() );
+ }
+
+
+ public ConnectionInfo getConnectionInfo()
+ {
+ return modifier.getConnectionInfo();
+ }
+
+
+ // -----------------------------------------------------------------------
+ // Individual subcomponent intialization methods
+ // -----------------------------------------------------------------------
+
+
+ /**
+ * This method initializes jContentPane
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getMainPanel()
+ {
+ if ( mainPanel == null )
+ {
+ GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
+ gridBagConstraints11.gridy = 6;
+ gridBagConstraints11.gridwidth = 1;
+ gridBagConstraints11.gridheight = 2;
+ gridBagConstraints11.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints11.anchor = java.awt.GridBagConstraints.SOUTH;
+ gridBagConstraints11.insets = new java.awt.Insets(12,0,0,0);
+ gridBagConstraints11.gridx = 1;
+ GridBagConstraints gridBagConstraints = new GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.gridwidth = 1;
+ gridBagConstraints.gridheight = 5;
+ gridBagConstraints.gridy = 1;
+ mainPanel = new JPanel();
+ mainPanel.setLayout( new GridBagLayout() );
+ mainPanel.add( getInputPanel(), gridBagConstraints );
+ mainPanel.add(getJPanel15(), gridBagConstraints11);
+ }
+ return mainPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getInputPanel()
+ {
+ if ( inputPanel == null )
+ {
+ GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
+ gridBagConstraints3.gridy = 3;
+ gridBagConstraints3.gridx = 0;
+ GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
+ gridBagConstraints2.gridy = 2;
+ gridBagConstraints2.gridx = 0;
+ GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+ gridBagConstraints1.gridx = 0;
+ gridBagConstraints1.gridy = 1;
+ inputPanel = new JPanel();
+ inputPanel.setLayout( new GridBagLayout() );
+ inputPanel.setBorder( javax.swing.BorderFactory.createEtchedBorder( javax.swing.border.EtchedBorder.RAISED ) );
+ inputPanel.add( getJPanel1(), new GridBagConstraints() );
+ inputPanel.add( getJPanel12(), gridBagConstraints1 );
+ inputPanel.add( getJPanel13(), gridBagConstraints2 );
+ inputPanel.add( getJPanel14(), gridBagConstraints3 );
+ }
+ return inputPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel1()
+ {
+ if ( usernamePanel == null )
+ {
+ usernameLabel = new JLabel();
+ usernameLabel.setText( "Username:" );
+ usernamePanel = new JPanel();
+ usernamePanel.add( usernameLabel, null );
+ usernamePanel.add( getUsernameField(), null );
+ }
+ return usernamePanel;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getUsernameField()
+ {
+ if ( usernameField == null )
+ {
+ usernameField = new JTextField();
+ usernameField.setColumns( 12 );
+ usernameField.setText("");
+ }
+ return usernameField;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel12()
+ {
+ if ( passwordPanel == null )
+ {
+ passwordLabel = new JLabel();
+ passwordLabel.setText( "Password:" );
+ passwordPanel = new JPanel();
+ passwordPanel.add( passwordLabel, null );
+ passwordPanel.add( getPasswordField(), null );
+ }
+ return passwordPanel;
+ }
+
+
+ /**
+ * This method initializes jPasswordField
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getPasswordField()
+ {
+ if ( passwordField == null )
+ {
+ passwordField = new JPasswordField();
+ passwordField.setColumns( 12 );
+ }
+ return passwordField;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel13()
+ {
+ if ( realmPanel == null )
+ {
+ realmLabel = new JLabel();
+ realmLabel.setText(" Realm:");
+ realmPanel = new JPanel();
+ realmPanel.add( realmLabel, null );
+ realmPanel.add( getRealmComboBox(), null );
+ }
+ return realmPanel;
+ }
+
+
+ /**
+ * This method initializes jComboBox
+ *
+ * @return javax.swing.JComboBox
+ */
+ private JComboBox getRealmComboBox()
+ {
+ if ( realmComboBox == null )
+ {
+ realmComboBox = new JComboBox();
+ realmComboBox.setPreferredSize( new java.awt.Dimension( 132, 18 ) );
+ realmComboBox.setEditable( true );
+ }
+ return realmComboBox;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel14()
+ {
+ if ( passcodePanel == null )
+ {
+ passcodeLabel = new JLabel();
+ passcodeLabel.setText( "Passcode:" );
+ passcodePanel = new JPanel();
+ passcodePanel.add( passcodeLabel, null );
+ passcodePanel.add( getPasscodeField(), null );
+ }
+ return passcodePanel;
+ }
+
+
+ /**
+ * This method initializes jPasswordField1
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getPasscodeField()
+ {
+ if ( passcodeField == null )
+ {
+ passcodeField = new JPasswordField();
+ passcodeField.setColumns( 12 );
+ }
+ return passcodeField;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel15()
+ {
+ if ( buttonPanel == null )
+ {
+ buttonPanel = new JPanel();
+ buttonPanel.setBorder( javax.swing.BorderFactory.createEtchedBorder( javax.swing.border.EtchedBorder.RAISED ) );
+ buttonPanel.add( getCancelButton(), null );
+ buttonPanel.add( getLoginButton(), null );
+ }
+ return buttonPanel;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getLoginButton()
+ {
+ if ( loginButton == null )
+ {
+ loginButton = new JButton();
+ loginButton.setText( "Login" );
+ loginButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ if ( getPassword() == null || getPassword().length == 0 )
+ {
+ JOptionPane.showMessageDialog( LoginDialog.this,
+ "Password not supplied.", "Login Failed", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+
+ if ( getUserName() == null || getUserName().length() == 0 )
+ {
+ JOptionPane.showMessageDialog( LoginDialog.this,
+ "Username not supplied.", "Login Failed", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+
+ if ( getRealm() == null || getRealm().length() == 0 )
+ {
+ JOptionPane.showMessageDialog( LoginDialog.this,
+ "Realm not supplied.", "Login Failed", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+
+ modifier.setCredentials( new String( getPassword() ) );
+ modifier.setRealm( getRealm() );
+ modifier.setPrincipal( getUserName() );
+ modifier.setPasscode( new String( passcodeField.getPassword() ) );
+ LoginDialog.this.setVisible( false );
+ LoginDialog.this.dispose();
+ canceled = false;
+ }
+ } );
+ }
+ return loginButton;
+ }
+
+
+ /**
+ * This method initializes jButton1
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getCancelButton()
+ {
+ if ( cancelButton == null )
+ {
+ cancelButton = new JButton();
+ cancelButton.setText( "Cancel" );
+ cancelButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ LoginDialog.this.setVisible( false );
+ LoginDialog.this.dispose();
+ canceled = true;
+ }
+ } );
+ }
+ return cancelButton;
+ }
+
+
+ // -----------------------------------------------------------------------
+ // Value accessors from fields in UI used by login processor
+ // -----------------------------------------------------------------------
+
+
+ public String getUserName()
+ {
+ return usernameField.getText();
+ }
+
+
+ public char[] getPassword()
+ {
+ return passwordField.getPassword();
+ }
+
+
+ public char[] getPasscode()
+ {
+ return passcodeField.getPassword();
+ }
+
+
+ public String getRealm()
+ {
+ return ( String ) realmComboBox.getSelectedItem();
+ }
+
+
+ boolean canceled = true;
+ public boolean isCanceled()
+ {
+ return canceled;
+ }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/NewApplicationPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/NewApplicationPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/NewApplicationPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/NewApplicationPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,894 @@
+/*
+ * 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.BorderLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.Enumeration;
+import java.util.Iterator;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+
+import org.safehaus.triplesec.admin.Application;
+import org.safehaus.triplesec.admin.ApplicationModifier;
+import org.safehaus.triplesec.admin.DataAccessException;
+import org.safehaus.triplesec.admin.Permission;
+import org.safehaus.triplesec.admin.Profile;
+import org.safehaus.triplesec.admin.ProfileModifier;
+import org.safehaus.triplesec.admin.Role;
+import org.safehaus.triplesec.admin.RoleModifier;
+import org.safehaus.triplesec.admin.TriplesecAdmin;
+import javax.swing.JPasswordField;
+
+
+public class NewApplicationPanel extends JPanel
+{
+ private static final long serialVersionUID = 1L;
+ private JPanel mainPanel = null;
+ private JPanel buttonPanel = null;
+ private JButton copyButton = null;
+ private JButton createButton = null;
+ private JPanel aboveButtonPanel = null;
+ private JPanel northPanel = null;
+ private JPanel southPanel = null;
+ private JLabel iconLabel = null;
+ private JPanel jPanel = null;
+ private JTextArea descriptionTextArea = null;
+ private JPanel iconPanel = null;
+ private DefaultMutableTreeNode node = null;
+ private LeftTreeNavigation leftTreeNavigation;
+ private JTabbedPane centerTabbedPane = null;
+ private JPanel existingPanelTab = null;
+ private JScrollPane jScrollPane = null;
+ private JTable existingAppsTable = null;
+ private TriplesecAdmin triplesecAdmin;
+ private ExistingApplicationsTableModel existingAppsTableModel = null; // @jve:decl-index=0:visual-constraint=""
+ private JLabel jLabel = null;
+ private JTextField statusTextField = null;
+ private JLabel jLabel1 = null;
+ private JTextField applicationNameTextField = null;
+ private JLabel jLabel2 = null;
+ private JPanel jPanel1 = null;
+ private JPasswordField applicationPasswordField = null;
+ private JLabel jLabel3 = null;
+ private JPasswordField confirmPasswordField = null;
+
+
+ public void setLeftTreeNavigation( LeftTreeNavigation leftTreeNavigation )
+ {
+ this.leftTreeNavigation = leftTreeNavigation;
+ }
+
+
+ public void setTriplesecAdmin( TriplesecAdmin triplesecAdmin )
+ {
+ this.triplesecAdmin = triplesecAdmin;
+ }
+
+
+ /**
+ * This is the default constructor
+ */
+ public NewApplicationPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ /**
+ * 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, "New Application",
+ 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( getCopyButton(), null );
+ buttonPanel.add( getCreateButton(), null );
+ }
+ return buttonPanel;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getCopyButton()
+ {
+ if ( copyButton == null )
+ {
+ copyButton = new JButton();
+ copyButton.setText( "Copy" );
+ copyButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ try
+ {
+ copyAction();
+ }
+ catch ( DataAccessException e1 )
+ {
+ String msg = UiUtils.wrap( "Failed to copy application: " + e1.getMessage(), 79 );
+ JOptionPane.showMessageDialog( NewApplicationPanel.this, msg,
+ "Failed to copy application!", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+
+ } );
+ }
+ return copyButton;
+ }
+
+
+ public void copyAction() throws DataAccessException
+ {
+ String msg = UiUtils.wrap( "This copy operation will persist immediately replicating the entire " +
+ "application subtree. Would you still like to continue?", 79 );
+ int response = JOptionPane.showOptionDialog( this, msg, "Continue?", JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE, null, null, null );
+ if ( response == JOptionPane.NO_OPTION )
+ {
+ return;
+ }
+
+ // -------------------------------------------------------------------
+ // Get ahold of the application and it's node that was to
+ // be copied with all child entities underneath it
+ // -------------------------------------------------------------------
+
+ int index = existingAppsTable.getSelectionModel().getAnchorSelectionIndex();
+ if ( existingAppsTableModel.getRowCount() == 0 || index < 0 )
+ {
+ return;
+ }
+ Application copiedApplication = ( Application ) existingAppsTableModel.getValueAt( index, 0 );
+ DefaultMutableTreeNode copiedApplicationNode = null;
+ for ( Enumeration ii = node.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( child.getUserObject() == copiedApplication )
+ {
+ copiedApplicationNode = child;
+ }
+ }
+
+ // -------------------------------------------------------------------
+ // Now we create the new application and bail if it fails
+ // -------------------------------------------------------------------
+
+ DefaultMutableTreeNode newApplicationNode = createAction();
+ if ( newApplicationNode == null )
+ {
+ return;
+ }
+ Application newApplication = ( Application ) newApplicationNode.getUserObject();
+
+ // -------------------------------------------------------------------
+ // Iterated and copy app's perms and create in new app
+ // -------------------------------------------------------------------
+
+ DefaultMutableTreeNode permsNode = null;
+ DefaultMutableTreeNode newPermsNode = null;
+ DefaultTreeModel model = ( DefaultTreeModel ) leftTreeNavigation.getTree().getModel();
+ for ( Enumeration ii = copiedApplicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( ( ( String ) child.getUserObject() ).equals( "Permissions" ) )
+ {
+ permsNode = child;
+ }
+ }
+ for ( Enumeration ii = newApplicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( ( ( String ) child.getUserObject() ).equals( "Permissions" ) )
+ {
+ newPermsNode = child;
+ }
+ }
+ for ( Enumeration ii = permsNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode copiedPermissionNode = ( DefaultMutableTreeNode ) ii.nextElement();
+ Permission copiedPermission = ( Permission ) copiedPermissionNode.getUserObject();
+ Permission newPermission = newApplication.modifier()
+ .newPermission( copiedPermission.getName() )
+ .setDescription( copiedPermission.getDescription() ).add();
+ model.insertNodeInto( new DefaultMutableTreeNode( newPermission ), newPermsNode, 0 );
+ }
+
+ // -------------------------------------------------------------------
+ // Iterate and copy app's roles and create in new app
+ // -------------------------------------------------------------------
+
+ DefaultMutableTreeNode rolesNode = null;
+ DefaultMutableTreeNode newRolesNode = null;
+ for ( Enumeration ii = copiedApplicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( ( ( String ) child.getUserObject() ).equals( "Roles" ) )
+ {
+ rolesNode = child;
+ }
+ }
+ for ( Enumeration ii = newApplicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( ( ( String ) child.getUserObject() ).equals( "Roles" ) )
+ {
+ newRolesNode = child;
+ }
+ }
+ for ( Enumeration ii = rolesNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode copiedRoleNode = ( DefaultMutableTreeNode ) ii.nextElement();
+ Role copiedRole = ( Role ) copiedRoleNode.getUserObject();
+ RoleModifier modifier = newApplication.modifier().newRole( copiedRole.getName() )
+ .setDescription( copiedRole.getDescription() );
+ for ( Iterator jj = copiedRole.getGrants().iterator(); jj.hasNext(); /**/ )
+ {
+ modifier.addGrant( ( String ) jj.next() );
+ }
+ Role newRole = modifier.add();
+ model.insertNodeInto( new DefaultMutableTreeNode( newRole ), newRolesNode, 0 );
+ }
+
+ // -------------------------------------------------------------------
+ // Iterate and copy app's profiles and create in new app
+ // -------------------------------------------------------------------
+
+ DefaultMutableTreeNode profilesNode = null;
+ DefaultMutableTreeNode newProfilesNode = null;
+ for ( Enumeration ii = copiedApplicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( ( ( String ) child.getUserObject() ).equals( "Profiles" ) )
+ {
+ profilesNode = child;
+ }
+ }
+ for ( Enumeration ii = newApplicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( ( ( String ) child.getUserObject() ).equals( "Profiles" ) )
+ {
+ newProfilesNode = child;
+ }
+ }
+ for ( Enumeration ii = profilesNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode copiedProfileNode = ( DefaultMutableTreeNode ) ii.nextElement();
+ Profile copiedProfile = ( Profile ) copiedProfileNode.getUserObject();
+ ProfileModifier modifier = newApplication.modifier()
+ .newProfile( copiedProfile.getId(), copiedProfile.getUser() )
+ .setDescription( copiedProfile.getDescription() );
+ for ( Iterator jj = copiedProfile.getGrants().iterator(); jj.hasNext(); /**/ )
+ {
+ modifier.addGrant( ( String ) jj.next() );
+ }
+ for ( Iterator jj = copiedProfile.getDenials().iterator(); jj.hasNext(); /**/ )
+ {
+ modifier.addDenial( ( String ) jj.next() );
+ }
+ for ( Iterator jj = copiedProfile.getRoles().iterator(); jj.hasNext(); /**/ )
+ {
+ modifier.addRole( ( String ) jj.next() );
+ }
+ Profile newProfile = modifier.add();
+ model.insertNodeInto( new DefaultMutableTreeNode( newProfile ), newProfilesNode, 0 );
+ }
+
+ applicationNameTextField.setText( null );
+ statusTextField.setText( null );
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getCreateButton()
+ {
+ if ( createButton == null )
+ {
+ createButton = new JButton();
+ createButton.setText( "Create" );
+ createButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ createAction();
+ }
+ } );
+ }
+ return createButton;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getAboveButtonPanel()
+ {
+ if ( aboveButtonPanel == null )
+ {
+ aboveButtonPanel = new JPanel();
+ aboveButtonPanel.setLayout( new BorderLayout() );
+ aboveButtonPanel.add( getNorthPanel(), java.awt.BorderLayout.NORTH );
+ aboveButtonPanel.add( getSouthPanel(), java.awt.BorderLayout.SOUTH );
+ aboveButtonPanel.add( getCenterTabbedPane(), java.awt.BorderLayout.CENTER );
+ }
+ return aboveButtonPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getNorthPanel()
+ {
+ if ( northPanel == null )
+ {
+ 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;
+ northPanel = new JPanel();
+ northPanel.setLayout( new GridBagLayout() );
+ northPanel.setPreferredSize( new java.awt.Dimension( 179, 68 ) );
+ northPanel.add( getIconPanel(), new GridBagConstraints() );
+ northPanel.add( getJPanel(), gridBagConstraints1 );
+ }
+ return northPanel;
+ }
+
+
+ /**
+ * 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 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/new_application_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 jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel()
+ {
+ if ( jPanel == null )
+ {
+ GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
+ gridBagConstraints8.gridx = 1;
+ gridBagConstraints8.insets = new java.awt.Insets(0,0,0,0);
+ gridBagConstraints8.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints8.gridy = 2;
+ GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
+ gridBagConstraints7.gridx = 0;
+ gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints7.insets = new java.awt.Insets(0,0,0,5);
+ gridBagConstraints7.gridy = 2;
+ jLabel2 = new JLabel();
+ jLabel2.setText("Password:");
+ jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
+ gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints6.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
+ gridBagConstraints5.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints5.gridy = 1;
+ gridBagConstraints5.weightx = 1.0;
+ gridBagConstraints5.insets = new java.awt.Insets(0,0,5,0);
+ gridBagConstraints5.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;
+ jLabel1 = new JLabel();
+ jLabel1.setText( "Application Name:" );
+ jLabel1.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
+ gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints2.gridy = 0;
+ gridBagConstraints2.weightx = 1.0;
+ gridBagConstraints2.insets = new java.awt.Insets( 0, 0, 5, 0 );
+ gridBagConstraints2.gridx = 1;
+ 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, gridBagConstraints6 );
+ jPanel.add( getStatusTextField(), gridBagConstraints2 );
+ jPanel.add(jLabel1, gridBagConstraints3);
+ jPanel.add(getApplicationNameTextField(), gridBagConstraints5);
+ jPanel.add(jLabel2, gridBagConstraints7);
+ jPanel.add(getJPanel1(), gridBagConstraints8);
+ }
+ return jPanel;
+ }
+
+
+ /**
+ * This method initializes jTextArea
+ *
+ * @return javax.swing.JTextArea
+ */
+ private JTextArea getDescriptionTextArea()
+ {
+ if ( descriptionTextArea == null )
+ {
+ descriptionTextArea = new JTextArea();
+ descriptionTextArea.setRows( 3 );
+ }
+ return descriptionTextArea;
+ }
+
+
+ /**
+ * This method initializes jPanel4
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getIconPanel()
+ {
+ if ( iconPanel == null )
+ {
+ iconPanel = new JPanel();
+ iconPanel
+ .setBorder( javax.swing.BorderFactory.createEtchedBorder( javax.swing.border.EtchedBorder.RAISED ) );
+ iconPanel.add( getIconLabel(), null );
+ }
+ return iconPanel;
+ }
+
+
+ public void setTreeNode( DefaultMutableTreeNode node )
+ {
+ this.node = node;
+ existingAppsTable.setModel( new ExistingApplicationsTableModel() );
+ }
+
+
+ public String noNull( Object obj )
+ {
+ if ( obj == null )
+ {
+ return "";
+ }
+ return obj.toString();
+ }
+
+
+ public DefaultMutableTreeNode getTreeNode()
+ {
+ return node;
+ }
+
+
+ public DefaultMutableTreeNode createAction()
+ {
+ char[] passwordChars = applicationPasswordField.getPassword();
+ char[] confirmChars = confirmPasswordField.getPassword();
+
+ if ( passwordChars == null || confirmChars == null )
+ {
+ JOptionPane.showMessageDialog( this, "Either the password or the confirmation field is null." );
+ return null;
+ }
+
+ String passwordStr = new String( passwordChars );
+ String confirmStr = new String( confirmChars );
+
+ if ( ! passwordStr.equals( confirmStr ) )
+ {
+ JOptionPane.showMessageDialog( this, "Passwords do not match." );
+ return null;
+ }
+
+ DefaultMutableTreeNode appNode;
+ Application application;
+ ApplicationModifier modifier = triplesecAdmin.newApplication( applicationNameTextField.getText() )
+ .setDescription( descriptionTextArea.getText() ).setPassword( passwordStr );
+ try
+ {
+ application = modifier.add();
+ appNode = new DefaultMutableTreeNode( application );
+ DefaultTreeModel model = ( DefaultTreeModel ) leftTreeNavigation.getTree().getModel();
+ model.insertNodeInto( appNode, node, 0 );
+ leftTreeNavigation.reloadApplication( appNode );
+ leftTreeNavigation.reloadGroups();
+ existingAppsTableModel.fireTableDataChanged();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this,
+ UiUtils.wrap( "Failed to create application:\n" + e.getMessage(), 79 ),
+ "Application creation failure!", JOptionPane.ERROR_MESSAGE );
+ return null;
+ }
+ applicationNameTextField.setText( null );
+ statusTextField.setText( null );
+ return appNode;
+ }
+
+
+ /**
+ * This method initializes jTabbedPane
+ *
+ * @return javax.swing.JTabbedPane
+ */
+ private JTabbedPane getCenterTabbedPane()
+ {
+ if ( centerTabbedPane == null )
+ {
+ centerTabbedPane = new JTabbedPane();
+ centerTabbedPane.addTab( "Existing", null, getExistingPanelTab(),
+ "Copy an application from any one of these existing applications." );
+ }
+ return centerTabbedPane;
+ }
+
+
+ /**
+ * This method initializes jPanel3
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getExistingPanelTab()
+ {
+ if ( existingPanelTab == null )
+ {
+ GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
+ gridBagConstraints4.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints4.gridy = 0;
+ gridBagConstraints4.weightx = 1.0;
+ gridBagConstraints4.weighty = 1.0;
+ gridBagConstraints4.gridx = 0;
+ existingPanelTab = new JPanel();
+ existingPanelTab.setLayout( new GridBagLayout() );
+ existingPanelTab.add( getJScrollPane(), gridBagConstraints4 );
+ }
+ return existingPanelTab;
+ }
+
+
+ /**
+ * This method initializes jScrollPane
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane()
+ {
+ if ( jScrollPane == null )
+ {
+ jScrollPane = new JScrollPane();
+ jScrollPane.setViewportView( getExistingAppsTable() );
+ }
+ return jScrollPane;
+ }
+
+
+ /**
+ * This method initializes jTable
+ *
+ * @return javax.swing.JTable
+ */
+ private JTable getExistingAppsTable()
+ {
+ if ( existingAppsTable == null )
+ {
+ existingAppsTable = new JTable();
+ existingAppsTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
+ existingAppsTable.getSelectionModel().addListSelectionListener( new ListSelectionListener()
+ {
+ public void valueChanged( ListSelectionEvent e )
+ {
+ int index = existingAppsTable.getSelectionModel().getAnchorSelectionIndex();
+ if ( existingAppsTableModel.getRowCount() == 0 || index < 0 )
+ {
+ return;
+ }
+ Application application = ( Application ) existingAppsTableModel.getValueAt( index, 0 );
+ applicationNameTextField.setText( "CopyOf" + application.getName() );
+ descriptionTextArea.setText( application.getDescription() );
+ }
+ } );
+ existingAppsTable.setModel( getExistingAppsTableModel() );
+ }
+ return existingAppsTable;
+ }
+
+
+ /**
+ * This method initializes defaultTableModel
+ *
+ * @return javax.swing.table.DefaultTableModel
+ */
+ private ExistingApplicationsTableModel getExistingAppsTableModel()
+ {
+ if ( existingAppsTableModel == null )
+ {
+ existingAppsTableModel = new ExistingApplicationsTableModel();
+ }
+ return existingAppsTableModel;
+ }
+
+ class ExistingApplicationsTableModel extends AbstractTableModel
+ {
+ private static final long serialVersionUID = 1L;
+
+
+ public int getRowCount()
+ {
+ if ( node == null )
+ {
+ return 0;
+ }
+ return node.getChildCount();
+ }
+
+
+ public int getColumnCount()
+ {
+ return 3;
+ }
+
+
+ public Object getValueAt( int rowIndex, int columnIndex )
+ {
+ if ( node == null )
+ {
+ return null;
+ }
+
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) node.getChildAt( rowIndex );
+ switch ( columnIndex )
+ {
+ case ( 0 ):
+ return child.getUserObject();
+ case ( 1 ):
+ return ( ( Application ) child.getUserObject() ).getCreatorsName();
+ case ( 2 ):
+ return ( ( Application ) child.getUserObject() ).getCreateTimestamp().toString();
+ }
+ return child.getUserObject();
+ }
+
+
+ public String getColumnName( int columnIndex )
+ {
+ switch ( columnIndex )
+ {
+ case ( 0 ):
+ return "Existing Application";
+ case ( 1 ):
+ return "Creator's Name";
+ case ( 2 ):
+ return "Create Timestamp";
+ default:
+ throw new IndexOutOfBoundsException();
+ }
+ }
+ }
+
+
+ /**
+ * 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 jTextField1
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getApplicationNameTextField()
+ {
+ if ( applicationNameTextField == null )
+ {
+ applicationNameTextField = new JTextField();
+ }
+ return applicationNameTextField;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel1()
+ {
+ if ( jPanel1 == null )
+ {
+ GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
+ gridBagConstraints11.insets = new java.awt.Insets(0,5,0,5);
+ GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
+ gridBagConstraints10.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints10.weightx = 1.0;
+ jLabel3 = new JLabel();
+ jLabel3.setText("Confirm");
+ GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
+ gridBagConstraints9.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints9.gridy = 0;
+ gridBagConstraints9.weightx = 1.0;
+ gridBagConstraints9.gridx = 0;
+ jPanel1 = new JPanel();
+ jPanel1.setLayout(new GridBagLayout());
+ jPanel1.add(getApplicationPasswordField(), gridBagConstraints9);
+ jPanel1.add(jLabel3, gridBagConstraints11);
+ jPanel1.add(getConfirmPasswordField(), gridBagConstraints10);
+ }
+ return jPanel1;
+ }
+
+
+ /**
+ * This method initializes jPasswordField
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getApplicationPasswordField()
+ {
+ if ( applicationPasswordField == null )
+ {
+ applicationPasswordField = new JPasswordField();
+ }
+ return applicationPasswordField;
+ }
+
+
+ /**
+ * This method initializes jPasswordField1
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getConfirmPasswordField()
+ {
+ if ( confirmPasswordField == null )
+ {
+ confirmPasswordField = new JPasswordField();
+ }
+ return confirmPasswordField;
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"