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 [31/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/ProfilePanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,812 @@
+/*
+ * 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.DefaultComboBoxModel;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+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.util.Enumeration;
+import java.util.Set;
+
+import javax.swing.JTextField;
+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.Profile;
+import org.safehaus.triplesec.admin.ProfileModifier;
+import org.safehaus.triplesec.admin.User;
+
+import javax.swing.JComboBox;
+import javax.swing.JCheckBox;
+
+
+public class ProfilePanel extends JPanel
+{
+ 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 JPanel northPanel = null;
+ private JTabbedPane centerTabbedPane = null;
+ private JPanel southPanel = null;
+ private GeneralPanel generalPanel = null;
+ private JLabel iconLabel = null;
+ private JPanel jPanel = null;
+ private JTextArea descriptionTextArea = null;
+ private JPanel jPanel4 = null;
+ private JTree tree = null;
+ private Profile profile = null;
+ private DefaultMutableTreeNode node = null;
+ private DefaultComboBoxModel usersComboBoxModel = new DefaultComboBoxModel();
+ private JLabel jLabel = null;
+ private JLabel jLabel1 = null;
+ private JLabel jLabel2 = null;
+ private JTextField statusTextField = null;
+ private JTextField applicationNameTextField = null;
+ private JButton deleteButton = null;
+ private JPanel jPanel1 = null;
+ private JTextField profileIdTextField = null;
+ private JLabel jLabel7 = null;
+ private JComboBox usersComboBox = null;
+ private ProfilePermissionsPanel profileGrantsPanel;
+ private ProfilePermissionsPanel profileDenialsPanel;
+ private ProfileRolesPanel profileRolesPanel;
+ private JLabel jLabel3 = null;
+ private JCheckBox disabledCheckBox = null;
+
+
+ /**
+ * This is the default constructor
+ */
+ public ProfilePanel()
+ {
+ 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, "Existing Profile",
+ 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 )
+ {
+ try
+ {
+ setProfileFields();
+ }
+ catch ( DataAccessException e1 )
+ {
+ JOptionPane.showMessageDialog( ProfilePanel.this,
+ "Failed to access application permissions for profile: " + profile.getId() + "\n\n"
+ + e1.getMessage(), "Data access error", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ } );
+ }
+ 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( getNorthPanel(), java.awt.BorderLayout.NORTH );
+ aboveButtonPanel.add( getCenterTabbedPane(), java.awt.BorderLayout.CENTER );
+ aboveButtonPanel.add( getSouthPanel(), java.awt.BorderLayout.SOUTH );
+ }
+ 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( getJPanel4(), new GridBagConstraints() );
+ northPanel.add( getJPanel(), gridBagConstraints1 );
+ }
+ return northPanel;
+ }
+
+
+ /**
+ * 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( "Grants", null, getProfileGrantsPanel(), null );
+ centerTabbedPane.addTab( "Denials", null, getProfileDenialsPanel(), null );
+ centerTabbedPane.addTab( "Roles", null, getProfileRolesPanel(), null );
+ }
+ return centerTabbedPane;
+ }
+
+
+ /**
+ * 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 jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private GeneralPanel getGeneralPanel()
+ {
+ if ( generalPanel == null )
+ {
+ GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
+ gridBagConstraints6.gridx = 1;
+ gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints6.insets = new java.awt.Insets(0,0,0,05);
+ gridBagConstraints6.gridy = 4;
+ GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
+ gridBagConstraints5.gridx = 0;
+ gridBagConstraints5.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints5.insets = new java.awt.Insets(0,0,0,5);
+ gridBagConstraints5.gridy = 4;
+ jLabel3 = new JLabel();
+ jLabel3.setText("Disabled:");
+ jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ generalPanel = new GeneralPanel();
+ generalPanel.add(jLabel3, gridBagConstraints5);
+ generalPanel.add(getDisabledCheckBox(), gridBagConstraints6);
+ }
+ return generalPanel;
+ }
+
+
+ /**
+ * 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/profile2_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 gridBagConstraints17 = new GridBagConstraints();
+ gridBagConstraints17.gridx = 1;
+ gridBagConstraints17.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints17.gridy = 2;
+ GridBagConstraints gridBagConstraints16 = new GridBagConstraints();
+ gridBagConstraints16.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints16.gridy = 1;
+ gridBagConstraints16.weightx = 1.0;
+ gridBagConstraints16.insets = new java.awt.Insets( 0, 0, 5, 0 );
+ gridBagConstraints16.gridx = 1;
+ GridBagConstraints gridBagConstraints15 = new GridBagConstraints();
+ gridBagConstraints15.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints15.gridy = 0;
+ gridBagConstraints15.weightx = 1.0;
+ gridBagConstraints15.insets = new java.awt.Insets( 0, 0, 5, 0 );
+ gridBagConstraints15.gridx = 1;
+ GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
+ gridBagConstraints4.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints4.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
+ gridBagConstraints3.gridx = 0;
+ gridBagConstraints3.insets = new java.awt.Insets( 0, 0, 0, 5 );
+ gridBagConstraints3.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints3.gridy = 2;
+ jLabel2 = new JLabel();
+ jLabel2.setText( "Profile Id:" );
+ jLabel2.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
+ gridBagConstraints2.gridx = 0;
+ gridBagConstraints2.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints2.gridy = 1;
+ jLabel1 = new JLabel();
+ jLabel1.setText( "Application Name:" );
+ 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( jLabel2, gridBagConstraints3 );
+ jPanel.add( getStatusTextField(), gridBagConstraints15 );
+ jPanel.add( getApplicationNameTextField(), gridBagConstraints16 );
+ jPanel.add( getJPanel1(), gridBagConstraints17 );
+ }
+ 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 getJPanel4()
+ {
+ if ( jPanel4 == null )
+ {
+ jPanel4 = new JPanel();
+ jPanel4.setBorder( javax.swing.BorderFactory.createEtchedBorder( javax.swing.border.EtchedBorder.RAISED ) );
+ jPanel4.add( getIconLabel(), null );
+ }
+ return jPanel4;
+ }
+
+
+ private void setProfileFields() throws DataAccessException
+ {
+ if ( profile == null || node == null || node.getParent() == null )
+ {
+ return;
+ }
+ disabledCheckBox.setSelected( profile.isDisabled() );
+ generalPanel.setFields( profile );
+ applicationNameTextField.setText( profile.getApplicationName() );
+ profileIdTextField.setText( profile.getId() );
+ descriptionTextArea.setText( profile.getDescription() );
+
+ DefaultMutableTreeNode applicationNode = ( DefaultMutableTreeNode ) node.getParent().getParent();
+
+ // -------------------------------------------------------------------
+ // load the grants, denials and roles into respective panels
+ // -------------------------------------------------------------------
+
+ Set grants = profile.getGrants();
+ profileGrantsPanel.populateLists( applicationNode, grants );
+ Set denials = profile.getDenials();
+ profileDenialsPanel.populateLists( applicationNode, denials );
+ Set roles = profile.getRoles();
+ profileRolesPanel.populateLists( applicationNode, roles );
+
+ // -------------------------------------------------------------------
+ // clear and load users into the user combo box
+ // -------------------------------------------------------------------
+
+ usersComboBoxModel.removeAllElements();
+ DefaultMutableTreeNode rootNode = ( DefaultMutableTreeNode ) applicationNode.getParent().getParent();
+ DefaultMutableTreeNode usersNode = null;
+ for ( Enumeration ii = rootNode.children(); ii.hasMoreElements(); /**/)
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( child.getUserObject() instanceof String )
+ {
+ if ( "Users".equals( child.getUserObject() ) )
+ {
+ usersNode = child;
+ }
+ }
+ }
+
+ for ( Enumeration ii = usersNode.children(); ii.hasMoreElements(); /**/)
+ {
+ DefaultMutableTreeNode userNode = ( DefaultMutableTreeNode ) ii.nextElement();
+ usersComboBoxModel.addElement( ( ( User ) userNode.getUserObject() ).getId() );
+ }
+ usersComboBox.setSelectedItem( profile.getUser() );
+ }
+
+
+ public void setTree( JTree tree )
+ {
+ this.tree = tree;
+ }
+
+
+ public void setTreeNode( DefaultMutableTreeNode node )
+ {
+ if ( node == null )
+ {
+ return;
+ }
+ this.node = node;
+ this.profile = ( Profile ) node.getUserObject();
+
+ try
+ {
+ setProfileFields();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( ProfilePanel.this, "Failed to access application permissions for profile: "
+ + profile.getId() + "\n\n" + e.getMessage(), "Data access error", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+
+
+ public String noNull( Object obj )
+ {
+ if ( obj == null )
+ {
+ return "";
+ }
+ return obj.toString();
+ }
+
+
+ public DefaultMutableTreeNode getTreeNode()
+ {
+ return node;
+ }
+
+
+ public void saveAction()
+ {
+ if ( profile == null )
+ {
+ return;
+ }
+
+ // change the description and add remove values from list views then see if anything changed
+ ProfileModifier modifier = profile.modifier().setDescription( descriptionTextArea.getText() );
+ modifier.setUser( ( String ) usersComboBox.getSelectedItem() );
+ modifier.setDisable( disabledCheckBox.isSelected() );
+ for ( Enumeration ii = profileGrantsPanel.getAvailableModel().elements(); ii.hasMoreElements(); /**/)
+ {
+ modifier.removeGrant( ( String ) ii.nextElement() );
+ }
+ for ( Enumeration ii = profileGrantsPanel.getExistingModel().elements(); ii.hasMoreElements(); /**/)
+ {
+ modifier.addGrant( ( String ) ii.nextElement() );
+ }
+
+ for ( Enumeration ii = profileDenialsPanel.getAvailableModel().elements(); ii.hasMoreElements(); /**/)
+ {
+ modifier.removeDenial( ( String ) ii.nextElement() );
+ }
+ for ( Enumeration ii = profileDenialsPanel.getExistingModel().elements(); ii.hasMoreElements(); /**/)
+ {
+ modifier.addDenial( ( String ) ii.nextElement() );
+ }
+
+ for ( Enumeration ii = profileRolesPanel.getAvailableRolesModel().elements(); ii.hasMoreElements(); /**/)
+ {
+ modifier.removeRole( ( String ) ii.nextElement() );
+ }
+ for ( Enumeration ii = profileRolesPanel.getProfileRolesModel().elements(); ii.hasMoreElements(); /**/)
+ {
+ modifier.addRole( ( String ) ii.nextElement() );
+ }
+
+ if ( modifier.isUpdateNeeded() )
+ {
+ try
+ {
+ profile = modifier.modify();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this,
+ UiUtils.wrap( "Failed to modify profile:\n" + e.getMessage(), 79 ),
+ "Profile modification failure!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+
+ if ( !profile.getId().equals( profileIdTextField.getText() ) )
+ {
+ try
+ {
+ profile = profile.modifier().rename( profileIdTextField.getText() );
+ ( ( DefaultTreeModel ) tree.getModel() ).valueForPathChanged( new TreePath( node.getPath() ), profile );
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( this,
+ UiUtils.wrap( "Failed to rename profile:\n" + e.getMessage(), 79 ), "Profile rename failure!",
+ JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+
+ node.setUserObject( profile );
+ try
+ {
+ setProfileFields();
+ }
+ catch ( DataAccessException e )
+ {
+ JOptionPane.showMessageDialog( ProfilePanel.this, "Failed to access application permissions for profile: "
+ + profile.getId() + "\n\n" + e.getMessage(), "Data access error", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+
+
+ /**
+ * This method initializes jPanel5
+ *
+ * @return javax.swing.JPanel
+ */
+ private ProfilePermissionsPanel getProfileGrantsPanel()
+ {
+ if ( profileGrantsPanel == null )
+ {
+ profileGrantsPanel = new ProfilePermissionsPanel();
+ }
+ return profileGrantsPanel;
+ }
+
+
+ /**
+ * This method initializes jPanel5
+ *
+ * @return javax.swing.JPanel
+ */
+ private ProfilePermissionsPanel getProfileDenialsPanel()
+ {
+ if ( profileDenialsPanel == null )
+ {
+ profileDenialsPanel = new ProfilePermissionsPanel( false );
+ }
+ return profileDenialsPanel;
+ }
+
+
+ private ProfileRolesPanel getProfileRolesPanel()
+ {
+ if ( profileRolesPanel == null )
+ {
+ profileRolesPanel = new ProfileRolesPanel();
+ }
+ return profileRolesPanel;
+ }
+
+
+ /**
+ * 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 jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getApplicationNameTextField()
+ {
+ if ( applicationNameTextField == null )
+ {
+ applicationNameTextField = new JTextField();
+ applicationNameTextField.setEditable( false );
+ }
+ return applicationNameTextField;
+ }
+
+
+ /**
+ * 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 )
+ {
+ try
+ {
+ profile.modifier().delete();
+ 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 )
+ {
+ JOptionPane.showMessageDialog( ProfilePanel.this, "Failed to delete profile: "
+ + e1.getMessage(), "Delete Failed", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ } );
+ }
+ return deleteButton;
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel1()
+ {
+ if ( jPanel1 == null )
+ {
+ GridBagConstraints gridBagConstraints20 = new GridBagConstraints();
+ gridBagConstraints20.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints20.weightx = 1.0;
+ GridBagConstraints gridBagConstraints19 = new GridBagConstraints();
+ gridBagConstraints19.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints19.insets = new java.awt.Insets( 0, 5, 0, 5 );
+ jLabel7 = new JLabel();
+ jLabel7.setText( "User:" );
+ jLabel7.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints18 = new GridBagConstraints();
+ gridBagConstraints18.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints18.gridy = 0;
+ gridBagConstraints18.weightx = 1.0;
+ gridBagConstraints18.gridx = 0;
+ jPanel1 = new JPanel();
+ jPanel1.setLayout( new GridBagLayout() );
+ jPanel1.add( getJTextField(), gridBagConstraints18 );
+ jPanel1.add( jLabel7, gridBagConstraints19 );
+ jPanel1.add( getJComboBox(), gridBagConstraints20 );
+ }
+ return jPanel1;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getJTextField()
+ {
+ if ( profileIdTextField == null )
+ {
+ profileIdTextField = new JTextField();
+ }
+ return profileIdTextField;
+ }
+
+
+ /**
+ * This method initializes jComboBox
+ *
+ * @return javax.swing.JComboBox
+ */
+ private JComboBox getJComboBox()
+ {
+ if ( usersComboBox == null )
+ {
+ usersComboBox = new JComboBox();
+ usersComboBox.setModel( usersComboBoxModel );
+ usersComboBox.setPreferredSize( new java.awt.Dimension( 32, 19 ) );
+ }
+ return usersComboBox;
+ }
+
+
+ /**
+ * This method initializes jCheckBox
+ *
+ * @return javax.swing.JCheckBox
+ */
+ private JCheckBox getDisabledCheckBox()
+ {
+ if ( disabledCheckBox == null )
+ {
+ disabledCheckBox = new JCheckBox();
+ }
+ return disabledCheckBox;
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePermissionsPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePermissionsPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePermissionsPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfilePermissionsPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,438 @@
+/*
+ * 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 java.util.Set;
+
+import javax.swing.DefaultListModel;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.safehaus.triplesec.admin.Permission;
+
+
+public class ProfilePermissionsPanel extends JPanel
+{
+ private static final long serialVersionUID = 789126136169615296L;
+
+ private JPanel jPanel5 = null;
+ private JPanel jPanel6 = null;
+ private JPanel jPanel7 = null;
+ private JList availableList = null;
+ private JScrollPane jScrollPane = null;
+ private JScrollPane jScrollPane1 = null;
+ private JList existingList = null;
+ private JButton addButton = null;
+ private JButton removeButton = null;
+ private DefaultListModel availableModel = null; // @jve:decl-index=0:visual-constraint=""
+ private DefaultListModel existingModel = null; // @jve:decl-index=0:visual-constraint=""
+ private final boolean forGrants;
+
+
+ /**
+ * This is the default constructor
+ */
+ public ProfilePermissionsPanel()
+ {
+ super();
+ initialize();
+ forGrants = true;
+ }
+
+
+ /**
+ * This is the default constructor
+ */
+ public ProfilePermissionsPanel( boolean forGrants )
+ {
+ super();
+ initialize();
+ this.forGrants = forGrants;
+ }
+
+
+ public void populateLists( DefaultMutableTreeNode applicationNode, Set existing )
+ {
+ // -------------------------------------------------------------------
+ // clear both lists and find the permissions container for the app
+ // -------------------------------------------------------------------
+
+ availableModel.clear();
+ existingModel.clear();
+ if ( applicationNode == null )
+ {
+ return;
+ }
+ DefaultMutableTreeNode permissionsNode = null;
+ for ( Enumeration ii = applicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( "Permissions".equals( child.getUserObject() ) )
+ {
+ permissionsNode = child;
+ break;
+ }
+ }
+
+ // -------------------------------------------------------------------
+ // load both lists: do not include perms as available if in grants
+ // -------------------------------------------------------------------
+
+ for ( Enumeration ii = permissionsNode.children(); ii.hasMoreElements(); /**/)
+ {
+ Permission permission = ( Permission ) ( ( DefaultMutableTreeNode ) ii.nextElement() ).getUserObject();
+ if ( ! existing.contains( permission.getName() ) )
+ {
+ availableModel.addElement( permission.getName() );
+ }
+ }
+ for ( Iterator ii = existing.iterator(); ii.hasNext(); /**/)
+ {
+ existingModel.addElement( ii.next() );
+ }
+ }
+
+
+ public DefaultListModel getAvailableModel()
+ {
+ return availableModel;
+ }
+
+
+ public DefaultListModel getExistingModel()
+ {
+ return existingModel;
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize( 637, 268 );
+ setLayout( new BorderLayout() );
+ add( getAvailablePanel(), java.awt.BorderLayout.WEST );
+ add( getButtonPanel(), java.awt.BorderLayout.CENTER );
+ add( getExistingPanel(), java.awt.BorderLayout.EAST );
+ }
+
+
+ /**
+ * This method initializes jPanel5
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getAvailablePanel()
+ {
+ if ( jPanel5 == null )
+ {
+ jPanel5 = new JPanel();
+ jPanel5.setLayout( new BorderLayout() );
+ String title = null;
+ if ( forGrants )
+ {
+ title = "Available Grants";
+ }
+ else
+ {
+ title = "Available Denials";
+ }
+ jPanel5.setBorder( javax.swing.BorderFactory.createTitledBorder( null, title,
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+ javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null ) );
+ jPanel5.setPreferredSize( new java.awt.Dimension( 200, 35 ) );
+ jPanel5.add( getJScrollPane(), java.awt.BorderLayout.CENTER );
+ }
+ return jPanel5;
+ }
+
+
+ /**
+ * This method initializes jPanel6
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getButtonPanel()
+ {
+ if ( jPanel6 == null )
+ {
+ GridBagConstraints gridBagConstraints14 = new GridBagConstraints();
+ gridBagConstraints14.gridx = 0;
+ gridBagConstraints14.insets = new java.awt.Insets( 10, 0, 0, 0 );
+ gridBagConstraints14.gridy = 1;
+ GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
+ gridBagConstraints5.gridx = 0;
+ gridBagConstraints5.gridy = 0;
+ jPanel6 = new JPanel();
+ jPanel6.setLayout( new GridBagLayout() );
+ jPanel6.add( getAddPermissionButton(), gridBagConstraints5 );
+ jPanel6.add( getRemovePermissionButton(), gridBagConstraints14 );
+ }
+ return jPanel6;
+ }
+
+
+ /**
+ * This method initializes jPanel7
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getExistingPanel()
+ {
+ if ( jPanel7 == null )
+ {
+ jPanel7 = new JPanel();
+ jPanel7.setLayout( new BorderLayout() );
+ jPanel7.setPreferredSize( new java.awt.Dimension( 200, 10 ) );
+ String title = null;
+ if ( forGrants )
+ {
+ title = "Available Grants";
+ }
+ else
+ {
+ title = "Available Denials";
+ }
+ jPanel7.setBorder( javax.swing.BorderFactory.createTitledBorder( null, title,
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+ javax.swing.border.TitledBorder.DEFAULT_POSITION,
+ new java.awt.Font( "Dialog", java.awt.Font.BOLD, 12 ), new java.awt.Color( 51, 51, 51 ) ) );
+ jPanel7.add( getJScrollPane1(), java.awt.BorderLayout.CENTER );
+ }
+ return jPanel7;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getAddPermissionButton()
+ {
+ if ( addButton == null )
+ {
+ addButton = new JButton();
+ String tooltip = null;
+ if ( forGrants )
+ {
+ tooltip = "Add selected permissions to profile grants";
+ }
+ else
+ {
+ tooltip = "Add selected permissions to profile denials";
+ }
+ addButton.setToolTipText( tooltip );
+ addButton.setIcon( new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/rightarrow_16x16.png" ) ) );
+ addButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ Object[] selectedValues = availableList.getSelectedValues();
+ if ( selectedValues == null || selectedValues.length == 0 )
+ {
+ return;
+ }
+
+ for ( int ii = 0; ii < selectedValues.length; ii++ )
+ {
+ availableModel.removeElement( selectedValues[ii] );
+ existingModel.add( 0, selectedValues[ii] );
+ }
+ }
+ } );
+ }
+ return addButton;
+ }
+
+
+ /**
+ * This method initializes jButton1
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getRemovePermissionButton()
+ {
+ if ( removeButton == null )
+ {
+ removeButton = new JButton();
+ String tooltip = null;
+ if ( forGrants )
+ {
+ tooltip = "Remove selected permissions from profile grants";
+ }
+ else
+ {
+ tooltip = "Remove selected permissions from profile denials";
+ }
+ removeButton.setToolTipText( tooltip );
+ removeButton.setIcon( new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/leftarrow_16x16.png" ) ) );
+ removeButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ Object[] selectedValues = existingList.getSelectedValues();
+ if ( selectedValues == null || selectedValues.length == 0 )
+ {
+ return;
+ }
+
+ for ( int ii = 0; ii < selectedValues.length; ii++ )
+ {
+ existingModel.removeElement( selectedValues[ii] );
+ availableModel.add( 0, selectedValues[ii] );
+ }
+ }
+ } );
+ }
+ return removeButton;
+ }
+
+
+ /**
+ * This method initializes jScrollPane
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane()
+ {
+ if ( jScrollPane == null )
+ {
+ jScrollPane = new JScrollPane();
+ jScrollPane.setViewportView( getApplicationPermissions() );
+ }
+ return jScrollPane;
+ }
+
+
+ /**
+ * This method initializes jScrollPane1
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane1()
+ {
+ if ( jScrollPane1 == null )
+ {
+ jScrollPane1 = new JScrollPane();
+ jScrollPane1.setViewportView( getProfileGrants() );
+ }
+ return jScrollPane1;
+ }
+
+
+ /**
+ * This method initializes jList
+ *
+ * @return javax.swing.JList
+ */
+ private JList getApplicationPermissions()
+ {
+ if ( availableList == null )
+ {
+ availableList = new JList();
+ availableList.setPreferredSize( new java.awt.Dimension( 0, 0 ) );
+ String tooltip = null;
+ if ( forGrants )
+ {
+ tooltip = "Application permissions assignable to profile grants";
+ }
+ else
+ {
+ tooltip = "Application permissions assignable to profile denials";
+ }
+ availableList.setToolTipText( tooltip );
+ availableList.setModel( getDefaultListModel() );
+ }
+ return availableList;
+ }
+
+
+ /**
+ * This method initializes jList1
+ *
+ * @return javax.swing.JList
+ */
+ private JList getProfileGrants()
+ {
+ if ( existingList == null )
+ {
+ existingList = new JList();
+ String tooltip = null;
+ if ( forGrants )
+ {
+ tooltip = "Permissions already assigned to profile grants";
+ }
+ else
+ {
+ tooltip = "Permissions already assigned to profile denials";
+ }
+ existingList.setToolTipText( tooltip );
+ existingList.setModel( getDefaultListModel1() );
+ }
+ return existingList;
+ }
+
+
+ /**
+ * This method initializes defaultListModel
+ *
+ * @return javax.swing.DefaultListModel
+ */
+ private DefaultListModel getDefaultListModel()
+ {
+ if ( availableModel == null )
+ {
+ availableModel = new DefaultListModel();
+ }
+ return availableModel;
+ }
+
+
+ /**
+ * This method initializes defaultListModel1
+ *
+ * @return javax.swing.DefaultListModel
+ */
+ private DefaultListModel getDefaultListModel1()
+ {
+ if ( existingModel == null )
+ {
+ existingModel = new DefaultListModel();
+ }
+ return existingModel;
+ }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfileRolesPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfileRolesPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfileRolesPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProfileRolesPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,373 @@
+/*
+ * 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 java.util.Set;
+
+import javax.swing.DefaultListModel;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.safehaus.triplesec.admin.Role;
+
+
+public class ProfileRolesPanel extends JPanel
+{
+ private static final long serialVersionUID = 5014497087645715424L;
+
+ private JPanel jPanelRoles5 = null;
+ private JPanel jPanelRoles6 = null;
+ private JPanel jPanelRoles7 = null;
+ private JList availableRoles = null;
+ private JList existingRoles = null;
+ private JButton addButton = null;
+ private JButton removeButton = null;
+ private JScrollPane jScrollPane4 = null;
+ private JScrollPane jScrollPane5 = null;
+ private DefaultListModel availableModel = null; // @jve:decl-index=0:visual-constraint=""
+ private DefaultListModel existingModel = null; // @jve:decl-index=0:visual-constraint=""
+
+
+ /**
+ * This is the default constructor
+ */
+ public ProfileRolesPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void populateLists( DefaultMutableTreeNode applicationNode, Set roles )
+ {
+ if ( applicationNode == null )
+ {
+ return;
+ }
+
+ // -------------------------------------------------------------------
+ // Find the Roles container under the application and clear lists
+ // -------------------------------------------------------------------
+
+ availableModel.clear();
+ existingModel.clear();
+ DefaultMutableTreeNode rolesNode = null;
+ for ( Enumeration ii = applicationNode.children(); ii.hasMoreElements(); /**/ )
+ {
+ DefaultMutableTreeNode child = ( DefaultMutableTreeNode ) ii.nextElement();
+ if ( "Roles".equals( child.getUserObject() ) )
+ {
+ rolesNode = child;
+ break;
+ }
+ }
+
+ // -------------------------------------------------------------------
+ // Fill up the available roles list and the existing roles list
+ // -------------------------------------------------------------------
+
+ for ( Enumeration ii = rolesNode.children(); ii.hasMoreElements(); /**/)
+ {
+ Role role = ( Role ) ( ( DefaultMutableTreeNode ) ii.nextElement() ).getUserObject();
+ if ( !roles.contains( role.getName() ) )
+ {
+ availableModel.addElement( role.getName() );
+ }
+ }
+ for ( Iterator ii = roles.iterator(); ii.hasNext(); /**/)
+ {
+ existingModel.addElement( ii.next() );
+ }
+ }
+
+
+ public DefaultListModel getAvailableRolesModel()
+ {
+ return availableModel;
+ }
+
+
+ public DefaultListModel getProfileRolesModel()
+ {
+ return existingModel;
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize(613, 254);
+ setLayout( new BorderLayout() );
+ add( getAvailableRolesPanel(), java.awt.BorderLayout.WEST );
+ add( getButtonPanel(), java.awt.BorderLayout.CENTER );
+ add( getExistingRolesPanel(), java.awt.BorderLayout.EAST );
+ }
+
+
+ /**
+ * This method initializes jPanel5
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getAvailableRolesPanel()
+ {
+ if ( jPanelRoles5 == null )
+ {
+ jPanelRoles5 = new JPanel();
+ jPanelRoles5.setLayout( new BorderLayout() );
+ jPanelRoles5.setBorder( javax.swing.BorderFactory.createTitledBorder( null, "Available Roles",
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+ javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null ) );
+ jPanelRoles5.setPreferredSize( new java.awt.Dimension( 200, 35 ) );
+ jPanelRoles5.add( getJScrollPane4(), java.awt.BorderLayout.CENTER );
+ }
+ return jPanelRoles5;
+ }
+
+
+ /**
+ * This method initializes jPanel6
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getButtonPanel()
+ {
+ if ( jPanelRoles6 == null )
+ {
+ GridBagConstraints gridBagConstraints14 = new GridBagConstraints();
+ gridBagConstraints14.gridx = 0;
+ gridBagConstraints14.insets = new java.awt.Insets( 10, 0, 0, 0 );
+ gridBagConstraints14.gridy = 1;
+ GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
+ gridBagConstraints5.gridx = 0;
+ gridBagConstraints5.gridy = 0;
+ jPanelRoles6 = new JPanel();
+ jPanelRoles6.setLayout( new GridBagLayout() );
+ jPanelRoles6.add( getAddRolesButton(), gridBagConstraints5 );
+ jPanelRoles6.add( getRemoveRolesButton(), gridBagConstraints14 );
+ }
+ return jPanelRoles6;
+ }
+
+
+ /**
+ * This method initializes jPanel7
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getExistingRolesPanel()
+ {
+ if ( jPanelRoles7 == null )
+ {
+ jPanelRoles7 = new JPanel();
+ jPanelRoles7.setLayout( new BorderLayout() );
+ jPanelRoles7.setPreferredSize( new java.awt.Dimension( 200, 10 ) );
+ jPanelRoles7.setBorder( javax.swing.BorderFactory.createTitledBorder( null, "Profile Roles",
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+ javax.swing.border.TitledBorder.DEFAULT_POSITION,
+ new java.awt.Font( "Dialog", java.awt.Font.BOLD, 12 ), new java.awt.Color( 51, 51, 51 ) ) );
+ jPanelRoles7.add( getJScrollPane5(), java.awt.BorderLayout.CENTER );
+ }
+ return jPanelRoles7;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getAddRolesButton()
+ {
+ if ( addButton == null )
+ {
+ addButton = new JButton();
+ addButton.setToolTipText( "Add selected roles to profile" );
+ addButton.setIcon( new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/rightarrow_16x16.png" ) ) );
+ addButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ Object[] selectedValues = availableRoles.getSelectedValues();
+ if ( selectedValues == null || selectedValues.length == 0 )
+ {
+ return;
+ }
+
+ for ( int ii = 0; ii < selectedValues.length; ii++ )
+ {
+ availableModel.removeElement( selectedValues[ii] );
+ existingModel.add( 0, selectedValues[ii] );
+ }
+ }
+ } );
+ }
+ return addButton;
+ }
+
+
+ /**
+ * This method initializes jButton1
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getRemoveRolesButton()
+ {
+ if ( removeButton == null )
+ {
+ removeButton = new JButton();
+ removeButton.setToolTipText( "Remove selected roles from profile" );
+ removeButton.setIcon( new ImageIcon( getClass().getResource(
+ "/org/safehaus/triplesec/admin/swing/leftarrow_16x16.png" ) ) );
+ removeButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ Object[] selectedValues = existingRoles.getSelectedValues();
+ if ( selectedValues == null || selectedValues.length == 0 )
+ {
+ return;
+ }
+
+ for ( int ii = 0; ii < selectedValues.length; ii++ )
+ {
+ existingModel.removeElement( selectedValues[ii] );
+ availableModel.add( 0, selectedValues[ii] );
+ }
+ }
+ } );
+ }
+ return removeButton;
+ }
+
+
+ /**
+ * This method initializes jScrollPane4
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane4()
+ {
+ if ( jScrollPane4 == null )
+ {
+ jScrollPane4 = new JScrollPane();
+ jScrollPane4.setViewportView( getApplicationRoles() );
+ }
+ return jScrollPane4;
+ }
+
+
+ /**
+ * This method initializes jScrollPane5
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane5()
+ {
+ if ( jScrollPane5 == null )
+ {
+ jScrollPane5 = new JScrollPane();
+ jScrollPane5.setViewportView( getProfileRoles() );
+ }
+ return jScrollPane5;
+ }
+
+
+ /**
+ * This method initializes jList1
+ *
+ * @return javax.swing.JList
+ */
+ private JList getProfileRoles()
+ {
+ if ( existingRoles == null )
+ {
+ existingRoles = new JList();
+ existingRoles.setToolTipText( "Roles already assigned to profile roles" );
+ existingRoles.setModel( getRolesDefaultListModel1() );
+ }
+ return existingRoles;
+ }
+
+
+ /**
+ * This method initializes jList
+ *
+ * @return javax.swing.JList
+ */
+ private JList getApplicationRoles()
+ {
+ if ( availableRoles == null )
+ {
+ availableRoles = new JList();
+ availableRoles.setPreferredSize( new java.awt.Dimension( 0, 0 ) );
+ availableRoles.setToolTipText( "Application roles assignable to profile" );
+ availableRoles.setModel( getRolesDefaultListModel() );
+ }
+ return availableRoles;
+ }
+
+
+ /**
+ * This method initializes defaultListModel
+ *
+ * @return javax.swing.DefaultListModel
+ */
+ private DefaultListModel getRolesDefaultListModel()
+ {
+ if ( availableModel == null )
+ {
+ availableModel = new DefaultListModel();
+ }
+ return availableModel;
+ }
+
+
+ /**
+ * This method initializes defaultListModel1
+ *
+ * @return javax.swing.DefaultListModel
+ */
+ private DefaultListModel getRolesDefaultListModel1()
+ {
+ if ( existingModel == null )
+ {
+ existingModel = new DefaultListModel();
+ }
+ return existingModel;
+ }
+
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProvisioningPanel.java
URL: http://svn.apache.org/viewvc/directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProvisioningPanel.java?view=auto&rev=486187
==============================================================================
--- directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProvisioningPanel.java (added)
+++ directory/trunks/triplesec/swing-admin/src/main/java/org/safehaus/triplesec/admin/swing/ProvisioningPanel.java Tue Dec 12 07:23:31 2006
@@ -0,0 +1,809 @@
+/*
+ * 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.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+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 java.io.IOException;
+import java.util.Date;
+import java.util.Properties;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.swing.ButtonGroup;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.safehaus.triplesec.admin.HauskeysUser;
+import org.safehaus.triplesec.admin.HauskeysUserModifier;
+import org.safehaus.triplesec.configuration.MutableTriplesecStartupConfiguration;
+
+import com.sun.mail.smtp.SMTPTransport;
+
+import javax.swing.JButton;
+
+
+public class ProvisioningPanel extends JPanel implements StatusObject, KeyListener, FocusListener
+{
+ private static final long serialVersionUID = 1L;
+
+ private JTextField emailTextField = null;
+ private JTextField mobileTextField = null;
+ private JComboBox mobileCarrierComboBox = null;
+ private JPasswordField tokenPinPasswordField = null;
+ private JTextField midletNameTextField = null;
+ private JPanel jPanel5 = null;
+ private JRadioButton emailRadioButton = null;
+ private JRadioButton smsRadioButton = null;
+ private ButtonGroup notifyByButtonGroup;
+ 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;
+ private JButton deployButton = null;
+ private AdminFrame adminFrame = null;
+
+
+ /**
+ * This is the default constructor
+ */
+ public ProvisioningPanel()
+ {
+ super();
+ initialize();
+ }
+
+
+ public void setAdminFrame( AdminFrame adminFrame )
+ {
+ this.adminFrame = adminFrame;
+ }
+
+
+ public void setNewEntityMode( boolean newEnityMode )
+ {
+ this.newEntityMode = newEnityMode;
+ }
+
+
+ public void setStatusListener( StatusListener listener )
+ {
+ this.listener = listener;
+ }
+
+
+ public void setFields( HauskeysUser hauskeysUser )
+ {
+ user = hauskeysUser;
+ this.lastStatusState = true;
+ emailTextField.setText( hauskeysUser.getEmail() );
+ mobileTextField.setText( hauskeysUser.getMobile() );
+ tokenPinPasswordField.setText( hauskeysUser.getTokenPin() );
+ midletNameTextField.setText( hauskeysUser.getMidletName() );
+ if ( hauskeysUser.getNotifyBy() == null || hauskeysUser.getNotifyBy().equals( "null" ) )
+ {
+ notifyByButtonGroup.setSelected( null, false );
+ notifyByButtonGroup.remove( smsRadioButton );
+ notifyByButtonGroup.remove( emailRadioButton );
+ smsRadioButton.setSelected( false );
+ emailRadioButton.setSelected( false );
+ notifyByButtonGroup.add( smsRadioButton );
+ notifyByButtonGroup.add( emailRadioButton );
+ }
+ else if ( hauskeysUser.getNotifyBy().equalsIgnoreCase( "sms" ) )
+ {
+ notifyByButtonGroup.setSelected( smsRadioButton.getModel(), true );
+ }
+ else if ( hauskeysUser.getNotifyBy().equalsIgnoreCase( "email" ) )
+ {
+ notifyByButtonGroup.setSelected( emailRadioButton.getModel(), true );
+ }
+ else
+ {
+ throw new IllegalStateException( "Unknown value for notifyBy property in user: "
+ + hauskeysUser.getNotifyBy() );
+ }
+
+ if ( hauskeysUser.getMobileCarrier() != null && ! hauskeysUser.getMobileCarrier().equals( "null" ) )
+ {
+ Carrier carrier = Carrier.getCarrier( hauskeysUser.getMobileCarrier() );
+ mobileCarrierComboBox.setSelectedItem( carrier );
+ }
+ else
+ {
+ mobileCarrierComboBox.setSelectedIndex( -1 );
+ }
+ }
+
+
+ public void alterModifier( HauskeysUserModifier modifier )
+ {
+ modifier.setEmail( emailTextField.getText() );
+ modifier.setMobile( mobileTextField.getText() );
+ modifier.setMobileCarrier( String.valueOf( mobileCarrierComboBox.getSelectedItem() ) );
+ modifier.setTokenPin( new String( tokenPinPasswordField.getPassword() ) );
+ modifier.setMidletName( midletNameTextField.getText() );
+ if ( emailRadioButton.isSelected() )
+ {
+ modifier.setNotifyBy( "email" );
+ }
+ else
+ {
+ modifier.setNotifyBy( "sms" );
+ }
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ GridBagConstraints gridBagConstraints = new GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 6;
+ this.setSize(525, 242);
+ GridBagConstraints gridBagConstraints44 = new GridBagConstraints();
+ gridBagConstraints44.gridx = 1;
+ gridBagConstraints44.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints44.insets = new java.awt.Insets(0,0,5,5);
+ gridBagConstraints44.gridy = 5;
+ GridBagConstraints gridBagConstraints43 = new GridBagConstraints();
+ gridBagConstraints43.gridx = 0;
+ gridBagConstraints43.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints43.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints43.gridy = 5;
+ JLabel jLabel20 = new JLabel();
+ jLabel20.setText( "Provisioning Mechanism:" );
+ jLabel20.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints42 = new GridBagConstraints();
+ gridBagConstraints42.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints42.gridy = 4;
+ gridBagConstraints42.weightx = 1.0;
+ gridBagConstraints42.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints42.gridx = 1;
+ GridBagConstraints gridBagConstraints41 = new GridBagConstraints();
+ gridBagConstraints41.gridx = 0;
+ gridBagConstraints41.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints41.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints41.gridy = 4;
+ JLabel jLabel19 = new JLabel();
+ jLabel19.setText( "Midlet Name:" );
+ jLabel19.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints40 = new GridBagConstraints();
+ gridBagConstraints40.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints40.gridy = 3;
+ gridBagConstraints40.weightx = 1.0;
+ gridBagConstraints40.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints40.gridx = 1;
+ GridBagConstraints gridBagConstraints39 = new GridBagConstraints();
+ gridBagConstraints39.gridx = 0;
+ gridBagConstraints39.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints39.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints39.gridy = 3;
+ JLabel jLabel18 = new JLabel();
+ jLabel18.setText( "Hauskeys Pin:" );
+ jLabel18.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints38 = new GridBagConstraints();
+ gridBagConstraints38.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints38.gridy = 2;
+ gridBagConstraints38.weightx = 0.5D;
+ gridBagConstraints38.insets = new java.awt.Insets( 0, 0, 5, 200 );
+ gridBagConstraints38.gridx = 1;
+ GridBagConstraints gridBagConstraints37 = new GridBagConstraints();
+ gridBagConstraints37.gridx = 0;
+ gridBagConstraints37.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints37.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints37.gridy = 2;
+ JLabel jLabel17 = new JLabel();
+ jLabel17.setText( "Mobile Carrier:" );
+ jLabel17.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints36 = new GridBagConstraints();
+ gridBagConstraints36.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints36.gridy = 1;
+ gridBagConstraints36.weightx = 1.0;
+ gridBagConstraints36.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints36.gridx = 1;
+ GridBagConstraints gridBagConstraints35 = new GridBagConstraints();
+ gridBagConstraints35.gridx = 0;
+ gridBagConstraints35.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints35.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints35.gridy = 1;
+ JLabel jLabel16 = new JLabel();
+ jLabel16.setText( "Mobile:" );
+ jLabel16.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ GridBagConstraints gridBagConstraints34 = new GridBagConstraints();
+ gridBagConstraints34.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints34.gridy = 0;
+ gridBagConstraints34.weightx = 1.0;
+ gridBagConstraints34.insets = new java.awt.Insets( 0, 0, 5, 5 );
+ gridBagConstraints34.gridx = 1;
+ GridBagConstraints gridBagConstraints33 = new GridBagConstraints();
+ gridBagConstraints33.gridx = 0;
+ gridBagConstraints33.insets = new java.awt.Insets( 0, 5, 5, 5 );
+ gridBagConstraints33.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints33.gridy = 0;
+ JLabel jLabel15 = new JLabel();
+ jLabel15.setText( "Email:" );
+ jLabel15.setHorizontalAlignment( javax.swing.SwingConstants.RIGHT );
+ setLayout( new GridBagLayout() );
+ add( jLabel15, gridBagConstraints33 );
+ add( getEmailTextField(), gridBagConstraints34 );
+ add( jLabel16, gridBagConstraints35 );
+ add( getMobileTextField(), gridBagConstraints36 );
+ add( jLabel17, gridBagConstraints37 );
+ add( getMobileCarrierComboBox(), gridBagConstraints38 );
+ add( jLabel18, gridBagConstraints39 );
+ add( getTokenPinPasswordField(), gridBagConstraints40 );
+ add( jLabel19, gridBagConstraints41 );
+ add( getMidletNameTextField(), gridBagConstraints42 );
+ add( jLabel20, gridBagConstraints43 );
+ this.add(getJPanel5(), gridBagConstraints44);
+ this.add(getDeployButton(), gridBagConstraints);
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getEmailTextField()
+ {
+ if ( emailTextField == null )
+ {
+ emailTextField = new JTextField();
+ emailTextField.addFocusListener( this );
+ emailTextField.addKeyListener( this );
+ }
+ return emailTextField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getMobileTextField()
+ {
+ if ( mobileTextField == null )
+ {
+ mobileTextField = new JTextField();
+ mobileTextField.addFocusListener( this );
+ mobileTextField.addKeyListener( this );
+ }
+ return mobileTextField;
+ }
+
+
+ /**
+ * This method initializes jComboBox
+ *
+ * @return javax.swing.JComboBox
+ */
+ private JComboBox getMobileCarrierComboBox()
+ {
+ if ( mobileCarrierComboBox == null )
+ {
+ mobileCarrierComboBox = new JComboBox( Carrier.CARRIERS );
+ mobileCarrierComboBox.setPreferredSize( new java.awt.Dimension( 32, 19 ) );
+ mobileCarrierComboBox.addActionListener( new ActionListener () {
+ public void actionPerformed( ActionEvent e )
+ {
+ checkStatus();
+ }});
+ }
+ return mobileCarrierComboBox;
+ }
+
+
+ /**
+ * This method initializes jPasswordField
+ *
+ * @return javax.swing.JPasswordField
+ */
+ private JPasswordField getTokenPinPasswordField()
+ {
+ if ( tokenPinPasswordField == null )
+ {
+ tokenPinPasswordField = new JPasswordField();
+ tokenPinPasswordField.addFocusListener( this );
+ tokenPinPasswordField.addKeyListener( this );
+ }
+ return tokenPinPasswordField;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getMidletNameTextField()
+ {
+ if ( midletNameTextField == null )
+ {
+ midletNameTextField = new JTextField();
+ midletNameTextField.addFocusListener( this );
+ midletNameTextField.addKeyListener( this );
+ }
+ return midletNameTextField;
+ }
+
+
+ /**
+ * This method initializes jPanel5
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel5()
+ {
+ if ( jPanel5 == null )
+ {
+ FlowLayout flowLayout1 = new FlowLayout();
+ flowLayout1.setAlignment( java.awt.FlowLayout.LEFT );
+ flowLayout1.setHgap(10);
+ jPanel5 = new JPanel();
+ jPanel5.setLayout( flowLayout1 );
+ jPanel5.add( getEmailRadioButton(), null );
+ jPanel5.add( getSmsRadioButton(), null );
+ notifyByButtonGroup = new ButtonGroup();
+ notifyByButtonGroup.add( getEmailRadioButton() );
+ notifyByButtonGroup.add( getSmsRadioButton() );
+ }
+ return jPanel5;
+ }
+
+
+ /**
+ * This method initializes jRadioButton
+ *
+ * @return javax.swing.JRadioButton
+ */
+ private JRadioButton getEmailRadioButton()
+ {
+ if ( emailRadioButton == null )
+ {
+ emailRadioButton = new JRadioButton();
+ emailRadioButton.setText( "Email" );
+ emailRadioButton.addActionListener( new ActionListener() {
+ public void actionPerformed( ActionEvent e )
+ {
+ checkStatus();
+ }} );
+ }
+ return emailRadioButton;
+ }
+
+
+ /**
+ * This method initializes jRadioButton1
+ *
+ * @return javax.swing.JRadioButton
+ */
+ private JRadioButton getSmsRadioButton()
+ {
+ if ( smsRadioButton == null )
+ {
+ smsRadioButton = new JRadioButton();
+ smsRadioButton.setText( "SMS WAP Push" );
+ smsRadioButton.addActionListener( new ActionListener() {
+ public void actionPerformed( ActionEvent e )
+ {
+ checkStatus();
+ }} );
+ }
+ return smsRadioButton;
+ }
+
+
+ public String getEmail()
+ {
+ return emailTextField.getText();
+ }
+
+
+ public String getMobile()
+ {
+ return mobileTextField.getText();
+ }
+
+
+ public Carrier getMobileCarrier()
+ {
+ return ( Carrier ) mobileCarrierComboBox.getSelectedItem();
+ }
+
+
+ public String getTokenPin()
+ {
+ return new String( tokenPinPasswordField.getPassword() );
+ }
+
+
+ public String getMidletName()
+ {
+ return midletNameTextField.getText();
+ }
+
+
+ public String getNotifyBy()
+ {
+ if ( emailRadioButton.isSelected() )
+ {
+ return "email";
+ }
+ return "sms";
+ }
+
+
+ private void checkStatus()
+ {
+ boolean upToDate = isUpToDate();
+ if ( listener != null && lastStatusState != upToDate )
+ {
+ listener.statusChanged( ProvisioningPanel.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();
+ }
+
+
+ private boolean isNotifyByUpToDate( String value )
+ {
+ if ( value == null && !emailRadioButton.isSelected() && !smsRadioButton.isSelected() )
+ {
+ return true;
+ }
+
+ if ( value == null )
+ {
+ return false;
+ }
+
+ if ( emailRadioButton.isSelected() && value.equals( "email" ) )
+ {
+ return true;
+ }
+
+ if ( this.smsRadioButton.isSelected() && value.equals( "sms" ) )
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+
+ private boolean isCarrierUpToDate( String carrier )
+ {
+ if ( carrier == null && mobileCarrierComboBox.getSelectedIndex() == -1 )
+ {
+ return true;
+ }
+
+ if ( carrier == null )
+ {
+ return false;
+ }
+
+ if ( carrier.equals( "null" ) )
+ {
+ return true;
+ }
+
+ return carrier.equals( mobileCarrierComboBox.getSelectedItem().toString() );
+ }
+
+
+ public boolean isUpToDate()
+ {
+ if ( newEntityMode )
+ {
+ return UiUtils.isFieldUpToDate( this.emailTextField, null ) &&
+ UiUtils.isFieldUpToDate( this.midletNameTextField, null ) &&
+ UiUtils.isFieldUpToDate( this.mobileTextField, null ) &&
+ UiUtils.isFieldUpToDate( this.tokenPinPasswordField, null ) &&
+ isNotifyByUpToDate( null ) && isCarrierUpToDate( null );
+ }
+ return UiUtils.isFieldUpToDate( this.emailTextField, user.getEmail() ) &&
+ UiUtils.isFieldUpToDate( this.midletNameTextField, user.getMidletName() ) &&
+ UiUtils.isFieldUpToDate( this.mobileTextField, user.getMobile() ) &&
+ UiUtils.isFieldUpToDate( this.tokenPinPasswordField, user.getTokenPin() ) &&
+ isNotifyByUpToDate( user.getNotifyBy() ) && isCarrierUpToDate( user.getMobileCarrier() );
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getDeployButton()
+ {
+ if ( deployButton == null )
+ {
+ deployButton = new JButton();
+ deployButton.setText("Deploy");
+ deployButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed( java.awt.event.ActionEvent e )
+ {
+ if ( emailRadioButton.isSelected() )
+ {
+ if ( emailTextField.getText() == null || emailTextField.getText().length() == 0 )
+ {
+ JOptionPane.showMessageDialog( ProvisioningPanel.this,
+ "Cannot deploy via email without a valid email address." );
+ return;
+ }
+
+ try
+ {
+ deployByEmail();
+ }
+ catch ( Exception e1 )
+ {
+ String msg = UiUtils.wrap( "Failed to provision application: " + e1.getMessage(), 79 );
+ JOptionPane.showMessageDialog( ProvisioningPanel.this,
+ msg, "Failed to deploy!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+ else
+ {
+ if ( mobileTextField.getText() == null || mobileTextField.getText().length() == 0 )
+ {
+ JOptionPane.showMessageDialog( ProvisioningPanel.this,
+ "Cannot deploy via email without a valid email address." );
+ return;
+ }
+
+ try
+ {
+ deployBySms();
+ }
+ catch ( Exception e1 )
+ {
+ String msg = UiUtils.wrap( "Failed to provision application: " + e1.getMessage(), 79 );
+ JOptionPane.showMessageDialog( ProvisioningPanel.this,
+ msg, "Failed to deploy!", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+ }
+ }
+
+ } );
+ }
+ return deployButton;
+ }
+
+
+ private void deployBySms() throws HttpException, IOException
+ {
+ String smsTransportUrl = null;
+ String activationUrl = null;
+ String mobile = mobileTextField.getText();
+ String activationKey = user.getActivationKey();
+ String smsUsername = null;
+ String smsAccountName = null;
+ String smsPassword = null;
+ String carrier = this.getMobileCarrierComboBox().getSelectedItem().toString();
+
+ if ( adminFrame.getSettings() == null && !adminFrame.getConfigurationFileManager().isConfigurationLoaded() )
+ {
+ if ( ! adminFrame.doLoadSettings() )
+ {
+ return;
+ }
+
+ smsTransportUrl = adminFrame.getSettings().getDefaultSmsConfig().getSmsTransportUrl();
+ smsPassword = adminFrame.getSettings().getDefaultSmsConfig().getSmsPassword();
+ smsUsername = adminFrame.getSettings().getDefaultSmsConfig().getSmsUsername();
+ smsAccountName = adminFrame.getSettings().getDefaultSmsConfig().getSmsAccountName();
+ activationUrl = adminFrame.getSettings().getPresentationBaseUrl() + "/activation";
+ }
+ else if ( adminFrame.getConfigurationFileManager().isConfigurationLoaded() )
+ {
+ MutableTriplesecStartupConfiguration config = adminFrame.getConfigurationFileManager().getConfiguration();
+ smsTransportUrl = config.getSmsConfiguration().getSmsTransportUrl();
+ smsUsername = config.getSmsConfiguration().getSmsUsername();
+ smsAccountName = config.getSmsConfiguration().getSmsAccountName();
+ smsPassword = config.getSmsConfiguration().getSmsPassword();
+ activationUrl = config.getPresentationBaseUrl() + "/activation";
+ }
+
+ HttpClient client = new HttpClient();
+ HttpMethod method = new PostMethod( smsTransportUrl );
+ int carrierCode = 31004;
+ if ( carrier.equalsIgnoreCase( "AT&T" ) )
+ {
+ carrierCode = 31001;
+ }
+ else if ( carrier.equalsIgnoreCase( "Cingular" ) )
+ {
+ carrierCode = 31002;
+ }
+ else if ( carrier.equalsIgnoreCase( "Verizon" ) )
+ {
+ carrierCode = 31003;
+ }
+ else if ( carrier.equalsIgnoreCase( "T-Mobile" ) )
+ {
+ carrierCode = 31004;
+ }
+ else if ( carrier.equalsIgnoreCase( "Sprint" ) )
+ {
+ carrierCode = 31005;
+ }
+ else if ( carrier.equalsIgnoreCase( "Nextel" ) )
+ {
+ carrierCode = 31007;
+ }
+
+ if ( mobile.startsWith( "+" ) )
+ {
+ mobile = mobile.substring( 1 );
+ }
+
+ if ( mobile.startsWith( "1" ) )
+ {
+ mobile = mobile.substring( 1 );
+ if ( mobile.length() < 10 )
+ {
+ throw new RuntimeException( "mobile phone number was not 10 digits in length" );
+ }
+ }
+ NameValuePair[] params = new NameValuePair[] {
+ new NameValuePair( "Carrier", String.valueOf( carrierCode ) ),
+ new NameValuePair( "UID", smsUsername ),
+ new NameValuePair( "PWD", smsPassword ),
+ new NameValuePair( "Campaign", smsAccountName ),
+ new NameValuePair( "CellNumber", mobile ),
+ new NameValuePair( "msg", activationUrl + "/" + activationKey + "/HausKeys.jar")
+ };
+ method.setQueryString( params );
+ client.executeMethod( method );
+ }
+
+
+ private void deployByEmail() throws AddressException, MessagingException
+ {
+ String email = emailTextField.getText();
+ String activationKey = user.getActivationKey();
+ String activationUrl = null;
+ String smtpHost = null;
+ String smtpFrom = null;
+ boolean doAuthentication = false;
+ String smtpUsername = null;
+ String smtpPassword = null;
+
+
+ if ( adminFrame.getSettings() == null && !adminFrame.getConfigurationFileManager().isConfigurationLoaded() )
+ {
+ if ( ! adminFrame.doLoadSettings() )
+ {
+ return;
+ }
+
+ smtpHost = adminFrame.getSettings().getDefaultSmtpConfig().getSmtpHost();
+ smtpFrom = adminFrame.getSettings().getDefaultSmtpConfig().getSmtpFrom();
+ doAuthentication = adminFrame.getSettings().getDefaultSmtpConfig().isSmtpAuthenticate();
+ smtpUsername = adminFrame.getSettings().getDefaultSmtpConfig().getSmtpUsername();
+ smtpPassword = adminFrame.getSettings().getDefaultSmtpConfig().getSmtpPassword();
+ activationUrl = adminFrame.getSettings().getPresentationBaseUrl() + "/activation";
+ }
+ else if ( adminFrame.getConfigurationFileManager().isConfigurationLoaded() )
+ {
+ MutableTriplesecStartupConfiguration config = adminFrame.getConfigurationFileManager().getConfiguration();
+ activationUrl = config.getPresentationBaseUrl() + "/activation";
+ smtpHost = config.getSmtpConfiguration().getSmtpHost();
+ smtpFrom = config.getSmtpConfiguration().getSmtpFrom();
+ smtpUsername = config.getSmtpConfiguration().getSmtpUsername();
+ smtpPassword = config.getSmtpConfiguration().getSmtpPassword();
+ doAuthentication = config.getSmtpConfiguration().isSmtpAuthenticate();
+ }
+
+ Properties props = new Properties();
+ props.setProperty( "mail.smtp.host", smtpHost );
+ Session session = Session.getInstance( props, null );
+
+ MimeMessage msg = new MimeMessage( session );
+ if ( smtpFrom != null )
+ {
+ msg.setFrom( new InternetAddress( smtpFrom ) );
+ }
+ else
+ {
+ msg.setFrom();
+ }
+
+ msg.setRecipients( Message.RecipientType.TO, InternetAddress.parse( email, false ) );
+ msg.setSubject( "Triplesec account ready for download." );
+ msg.setText( "Download your custom built hauskeys application here:\n"
+ + activationUrl + "/" + activationKey + "/HausKeys.jar" );
+ msg.setHeader( "X-Mailer", "triplesec-registration" );
+ msg.setSentDate( new Date() );
+ SMTPTransport transport = ( SMTPTransport ) session.getTransport( "smtp" );
+ if ( doAuthentication )
+ {
+ transport.connect( smtpHost, smtpUsername, smtpPassword );
+ }
+ else
+ {
+ transport.connect();
+ }
+ transport.sendMessage( msg, msg.getAllRecipients() );
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"