1 package org.columba.chat.ui.dialog; 19 20 import java.awt.BorderLayout ; 21 import java.awt.Frame ; 22 import java.awt.GridLayout ; 23 import java.awt.HeadlessException ; 24 import java.awt.event.ActionEvent ; 25 import java.awt.event.ActionListener ; 26 27 import javax.swing.BorderFactory ; 28 import javax.swing.JButton ; 29 import javax.swing.JCheckBox ; 30 import javax.swing.JDialog ; 31 import javax.swing.JPanel ; 32 import javax.swing.JSpinner ; 33 import javax.swing.JTextField ; 34 import javax.swing.SpinnerNumberModel ; 35 import javax.swing.SwingConstants ; 36 37 import org.columba.addressbook.util.AddressbookResourceLoader; 38 import org.columba.chat.config.api.IAccount; 39 import org.columba.core.gui.base.ButtonWithMnemonic; 40 import org.columba.core.gui.base.SingleSideEtchedBorder; 41 42 import com.jgoodies.forms.builder.DefaultFormBuilder; 43 import com.jgoodies.forms.layout.FormLayout; 44 45 49 50 public class AccountDialog extends JDialog implements ActionListener { 51 52 53 private JTextField serverTextField; 54 55 private JTextField idTextField; 56 57 59 private JTextField resourceTextField; 60 61 private JSpinner portSpinner; 62 63 private JCheckBox enableSSLCheckBox; 64 65 private JButton okButton; 66 67 private JButton registerButton; 68 69 private IAccount account; 70 71 74 public AccountDialog(IAccount account) throws HeadlessException { 75 super(new Frame (), true); 76 77 this.account = account; 78 79 initComponents(); 80 81 layoutComponents(); 82 83 updateComponents(true); 84 85 pack(); 86 87 setLocationRelativeTo(null); 88 89 setVisible(true); 90 } 91 92 private void updateComponents(boolean b) { 93 if (b) { 94 idTextField.setText(account.getId()); 95 serverTextField.setText(account.getHost()); 96 enableSSLCheckBox.setSelected(account.isEnableSSL()); 98 resourceTextField.setText(account.getResource()); 99 100 } else { 101 account.setHost(getServer()); 102 account.setEnableSSL(new Boolean (enableSSLCheckBox.isSelected()) 103 .booleanValue()); 104 account.setResource(resourceTextField.getText()); 105 account.setId(idTextField.getText()); 106 107 } 108 } 109 110 113 private void layoutComponents() { 114 115 JPanel panel = new JPanel (); 116 panel.setLayout(new BorderLayout ()); 117 118 getContentPane().add(panel); 119 120 JPanel center = new JPanel (); 121 center.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); 122 123 panel.add(center, BorderLayout.CENTER); 124 125 FormLayout layout = new FormLayout("right:default, 3dlu, default:grow", 126 ""); 127 128 DefaultFormBuilder b = new DefaultFormBuilder(layout, center); 129 b.setRowGroupingEnabled(true); 130 131 133 b.append("&Server:", serverTextField); 134 135 b.append("&User:", idTextField); 136 b.append("&Resource:", resourceTextField); 138 b.append("&Port:", portSpinner); 139 140 b.append(enableSSLCheckBox, 3); 141 142 JPanel bottomPanel = new JPanel (new BorderLayout ()); 143 bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP)); 144 145 JPanel buttonPanel = new JPanel (new GridLayout (1, 2, 5, 0)); 146 buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); 147 okButton = new ButtonWithMnemonic(AddressbookResourceLoader.getString( 148 "global", "ok")); 149 okButton.setActionCommand("OK"); 150 okButton.addActionListener(this); 151 152 registerButton = new JButton ("Register..."); 153 registerButton.setActionCommand("REGISTER"); 154 registerButton.addActionListener(this); 155 156 buttonPanel.add(registerButton); 157 buttonPanel.add(okButton); 158 159 bottomPanel.add(buttonPanel, BorderLayout.EAST); 160 panel.add(bottomPanel, BorderLayout.SOUTH); 161 162 getRootPane().setDefaultButton(okButton); 163 164 } 165 166 169 private void initComponents() { 170 171 enableSSLCheckBox = new JCheckBox ("Use Secure Connection (SSL)"); 172 enableSSLCheckBox.setMnemonic('s'); 173 174 serverTextField = new JTextField (10); 175 idTextField = new JTextField (10); 176 resourceTextField = new JTextField (10); 178 portSpinner = new JSpinner (new SpinnerNumberModel (5222, 1, 65535, 1)); 179 portSpinner.setEditor(new JSpinner.NumberEditor (portSpinner, "#####")); 180 181 } 182 183 public String getServer() { 184 return serverTextField.getText(); 185 } 186 187 public String getUser() { 188 return idTextField.getText(); 189 } 190 191 public String getResource() { 192 return resourceTextField.getText(); 193 } 194 195 198 199 public boolean enableSSL() { 200 return enableSSLCheckBox.isSelected(); 201 } 202 203 206 public void actionPerformed(ActionEvent arg0) { 207 208 String action = arg0.getActionCommand(); 209 210 if (action.equals("OK")) { 211 updateComponents(false); 212 213 setVisible(false); 214 } 215 216 } 217 218 } | Popular Tags |