1 package org.columba.addressbook.gui.tree.util; 19 20 import java.awt.BorderLayout ; 21 import java.awt.GridLayout ; 22 import java.awt.event.ActionEvent ; 23 import java.awt.event.ActionListener ; 24 25 import javax.swing.BorderFactory ; 26 import javax.swing.JButton ; 27 import javax.swing.JDialog ; 28 import javax.swing.JFrame ; 29 import javax.swing.JPanel ; 30 import javax.swing.JScrollPane ; 31 import javax.swing.JTree ; 32 import javax.swing.SwingConstants ; 33 import javax.swing.event.TreeSelectionEvent ; 34 import javax.swing.event.TreeSelectionListener ; 35 import javax.swing.tree.TreeModel ; 36 import javax.swing.tree.TreePath ; 37 38 import org.columba.addressbook.config.FolderItem; 39 import org.columba.addressbook.folder.AddressbookFolder; 40 import org.columba.addressbook.folder.AddressbookTreeNode; 41 import org.columba.addressbook.folder.IFolder; 42 import org.columba.addressbook.gui.tree.AddressbookTreeModel; 43 import org.columba.addressbook.util.AddressbookResourceLoader; 44 import org.columba.core.gui.base.ButtonWithMnemonic; 45 import org.columba.core.gui.base.SingleSideEtchedBorder; 46 47 public class SelectAddressbookFolderDialog extends JDialog implements 48 ActionListener , TreeSelectionListener , ISelectFolderDialog { 49 50 private boolean bool = false; 52 53 private JTree tree; 55 56 private JButton [] buttons; 57 58 private IFolder selectedFolder; 60 61 private TreeModel model; 62 63 public SelectAddressbookFolderDialog(TreeModel model) { 64 super(new JFrame (), true); 65 66 setTitle(AddressbookResourceLoader.getString("tree", "folderdialog", 67 "select_folder")); 68 69 this.model = model; 70 71 initComponents(); 72 73 layoutComponents(); 74 75 pack(); 76 setLocationRelativeTo(null); 77 setVisible(true); 78 } 79 80 private void layoutComponents() { 81 getContentPane().setLayout(new BorderLayout ()); 82 83 JPanel mainPanel = new JPanel (new BorderLayout ()); 84 mainPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); 85 mainPanel.add(new JScrollPane (tree), BorderLayout.CENTER); 86 87 getContentPane().add(mainPanel, BorderLayout.CENTER); 88 89 JPanel bottomPanel = new JPanel (new BorderLayout ()); 90 bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP)); 91 92 JPanel buttonPanel = new JPanel (new GridLayout (1, 2, 6, 0)); 93 buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); 94 95 buttonPanel.add(buttons[0]); 96 buttonPanel.add(buttons[1]); 97 bottomPanel.add(buttonPanel, BorderLayout.EAST); 98 99 getContentPane().add(bottomPanel, BorderLayout.SOUTH); 100 } 101 102 private void initComponents() { 103 buttons = new JButton [3]; 104 105 buttons[0] = new ButtonWithMnemonic(AddressbookResourceLoader 106 .getString("global", "cancel")); 107 buttons[0].setActionCommand("CANCEL"); 108 buttons[0].setDefaultCapable(true); 109 buttons[1] = new ButtonWithMnemonic(AddressbookResourceLoader 110 .getString("global", "ok")); 111 buttons[1].setEnabled(true); 112 buttons[1].setActionCommand("OK"); 113 buttons[2] = new JButton (AddressbookResourceLoader.getString("tree", 114 "folderdialog", "new_subFolder")); 115 buttons[2].setActionCommand("NEW"); 116 buttons[2].setEnabled(false); 117 118 getRootPane().setDefaultButton(buttons[1]); 119 120 tree = new JTree (model); 121 tree.expandRow(0); 122 tree.expandRow(1); 123 tree.putClientProperty("JTree.lineStyle", "Angled"); 124 tree.setShowsRootHandles(true); 125 tree.setRootVisible(false); 126 127 tree.addTreeSelectionListener(this); 128 tree.setCellRenderer(new AddressbookTreeCellRenderer(true)); 129 130 for (int i = 0; i < 3; i++) { 131 buttons[i].addActionListener(this); 132 } 133 134 tree.setSelectionPath(new TreePath (AddressbookTreeModel.getInstance() 135 .getFolder("101").getPath())); 136 } 137 138 public boolean success() { 139 return bool; 140 } 141 142 public IFolder getSelectedFolder() { 143 return selectedFolder; 144 } 145 146 public int getUid() { 147 151 return 101; 152 153 } 155 156 public void actionPerformed(ActionEvent e) { 157 String action = e.getActionCommand(); 158 159 if (action.equals("OK")) { 160 bool = true; 161 setVisible(false); 162 } else if (action.equals("CANCEL")) { 163 bool = false; 164 setVisible(false); 165 } else if (action.equals("NEW")) { 166 176 } 177 } 178 179 183 public void valueChanged(TreeSelectionEvent e) { 184 AddressbookTreeNode node = (AddressbookTreeNode) tree 185 .getLastSelectedPathComponent(); 186 187 if (node == null) { 188 return; 189 } 190 191 FolderItem item = node.getFolderItem(); 192 193 if (item.get("type").equals("AddressbookFolder")) { 194 buttons[1].setEnabled(true); 195 selectedFolder = (AddressbookFolder) node; 196 } else { 197 buttons[1].setEnabled(false); 198 } 199 } 200 } | Popular Tags |