Mega Code Archive

 
Categories / Java / Swing JFC
 

Alias Bean

/*  * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. All rights  * reserved. Software written by Ian F. Darwin and others. $Id: LICENSE,v 1.8  * 2004/02/09 03:33:38 ian Exp $  *   * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions are met:  * 1. Redistributions of source code must retain the above copyright notice,  * this list of conditions and the following disclaimer. 2. Redistributions in  * binary form must reproduce the above copyright notice, this list of  * conditions and the following disclaimer in the documentation and/or other  * materials provided with the distribution.  *   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  *   * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee cup"  * logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,  * pioneering role in inventing and promulgating (and standardizing) the Java  * language and environment is gratefully acknowledged.  *   * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for  * inventing predecessor languages C and C++ is also gratefully acknowledged.  */ import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; class AliasBean extends JPanel {   protected Vector aliVector;   protected JList aliJList;   private JTextField nameTF, addrTF;   public AliasBean() {     aliVector = new Vector();     aliJList = new JList();     // XXX MUST FIX THIS     // aliJList.setSelectionMode(JList.SINGLE_SELECTION);     aliJList.addListSelectionListener(new ListSelectionListener() {       public void valueChanged(ListSelectionEvent evt) {         int i = aliJList.getSelectedIndex();         if (i < 0)           return;         Alias al = (Alias) aliVector.get(i);         nameTF.setText(al.getName());         addrTF.setText(al.getAddress());       }     });     setLayout(new BorderLayout());     add(BorderLayout.WEST, new JScrollPane(aliJList));     JPanel rightPanel = new JPanel();     add(BorderLayout.EAST, rightPanel);     rightPanel.setLayout(new GridLayout(0, 1));     JPanel buttons = new JPanel();     rightPanel.add(buttons);     buttons.setLayout(new GridLayout(0, 1, 15, 15));     JButton b;     buttons.add(b = new JButton("Set"));     b.setToolTipText("Add or Change an alias");     b.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent evt) {         int i = aliJList.getSelectedIndex();         if (i < 0) {           // XXX error dialog??           return;         }         setAlias(i, nameTF.getText(), addrTF.getText());       }     });     buttons.add(b = new JButton("Delete"));     b.setToolTipText("Delete the selected alias");     b.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent evt) {         int i = aliJList.getSelectedIndex();         if (i < 0) {           return;         }         deleteAlias(i);       }     });     buttons.add(b = new JButton("Apply"));     b.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent evt) {         System.err.println("NOT WRITTEN YET");       }     });     JPanel fields = new JPanel();     rightPanel.add(fields);     fields.setLayout(new GridLayout(2, 2));     fields.add(new JLabel("Name"));     fields.add(nameTF = new JTextField(10));     fields.add(new JLabel("Address"));     fields.add(addrTF = new JTextField(20));   }   public String expandAlias(String ali) {     Alias a = findAlias(ali);     if (a == null)       return null;     return a.getAddress();   }   public Alias findAlias(String ali) {     for (int i = 0; i < aliVector.size(); i++) {       Alias a = (Alias) aliVector.get(i);       if (a.getName().equals(ali))         return a;     }     return null; // not found   }   /** Add an Alias */   public void addAlias(Alias a) {     Alias al = findAlias(a.getName());     if (al == null) {       aliVector.addElement(a);     } else {       // aliVector.setElement(a); // XXX fuzzy     }     aliJList.setListData(aliVector);   }   /** Add an alias, by its constituent parts */   public void addAlias(String nn, String addr) {     addAlias(new Alias(nn, addr));   }   /** Replace an Alias */   public void setAlias(int n, String nam, String addr) {     // TODO find it, replace it, or add it.     aliVector.setElementAt(new Alias(nam, addr), n);     aliJList.setListData(aliVector);   }   public void deleteAlias(int i) {     aliVector.removeElementAt(i);     aliJList.setListData(aliVector);   } } class Alias {   /** The name for the alias */   protected String name;   /** The email address for this alias */   protected String address;   public Alias(String n, String addr) {     name = n;     address = addr;   }   public String toString() {     return name + " = " + address;   }   /** Get name */   public String getName() {     return name;   }   /** Set name */   public void setName(String name) {     this.name = name;   }   /** Get address */   public String getAddress() {     return address;   }   /** Set address */   public void setAddress(String address) {     this.address = address;   } } /**  * Test for AliasBean.  *   * @version $Id: AliasBeanTest.java,v 1.3 2004/02/09 03:33:48 ian Exp $  */ public class AliasBeanTest extends JFrame {   JButton quitButton;   /** "main program" method - construct and show */   public static void main(String[] av) {     // create a JFrameDemo object, tell it to show up     new AliasBeanTest().setVisible(true);   }   /** Construct the object including its GUI */   public AliasBeanTest() {     super("AliasBeanTest");     Container cp = getContentPane();     AliasBean ab = new AliasBean();     cp.add(BorderLayout.CENTER, ab);     ab.addAlias("ian-cvs", "ian@openbsd.org");     ab.addAlias("ian-dos", "http://www.darwinsys.com/");     cp.add(BorderLayout.SOUTH, quitButton = new JButton("Exit"));     quitButton.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent e) {         setVisible(false);         dispose();         System.exit(0);       }     });     addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         setVisible(false);         dispose();         System.exit(0);       }     });     pack();   } }