com.ibm.as400.vaccess.PermissionMainPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: PermissionMainPanel.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2001 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.vaccess;
import java.awt.Insets;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JLabel;
import javax.swing.JDialog;
import javax.swing.JSeparator;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.event.ChangeListener;
import com.ibm.as400.access.Permission;
import com.ibm.as400.access.Trace;
import com.ibm.as400.access.UserPermission;
/**
* The PermissionMainPanel class provides three different panels according to
* different library structures of the object.
*/
class PermissionMainPanel
extends JPanel
implements ActionListener,
KeyListener
{
private static final String copyright = "Copyright (C) 1997-2001 International Business Machines Corporation and others.";
/**
* The following five private variables respectively representing
* five JTextField.
**/
private JTextField objectField;
private JTextField typeField;
private JTextField ownerField;
private JTextField groupField;
private JTextField listField;
/**
* Private variable representing a JTextfield in the dialog of Add a User.
**/
private JTextField userNameField;
/**
* The following five variables respectively representing five buttons in the main wondow.
**/
private JButton addButton;
private JButton removeButton;
private JButton okButton;
private JButton cancelButton;
private JButton applyButton;
/**
* Private variable representing the object of Permission.
**/
private Permission permission_;
/**
* Private variable representing JFrame.
**/
private JFrame frame_;
/**
* Private variable representing JTable.
**/
private JTable table_ = null;
/**
* Private variable representing the object of JDialog.
**/
private JDialog removeDialog_;
/**
* Private variable representing the object of JDialog.
**/
private JDialog addDialog_;
/**
* The following three variables respectively representing
* three TableModels of the JTable.
**/
private PermissionTableModelDLO tableModelDLO_;
private PermissionTableModelQSYS tableModelQSYS_;
private PermissionTableModelRoot tableModelRoot_;
/**
* Private variable indicating that the value of listField is changed.
**/
private boolean listChanged = false;
/**
* The following private variables representing the labels for displaying.
**/
private static String addLabel_ = ResourceLoader.getText("DLG_ADD");
private static String cancelLabel_ = ResourceLoader.getText("DLG_CANCEL");
private static String removeLabel_ = ResourceLoader.getText("DLG_REMOVE");
private static String okLabel_ = ResourceLoader.getText("DLG_OK");
private static String yesLabel_ = ResourceLoader.getText("DLG_YES");
private static String noLabel_ = ResourceLoader.getText("DLG_NO");
private static String applyLabel_ = ResourceLoader.getText("DLG_APPLY");
private static String objectName_ = ResourceLoader.getText("OBJECT_NAME");
private static String objectType_ = ResourceLoader.getText("OBJECT_TYPE");
private static String objectOwner_ = ResourceLoader.getText("OBJECT_OWNER");
private static String primaryGroup_ = ResourceLoader.getText("OBJECT_GROUP");
private static String authorizationList_ = ResourceLoader.getText("OBJECT_AUTHORIZATION_LIST");
private static String objectPermission_ = ResourceLoader.getText("OBJECT_PERMISSION");
private static String addDialogTitle_ = ResourceLoader.getText("OBJECT_ADD_DIALOG_TITLE");
private static String removeDialogTitle_ = ResourceLoader.getText("OBJECT_REMOVE_DIALOG_TITLE");
private static String addDialogMessage_ = ResourceLoader.getText("OBJECT_ADD_MESSAGE");
private static String removeDialogMessage_ = ResourceLoader.getText("OBJECT_REMOVE_MESSAGE");
private static String commitDialogMessage_ = ResourceLoader.getText("OBJECT_COMMIT_DIALOG_MESSAGE");
private static String commitDialogTitle_ = ResourceLoader.getText("OBJECT_COMMIT_DIALOG_TITLE");
private static String typeNoDefined_ = ResourceLoader.getText("OBJECT_TYPE_NO_DEFINED");
private static String permissionDialogMessage_ = ResourceLoader.getText("OBJECT_PERMISSION_DIALOG_MESSAGE");
private static String permissionDialogTitle_ = ResourceLoader.getText("OBJECT_PERMISSION_DIALOG_TITLE");
private ErrorEventSupport errorEventSupport_ = new ErrorEventSupport (this);
private VObjectEventSupport objectEventSupport_ = new VObjectEventSupport (this);
private WorkingEventSupport workingEventSupport_ = new WorkingEventSupport (this);
/**
* Constructs a PermissionMainPanel object.
* @param permission The Permission object.
**/
public PermissionMainPanel(Permission permission)
{
permission_ = permission;
}
/**
* Performs actions according to the appropriate event.
* @param event The ActionEvent.
**/
public void actionPerformed(ActionEvent event)
{
workingEventSupport_.fireStartWorking();
// Add button was pressed
if(event.getSource().equals(addButton))
{
String inputValue = JOptionPane.showInputDialog(new JFrame(),
addDialogMessage_,
addDialogTitle_,
JOptionPane.PLAIN_MESSAGE);
if(inputValue !=null)
{
int type =permission_.getType();
switch(type)
{
case Permission.TYPE_DLO :
tableModelDLO_.addRow(inputValue );
break;
case Permission.TYPE_QSYS :
tableModelQSYS_.addRow(inputValue );
break;
case Permission.TYPE_ROOT :
tableModelRoot_.addRow(inputValue );
break;
}
}
}
// Remove button was pressed
if(event.getSource().equals(removeButton))
{
int selectedRow = table_.getSelectedRow();
if(selectedRow >= 0)
{
removeButton.setEnabled(false);
applyButton.setEnabled(true);
int type = permission_.getType();
switch(type)
{
case Permission.TYPE_DLO :
tableModelDLO_.removeRow(table_.getSelectedRow());
break;
case Permission.TYPE_QSYS :
tableModelQSYS_.removeRow(table_.getSelectedRow());
break;
case Permission.TYPE_ROOT :
tableModelRoot_.removeRow(table_.getSelectedRow());
break;
}
table_.clearSelection();
}
}
// OK button was pressed
// Commits if Apply is enabled,and closes the main window.
// If an error occurs, we don't close the main window.
if(event.getSource().equals(okButton))
{
if(applyButton.isEnabled())
{
try
{
if(listChanged)
{
permission_.setAuthorizationList(listField.getText());
listChanged = false;
}
permission_.commit();
frame_.dispose();
}
catch (Exception err)
{
Trace.log(Trace.ERROR,"commit : "+err);
errorEventSupport_.fireError (err);
}
}
else
{
frame_.dispose();
}
}
// Cancel button was pressed
// Closes the main window.
if(event.getSource().equals(cancelButton))
{
frame_.dispose();
}
// Apply button was pressed
// Commits and closes the main window.
if(event.getSource().equals(applyButton))
{
try
{
if(listChanged)
{
permission_.setAuthorizationList(listField.getText());
listChanged = false;
}
permission_.commit();
applyButton.setEnabled(false);
} catch (Exception err)
{
Trace.log(Trace.ERROR,"commit : "+err);
errorEventSupport_.fireError (err);
}
}
workingEventSupport_.fireStopWorking();
}
/**
* Adds a listener to be notified when an error occurs.
*
* @param listener The listener.
**/
public void addErrorListener(ErrorListener listener)
{
errorEventSupport_.addErrorListener(listener);
}
/**
* Adds a listener to be notified when a VObject is changed, created, or deleted.
*
* @param listener The listener.
**/
public void addVObjectListener(VObjectListener listener)
{
objectEventSupport_.addVObjectListener(listener);
}
/**
* Adds a listener to be notified when work starts and stops on potentially long-running operations
*
* @param listener The listener.
**/
public void addWorkingListener(WorkingListener listener)
{
workingEventSupport_.addWorkingListener(listener);
}
/**
* Creates the main panel.
**/
void createPermissionMainPanel()
{
setLayout(new BorderLayout(5,8));
JPanel main = this;
JPanel part1=new JPanel(new BorderLayout(0,5));
//starts one of part1
JPanel box1=new JPanel(new GridLayout(2,1));
JLabel objectLabel =new JLabel(objectName_,JLabel.LEFT);
objectField=new JTextField(permission_.getObjectPath());
objectField.setEditable(false);
box1.add(objectLabel);
box1.add(objectField);
part1.add(box1,BorderLayout.NORTH);
//starts two of part1
JPanel box2 = new JPanel(new GridLayout(1,4,8,0));
JPanel column1 = new JPanel(new GridLayout(2,1));
JPanel column2 = new JPanel(new GridLayout(2,1));
JPanel column3 = new JPanel(new GridLayout(2,1));
JPanel column4 = new JPanel(new GridLayout(2,1));
JLabel typeLabel = new JLabel(objectType_);
int type = permission_.getType();
typeField = new JTextField(typeNoDefined_);
switch (type)
{
case Permission.TYPE_DLO :
typeField = new JTextField("DLO");
break;
case Permission.TYPE_QSYS :
typeField = new JTextField("QSYS");
break;
case Permission.TYPE_ROOT :
typeField = new JTextField("ROOT");
break;
}
typeField.setEditable(false);
column1.add(typeLabel);
column1.add(typeField);
box2.add(column1);
JLabel ownerLabel = new JLabel(objectOwner_);
ownerField = new JTextField(permission_.getOwner());
ownerField.setEditable(false);
column2.add(ownerLabel);
column2.add(ownerField);
box2.add(column2);
JLabel groupLabel = new JLabel(primaryGroup_);
groupField = new JTextField(permission_.getPrimaryGroup());
groupField.setEditable(false);
column3.add(groupLabel);
column3.add(groupField);
box2.add(column3);
JLabel listLabel = new JLabel(authorizationList_);
listField = new JTextField(permission_.getAuthorizationList());
listField.addKeyListener(this);
column4.add(listLabel);
column4.add(listField);
box2.add(column4);
part1.add(box2,BorderLayout.CENTER);
JPanel box3 = new JPanel(new GridLayout(4,1));
box3.add(new JLabel());
box3.add(new JLabel());
box3.add(new JSeparator());
box3.add(new JLabel());
part1.add(box3,BorderLayout.SOUTH);
// Part3
JPanel part3 = new JPanel(new BorderLayout(0,10));
// Creates two buttons - OK and Cancel.
JPanel line1 = new JPanel(new GridLayout(1,6,5,0));
line1.add(new JLabel());
line1.add(new JLabel());
line1.add(new JLabel());
line1.add(new JLabel());
addButton = new JButton(addLabel_);
removeButton = new JButton(removeLabel_);
addButton.addActionListener(this);
removeButton.addActionListener(this);
removeButton.setEnabled(false);
line1.add(addButton);
line1.add(removeButton);
part3.add(line1,BorderLayout.NORTH);
part3.add(new JSeparator(),BorderLayout.CENTER);
JPanel line2 = new JPanel(new GridLayout(1,6,5,0));
line2.add(new JLabel());
line2.add(new JLabel());
line2.add(new JLabel());
okButton = new JButton(okLabel_);
cancelButton = new JButton(cancelLabel_);
applyButton = new JButton(applyLabel_);
okButton.addActionListener(this);
cancelButton.addActionListener(this);
applyButton.addActionListener(this);
applyButton.setEnabled(false);
line2.add(okButton);
line2.add(cancelButton);
line2.add(applyButton);
part3.add(line2,BorderLayout.SOUTH);
main.add(part1,BorderLayout.NORTH);
main.add(part3,BorderLayout.SOUTH);
main.add(getTablePane(),BorderLayout.CENTER);
frame_ = new JFrame(ResourceLoader.substitute(objectPermission_, permission_.getName())); // @C1C
frame_.getContentPane().add(main);
frame_.setSize(650,450);
frame_.setVisible(true);
}
/**
* Invoked when an error has occurred.
*
**/
void fireError(Exception except)
{
errorEventSupport_.fireError(new ErrorEvent(this, except));
}
/**
* Returns The Apply button.
* @return The Apply button.
**/
public JButton getApplyButton()
{
return applyButton;
}
/**
* Returns the text of the field authorization list.
* @return the text of the field authorization list.
**/
public String getAutList()
{
return listField.getText().trim();
}
/**
* Return Insets object that defines the interval with the border.
* @return Insets object that defines the interval with the border.
**/
public Insets getInsets()
{
return new Insets(5,8,5,8);
}
/**
* Returns the authorization list field.
* @return The authorization list field.
**/
public JTextField getListField()
{
return listField;
}
/**
* Returns the Remove button.
* @return The Remove button.
**/
public JButton getRemoveButton()
{
return removeButton;
}
/**
* Return the table pane.
* @return The table component.
**/
private JComponent getTablePane()
{
int type = permission_.getType();
switch(type)
{
case Permission.TYPE_DLO:
tableModelDLO_ = new PermissionTableModelDLO(this,permission_);
table_= new JTable(tableModelDLO_);
tableModelDLO_.setTableInstance(table_);
table_.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
break;
case Permission.TYPE_QSYS:
tableModelQSYS_ = new PermissionTableModelQSYS(this,permission_);
table_= new JTable(tableModelQSYS_);
tableModelQSYS_.setTableInstance(table_);
table_.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
break;
case Permission.TYPE_ROOT:
tableModelRoot_ = new PermissionTableModelRoot(this,permission_);
table_= new JTable(tableModelRoot_);
tableModelRoot_.setTableInstance(table_);
table_.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
break;
}
JScrollPane jsp = null;
if (table_ != null)
{
table_.setAutoCreateColumnsFromModel(false);
table_.setDefaultRenderer(table_.getColumnClass(0),
(TableCellRenderer)new VObjectCellRenderer());
table_.setCellSelectionEnabled(true);
table_.selectAll();
table_.setSelectionMode(0);
table_.setSelectionBackground(Color.gray);
table_.setShowGrid(false);
table_.clearSelection();
// Set the width of the name column to be wide enough to
// display any username (max of 10 characters)
// The +16 is for the icon.
// The +2 is for the space between characters.
// The 'W' is used since it is a very wide character.
if (table_.getFont() != null)
{
int fontSize = table_.getFontMetrics(table_.getFont()).charWidth('W');
table_.getColumnModel().getColumn(0).setWidth(10*(fontSize+2)+16);
}
jsp = new JScrollPane(table_);
}
return jsp;
}
/** The key is pressed.
* @param keyEvent The key event.
**/
public void keyPressed(KeyEvent keyEvent){}
/** The key is released.
* @param keyEvent The key event.
**/
public void keyReleased(KeyEvent keyEvent)
{
switch (keyEvent.getKeyCode())
{
case KeyEvent.VK_TAB :
case KeyEvent.VK_ENTER :
case KeyEvent.VK_ALT :
case KeyEvent.VK_SHIFT :
case KeyEvent.VK_CONTROL :
case KeyEvent.VK_ESCAPE :
case KeyEvent.VK_PAGE_DOWN :
case KeyEvent.VK_PAGE_UP :
case KeyEvent.VK_UP :
case KeyEvent.VK_DOWN :
case KeyEvent.VK_RIGHT :
case KeyEvent.VK_LEFT :
case KeyEvent.VK_HOME :
case KeyEvent.VK_END :
case KeyEvent.VK_INSERT :
case KeyEvent.VK_CAPS_LOCK :
case KeyEvent.VK_NUM_LOCK :
case KeyEvent.VK_PRINTSCREEN :
case KeyEvent.VK_SCROLL_LOCK :
case KeyEvent.VK_PAUSE :
case KeyEvent.VK_F1 :
case KeyEvent.VK_F2 :
case KeyEvent.VK_F3 :
case KeyEvent.VK_F4 :
case KeyEvent.VK_F5 :
case KeyEvent.VK_F6 :
case KeyEvent.VK_F7 :
case KeyEvent.VK_F8 :
case KeyEvent.VK_F9 :
case KeyEvent.VK_F10 :
case KeyEvent.VK_F11 :
case KeyEvent.VK_F12 :
break;
default :
if (!listChanged)
{
listChanged = true;
applyButton.setEnabled(true);
}
if (listField.getText().trim().toUpperCase().equals("*NONE"))
{
// Can't call setValueAt directly because we don't know
// the row for *PUBLIC, but resetPublicAuthorizationList() does.
// permission_.getUserPermission("*PUBLIC").setFromAuthorizationList(false);
int type = permission_.getType();
switch(type)
{
case Permission.TYPE_DLO :
tableModelDLO_.resetPublicAuthorizationList();
break;
case Permission.TYPE_QSYS :
tableModelQSYS_.resetPublicAuthorizationList();
break;
case Permission.TYPE_ROOT :
tableModelRoot_.resetPublicAuthorizationList();
break;
}
}
}
}
/**
* The key is typed.
* @param keyEvent The key event.
**/
public void keyTyped(KeyEvent keyEvent){}
/**
* Removes an error listener.
*
* @param listener The listener.
**/
public void removeErrorListener(ErrorListener listener)
{
errorEventSupport_.removeErrorListener(listener);
}
/**
* Removes a VObjectListener
*
* @param listener The listener.
**/
public void removeVObjectListener(VObjectListener listener)
{
objectEventSupport_.removeVObjectListener(listener);
}
/**
* Removes a working listener.
*
* @param listener The listener.
**/
public void removeWorkingListener(WorkingListener listener)
{
workingEventSupport_.removeWorkingListener(listener);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy