1 package org.columba.mail.gui.message.viewer; 2 3 import java.awt.BorderLayout ; 4 import java.awt.Dimension ; 5 import java.awt.Frame ; 6 import java.awt.HeadlessException ; 7 import java.awt.event.ActionEvent ; 8 import java.awt.event.ActionListener ; 9 import java.awt.event.KeyEvent ; 10 11 import javax.swing.BorderFactory ; 12 import javax.swing.DefaultListSelectionModel ; 13 import javax.swing.JButton ; 14 import javax.swing.JComponent ; 15 import javax.swing.JDialog ; 16 import javax.swing.JLabel ; 17 import javax.swing.JPanel ; 18 import javax.swing.JScrollPane ; 19 import javax.swing.KeyStroke ; 20 import javax.swing.SwingConstants ; 21 import javax.swing.event.ListSelectionEvent ; 22 import javax.swing.event.ListSelectionListener ; 23 24 import org.columba.core.gui.base.SingleSideEtchedBorder; 25 import org.columba.core.gui.util.DialogHeaderPanel; 26 import org.frapuccino.checkablelist.CheckableItemImpl; 27 import org.frapuccino.checkablelist.CheckableItemListTableModel; 28 import org.frapuccino.checkablelist.CheckableList; 29 30 import com.jgoodies.forms.builder.ButtonBarBuilder; 31 import com.jgoodies.forms.builder.ButtonStackBuilder; 32 import com.jgoodies.forms.layout.CellConstraints; 33 import com.jgoodies.forms.layout.FormLayout; 34 35 36 public class AddressListDialog extends JDialog implements ActionListener , 37 ListSelectionListener { 38 39 private JButton addContactButton; 40 41 private JButton composeButton; 42 43 private JButton replyButton; 44 45 private JButton forwardButton; 46 47 private JButton closeButton; 48 49 private JButton helpButton; 50 51 private CheckableList list; 52 53 private int index; 54 55 private CheckableItemImpl selection; 56 57 public AddressListDialog(Frame owner) throws HeadlessException { 58 super(owner, true); 59 60 setTitle("Address Manager"); 61 62 initComponents(); 63 64 layoutComponents(); 65 66 getRootPane().registerKeyboardAction(this, "CLOSE", 67 KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), 68 JComponent.WHEN_IN_FOCUSED_WINDOW); 69 pack(); 70 setLocationRelativeTo(null); 71 setVisible(true); 72 } 73 74 private void layoutComponents() { 75 setLayout(new BorderLayout ()); 76 77 add(new DialogHeaderPanel("Manage Address List", 78 "Select email addresses for mass actions"), BorderLayout.NORTH); 79 80 getContentPane().add(createPanel(), BorderLayout.CENTER); 81 82 add(createBottomPanel(), BorderLayout.SOUTH); 83 84 } 85 86 private JPanel createEastPanel() { 87 JPanel eastPanel = new JPanel (); 88 ButtonStackBuilder builder = new ButtonStackBuilder(eastPanel); 89 builder.addGridded(addContactButton); 90 builder.addUnrelatedGap(); 91 builder.addGridded(composeButton); 92 builder.addRelatedGap(); 93 builder.addGridded(replyButton); 94 builder.addRelatedGap(); 95 builder.addGridded(forwardButton); 96 return eastPanel; 97 } 98 99 private JPanel createPanel() { 100 JPanel jpanel1 = new JPanel (); 101 FormLayout formlayout1 = new FormLayout( 102 "FILL:DEFAULT:GROW(1.0),3DLU,FILL:DEFAULT:NONE", 103 "CENTER:DEFAULT:NONE,1DLU,FILL:DEFAULT:GROW(1.0),3DLU,CENTER:DEFAULT:NONE"); 104 CellConstraints cc = new CellConstraints(); 105 jpanel1.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); 106 jpanel1.setLayout(formlayout1); 107 108 JLabel jlabel1 = new JLabel (); 109 jlabel1.setText("Email Address:"); 110 jpanel1.add(jlabel1, cc.xy(1, 1)); 111 112 JScrollPane scrollPane = new JScrollPane (list); 113 scrollPane.setPreferredSize(new Dimension (250, 200)); 114 jpanel1.add(scrollPane, cc.xy(1, 3)); 115 116 jpanel1.add(createEastPanel(), new CellConstraints(3, 3, 1, 1, 117 CellConstraints.DEFAULT, CellConstraints.TOP)); 118 119 return jpanel1; 120 } 121 122 private JPanel createBottomPanel() { 123 JPanel bottomPanel = new JPanel (new BorderLayout ()); 124 bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP)); 125 126 JPanel buttonPanel = new JPanel (); 127 buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); 128 129 ButtonBarBuilder builder2 = new ButtonBarBuilder(buttonPanel); 130 builder2.addGlue(); 132 builder2.addGriddedButtons(new JButton [] { closeButton, helpButton }); 133 134 bottomPanel.add(buttonPanel, BorderLayout.EAST); 135 136 return bottomPanel; 137 } 138 139 private void initComponents() { 140 141 list = new CheckableList(); 142 list.getSelectionModel().addListSelectionListener(this); 143 144 addContactButton = new JButton ("Add Contacts"); 145 146 composeButton = new JButton ("Compose"); 147 148 replyButton = new JButton ("Reply"); 149 150 forwardButton = new JButton ("Forward"); 151 152 closeButton = new JButton ("Close"); 154 closeButton.setDefaultCapable(true); 155 closeButton.setMnemonic('C'); 156 closeButton.addActionListener(new ActionListener () { 157 public void actionPerformed(ActionEvent event) { 158 setVisible(false); 159 } 160 }); 161 162 helpButton = new JButton ("Help"); 164 helpButton.setMnemonic('h'); 165 } 166 167 public void valueChanged(ListSelectionEvent e) { 168 if (e.getValueIsAdjusting()) { 169 return; 170 } 171 172 DefaultListSelectionModel theList = (DefaultListSelectionModel ) e 173 .getSource(); 174 if (!theList.isSelectionEmpty()) { 175 index = theList.getAnchorSelectionIndex(); 176 177 selection = (CheckableItemImpl) ((CheckableItemListTableModel) list 178 .getModel()).getElement(index); 179 180 } 181 } 182 183 public void actionPerformed(ActionEvent e) { 184 String action = e.getActionCommand(); 185 186 if (action.equals("OK")) { 187 } else if (action.equals("CANCEL")) { 188 setVisible(false); 189 } 190 } 191 192 } 193 | Popular Tags |