Package org.w3c.jigadmin.editors

Source Code of org.w3c.jigadmin.editors.RealmsServerHelper

// RealmsServerHelper.java
// $Id: RealmsServerHelper.java,v 1.12 2000/08/16 21:37:30 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1998.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigadmin.editors;

import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.BoxLayout;
import javax.swing.BorderFactory;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;

import java.awt.Component;
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import java.util.Properties;
import java.util.Vector;

import org.w3c.jigadmin.RemoteResourceWrapper;
import org.w3c.jigadmin.PropertyManager;
import org.w3c.jigadmin.gui.Message;

import org.w3c.jigsaw.admin.RemoteAccessException;

import org.w3c.tools.sorter.Sorter;
import org.w3c.tools.widgets.Utilities;

/**
* The server helper dedicated to the Realms
* @version $Revision: 1.12 $
* @author  Beno�t Mah� (bmahe@w3.org)
*/
public class RealmsServerHelper extends JPanel
    implements ServerHelperInterface
{
    protected final static String ADD_USER_AC  = "add_user";
    protected final static String DEL_USER_AC  = "del_user";
    protected final static String DEL_REALM_AC = "del_realm";

    protected String                name     = null;
    protected String                tooltip  = null;
    protected RemoteResourceWrapper root     = null;
    protected RemoteResourceWrapper realmrrw = null;
    protected RemoteResourceWrapper userrrw  = null;
    protected Vector                realms   = null;
    protected Vector                users    = null;

    protected JComboBox  combo      = null;
    protected JPanel     usersPanel = null;
    protected JPanel     userPanel  = null;
    protected JList      usersList  = null;
    protected JTextField userT      = null;

    /**
     * Our internal ActionListener
     */
    ActionListener al = new ActionListener() {
  public void actionPerformed(ActionEvent e) {
      Object obj = e.getSource();
      if (obj == combo) {
    String realm = (String)combo.getSelectedItem();
    if (realms.contains(realm))
    selectRealm(realm);
    else if (realm.length() > 0)
    addRealm(realm);
      } else if (e.getActionCommand().equals(ADD_USER_AC) ||
           (obj == userT))
      {
    String user = userT.getText();
    if ((user.length() > 0) && (! users.contains(user)))
    addUser(user);
      } else if (e.getActionCommand().equals(DEL_USER_AC)) {
    Thread thread = new Thread() {
        public void run() {
      deleteCurrentUser();
        }
    };
    thread.start();
      } else if (e.getActionCommand().equals(DEL_REALM_AC)) {
    Thread thread = new Thread() {
        public void run() {
      deleteCurrentRealm();
        }
    };
    thread.start();
      }
  }
    };

    /**
     * Our internal ListSelectionListener
     */
    ListSelectionListener lsl = new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent e) {
      if (! e.getValueIsAdjusting()) {
    int idx = usersList.getSelectedIndex();
    selectUser((String)users.elementAt(idx));
      }
  }   
    };

    /**
     * Initialize this editor.
     * @param name the editor name
     * @param rrw the RemoteResourceWrapper wrapping the editor node.
     * @param p the editor properties
     */
    public void initialize(String name,
         RemoteResourceWrapper rrw,
         Properties p)
    {
  this.root    = rrw;
  this.name    = name;
  this.tooltip = (String) p.get(TOOLTIP_P);
  build();
    }

    /**
     * Build the interface
     */
    protected void build() {
  removeAll();
  String srealms[] = null;
  try {
      srealms = root.getResource().enumerateResourceIdentifiers();
  } catch (RemoteAccessException ex) {
      while (root.getServerBrowser().shouldRetry(ex)) {
    try {
        srealms =
      root.getResource().enumerateResourceIdentifiers();
        break;
    } catch (RemoteAccessException ex2) {
        ex = ex2;
    }
      }
  }
  if (srealms == null)
      return;

  Sorter.sortStringArray(srealms, true);
  realms = new Vector(srealms.length);
  for (int i = 0 ; i < srealms.length; i++)
      realms.addElement(srealms[i]);

  setLayout(new BorderLayout());

  JPanel comboPanel = new JPanel();
  combo = new JComboBox(realms);
  combo.setEditable(true);
  combo.addActionListener(al);

  JLabel realmLabel1 = new JLabel("Enter the realm name or");
        JLabel realmLabel2 = new JLabel("select one from the list:");
        realmLabel1.setAlignmentX(CENTER_ALIGNMENT);
        realmLabel2.setAlignmentX(CENTER_ALIGNMENT);

  comboPanel.setLayout(new BoxLayout(comboPanel, BoxLayout.Y_AXIS));
        comboPanel.add(realmLabel1);
        comboPanel.add(realmLabel2);
        comboPanel.add(combo);
  TitledBorder border = BorderFactory.createTitledBorder("Realms");
  border.setTitleFont(Utilities.mediumBoldFont);
  comboPanel.setBorder(border);

  usersPanel = new JPanel(new BorderLayout(4,4));
  border = BorderFactory.createTitledBorder("Realm");
  border.setTitleFont(Utilities.mediumBoldFont);
  usersPanel.setBorder(border);

  JPanel realmsPanel = new JPanel(new BorderLayout());
  realmsPanel.add(comboPanel, BorderLayout.NORTH);
  realmsPanel.add(usersPanel, BorderLayout.CENTER);

  userPanel = new JPanel(new BorderLayout());
  initUserPanel();

  add(realmsPanel, BorderLayout.WEST);
  add(userPanel, BorderLayout.CENTER);
    }

    /**
     * Initialize the User Panel.
     */
    protected void initUserPanel() {
  userPanel.removeAll();
  userPanel.invalidate();
  TitledBorder border = BorderFactory.createTitledBorder("User");
  border.setTitleFont(Utilities.mediumBoldFont);
  userPanel.setBorder(border);
  userPanel.validate();
    }

    /**
     * Select (and display) the given realm.
     * @param realm the Realm to select
     */
    protected void selectRealm(String realm) {
  initUserPanel();
  usersPanel.removeAll();
  users = null;
  realmrrw = null;

  try {
      realmrrw = root.getChildResource(realm);
  } catch (RemoteAccessException ex) {
      while (root.getServerBrowser().shouldRetry(ex)) {
    try {
        realmrrw = root.getChildResource(realm);
        break;
    } catch (RemoteAccessException ex2) {
        ex = ex2;
    }
      }
  }
 
  if (realmrrw == null)
      return;

  try {
      String susers[] =
    realmrrw.getResource().enumerateResourceIdentifiers();
      Sorter.sortStringArray(susers, true);
      users = new Vector(susers.length);
      for (int i = 0 ; i < susers.length; i++)
    users.addElement(susers[i]);
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(this, ex);
  }

  if (users == null)
      return;

  //graphics...
  usersPanel.invalidate();
  if (usersList != null)
      usersList.removeListSelectionListener(lsl);
  usersList = new JList(users);
  usersList.addListSelectionListener(lsl);
  usersList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  usersList.setBorder(BorderFactory.createLoweredBevelBorder());

  JButton addUserB = new JButton("Add user");
  addUserB.setMargin(Utilities.insets0);
  addUserB.setActionCommand(ADD_USER_AC);
  addUserB.addActionListener(al);
 
  JButton delRealmB = new JButton("Delete "+realm);
  delRealmB.setMargin(Utilities.insets0);
  delRealmB.setActionCommand(DEL_REALM_AC);
  delRealmB.addActionListener(al);

  userT = new JTextField(8);
  userT.addActionListener(al);

  JPanel p1 = new JPanel(new BorderLayout(1,4));
  p1.add(userT, BorderLayout.WEST);
  p1.add(addUserB, BorderLayout.CENTER);
  //p1.setBorder(BorderFactory.createEtchedBorder());

  JPanel p2 = new JPanel(new GridLayout(2,1));
  p2.add(p1);
  p2.add(delRealmB);

  TitledBorder border =
      BorderFactory.createTitledBorder("Realm: "+realm);
  border.setTitleFont(Utilities.mediumBoldFont);
  usersPanel.setBorder(border);
  usersPanel.add(new JScrollPane(usersList), BorderLayout.CENTER);
  usersPanel.add(p2, BorderLayout.SOUTH);
  usersPanel.validate();
    }

    /**
     * Select (and display) the given user.
     * @param realm the User to select
     */
    protected void selectUser(String user) {
  try {
      if (realmrrw == null) //no realm selected
    return;
      root.getServerBrowser().setCursor(Cursor.WAIT_CURSOR);
      userrrw = realmrrw.getChildResource(user);
      userPanel.removeAll();
      userPanel.invalidate();
      TitledBorder border =
    BorderFactory.createTitledBorder("User: "+user);
      border.setTitleFont(Utilities.mediumBoldFont);
      userPanel.setBorder(border);
      AttributesHelper helper = new AttributesHelper();
      PropertyManager pm = PropertyManager.getPropertyManager();
      Properties props = pm.getEditorProperties(userrrw);
      helper.initialize(userrrw, props);

      JButton delUserB = new JButton("Delete user "+user);
      delUserB.setMargin(Utilities.insets0);
      delUserB.setActionCommand(DEL_USER_AC);
      delUserB.addActionListener(al);

      userPanel.add(helper.getComponent(), BorderLayout.CENTER);
      userPanel.add(delUserB, BorderLayout.SOUTH);
      userPanel.validate();
      root.getServerBrowser().setCursor(Cursor.DEFAULT_CURSOR);
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(this, ex);
  }
    }

    /**
     * Add a user to the current selected realm.
     * @param user the user name
     */
    protected void addUser(String user) {
  try {
      if (realmrrw == null)
    return;
      realmrrw.getResource().
    registerResource(user,
         "org.w3c.jigsaw.auth.AuthUser");
      selectRealm((String)combo.getSelectedItem());
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(this, ex);
  }
    }

    /**
     * Delete the selected user.
     */
    protected void deleteCurrentUser() {
  if (userrrw == null)
      return;
  try {
      userrrw.getResource().delete();
      selectRealm((String)combo.getSelectedItem());
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(this, ex);
  }
    }

    /**
     * Create a new Realm.
     * @param realm The name of the new realm.
     */
    protected void addRealm(String realm) {
  try {
      root.getResource().
    registerResource(realm,
         "org.w3c.jigsaw.auth.AuthRealm");
      combo.invalidate();
      combo.addItem(realm);
      combo.validate();
      selectRealm(realm);
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(this, ex);
  }
    }

    /**
     * Delete the current realm.
     */
    protected void deleteCurrentRealm() {
  if (realmrrw == null) //no realm selected
      return;
  try {
      realmrrw.getResource().delete();
      invalidate();
      build();
      validate();
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(this, ex);
  }
    }

    /**
     * Get the helper name.
     * @return a String instance
     */
    public String getName() {
  return name;
    }

    /**
     * Get the helper tooltip
     * @return a String
     */ 
    public String getToolTip() {
  return tooltip;
    }

    /**
     * Get the Component.
     * @return a Component instance
     */
    public Component getComponent() {
  return this;
    }

    /**
     * Constructor.
     */
    public RealmsServerHelper() {
    }

}
TOP

Related Classes of org.w3c.jigadmin.editors.RealmsServerHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.