1 4 package com.tc.servers; 5 6 import org.dijon.Button; 7 import org.dijon.ComboBox; 8 import org.dijon.ComboModel; 9 import org.dijon.Dialog; 10 import org.dijon.DialogResource; 11 import org.dijon.Frame; 12 import org.dijon.Label; 13 14 import com.tc.admin.common.XObjectTable; 15 16 import java.awt.event.ActionEvent ; 17 import java.awt.event.ActionListener ; 18 import java.lang.reflect.Method ; 19 import java.util.Properties ; 20 21 import javax.swing.ComboBoxModel ; 22 import javax.swing.Icon ; 23 import javax.swing.JButton ; 24 import javax.swing.event.TableModelEvent ; 25 import javax.swing.event.TableModelListener ; 26 import javax.swing.table.TableCellEditor ; 27 28 public class ServersDialog extends Dialog { 29 private ServerInfo[] m_servers; 30 private ComboBox m_selector; 31 private ServerEnvTableModel m_envTableModel; 32 private XObjectTable m_envTable; 33 private Label m_errorLabel; 34 private Icon m_errorIcon; 35 private Button m_restoreButton; 36 37 public ServersDialog(Frame frame) { 38 super(frame, true); 39 } 40 41 public void load(DialogResource dialogRes) { 42 super.load(dialogRes); 43 44 m_selector = (ComboBox)findComponent("ServerSelector"); 45 m_selector.addActionListener(new ActionListener () { 46 public void actionPerformed(ActionEvent ae) { 47 finishEditing(); 48 updateEnvironmentTable(); 49 } 50 }); 51 52 m_envTable = (XObjectTable)findComponent("ServerEnvironment"); 53 m_envTable.setModel(m_envTableModel = new ServerEnvTableModel()); 54 ((JButton )findComponent("CancelButton")).addActionListener(new ActionListener () { 55 public void actionPerformed(ActionEvent ae) { 56 setVisible(false); 57 } 58 }); 59 m_envTableModel.addTableModelListener(new TableModelListener () { 60 public void tableChanged(TableModelEvent e) { 61 validateModel(); 62 } 63 }); 64 65 m_errorLabel = (Label)findComponent("ErrorLabel"); 66 m_errorIcon = m_errorLabel.getIcon(); 67 m_errorLabel.setIcon(null); 68 69 try { 70 String methodName = "setAlwaysOnTop"; 71 Class [] argTypes = new Class [] {Boolean .class}; 72 Method method = getClass().getMethod(methodName, argTypes); 73 74 if(method != null) { 75 method.invoke(this, new Object [] {Boolean.TRUE}); 76 } 77 } catch(Exception e) {} 78 79 m_restoreButton = (Button)findComponent("RestoreButton"); 80 m_restoreButton.addActionListener(new ActionListener () { 81 public void actionPerformed(ActionEvent ae) { 82 int index = getSelectedServerIndex(); 83 ServerInfo server = getSelectedServer(); 84 Properties props = ServerSelection.getInstance().getDefaultProperties(index); 85 86 server.setProperties(props); 87 m_envTableModel.set(server.getProperties()); 88 } 89 }); 90 } 91 92 public void addAcceptListener(ActionListener listener) { 93 ((JButton )findComponent("OKButton")).addActionListener(listener); 94 } 95 96 public void setSelection(ServerSelection selection) { 97 setServers(selection.cloneServers()); 98 m_selector.setSelectedIndex(selection.getSelectedServerIndex()); 99 } 100 101 private void updateEnvironmentTable() { 102 m_envTableModel.set(getSelectedServer().getProperties()); 103 } 104 105 private void setServers(ServerInfo[] servers) { 106 m_selector.setModel(new ComboModel(m_servers = servers)); 107 updateEnvironmentTable(); 108 } 109 110 public ServerInfo[] getServers() { 111 return m_servers; 112 } 113 114 public int getSelectedServerIndex() { 115 return m_selector.getSelectedIndex(); 116 } 117 118 public ServerInfo getSelectedServer() { 119 return (ServerInfo)m_selector.getSelectedItem(); 120 } 121 122 public ServerInfo getServer(String name) { 123 ComboBoxModel model = m_selector.getModel(); 124 ServerInfo server; 125 126 for(int i = 0; i < model.getSize(); i++) { 127 server = (ServerInfo)model.getElementAt(i); 128 129 if(server.getName().equals(name)) { 130 return server; 131 } 132 } 133 134 return null; 135 } 136 137 public Properties getServerProperties(String name) { 138 ServerInfo server = getServer(name); 139 return server != null ? server.toProperties() : null; 140 } 141 142 public void finishEditing() { 143 if(m_envTable.isEditing()) { 144 TableCellEditor editor = m_envTable.getCellEditor(); 145 146 if(!editor.stopCellEditing()) { 147 editor.cancelCellEditing(); 148 } 149 } 150 } 151 152 private void validateModel() { 153 ServerInfo server = getSelectedServer(); 154 String [] messages = server.validateProperties(); 155 String msg = null; 156 Icon icon = null; 157 158 if(messages != null) { 159 msg = messages[0]; 160 icon = m_errorIcon; 161 } 162 163 m_errorLabel.setText(msg); 164 m_errorLabel.setIcon(icon); 165 166 } 167 } 168 | Popular Tags |