1 14 package org.compiere.db; 15 16 import java.awt.*; 17 import java.awt.event.*; 18 import javax.swing.*; 19 import java.util.*; 20 21 import org.compiere.plaf.*; 22 import org.compiere.swing.*; 23 24 31 public class CConnectionEditor extends JComponent 32 implements CEditor 33 { 34 37 public CConnectionEditor() 38 { 39 super(); 40 41 CConnectionExitor_MouseListener ml = new CConnectionExitor_MouseListener(); 42 m_text.setEditable(false); 44 m_text.setBorder(null); 45 m_text.addMouseListener(ml); 46 m_server.setIcon(new ImageIcon(getClass().getResource("Server16.gif"))); 47 m_server.setFocusable(false); 48 m_server.setBorder(null); 49 m_server.setOpaque(true); 50 m_server.addMouseListener(ml); 51 m_db.setIcon(new ImageIcon(getClass().getResource("Database16.gif"))); 52 m_db.setFocusable(false); 53 m_db.setBorder(null); 54 m_db.setOpaque(true); 55 m_db.addMouseListener(ml); 56 LookAndFeel.installBorder(this, "TextField.border"); 57 setLayout(new BorderLayout(0,0)); 59 add(m_server, BorderLayout.WEST); 60 add(m_text, BorderLayout.CENTER); 61 add(m_db, BorderLayout.EAST); 62 } 64 65 private JTextField m_text = new JTextField(10); 66 67 private JLabel m_db = new JLabel (); 68 69 private JLabel m_server = new JLabel(); 70 71 private CConnection m_value = null; 72 73 private boolean m_rw = true; 74 75 private boolean m_mandatory = false; 76 77 transient private Vector m_actionListeners; 78 79 83 public void setReadWrite (boolean rw) 84 { 85 m_rw = rw; 86 setBackground(false); 87 } 89 93 public boolean isReadWrite() 94 { 95 return m_rw; 96 } 98 102 public void setMandatory (boolean mandatory) 103 { 104 m_mandatory = mandatory; 105 } 107 111 public boolean isMandatory() 112 { 113 return m_mandatory; 114 } 116 120 public void setBackground (boolean error) 121 { 122 Color c = null; 123 if (error) 124 c = CompierePLAF.getFieldBackground_Error(); 125 else if (!m_rw) 126 c = CompierePLAF.getFieldBackground_Inactive(); 127 else if (m_mandatory) 128 c = CompierePLAF.getFieldBackground_Mandatory(); 129 else 130 c = CompierePLAF.getFieldBackground_Normal(); 131 setBackground(c); 132 } 134 138 public void setBackground (Color color) 139 { 140 m_server.setBackground(color); 141 m_text.setBackground(color); 142 m_db.setBackground(color); 143 } 145 149 public void setVisible (boolean visible) 150 { 151 this.setVisible(visible); 152 } 153 154 158 public void setValue (Object value) 159 { 160 if (value != null && value instanceof CConnection) 161 m_value = (CConnection)value; 162 setDisplay(); 163 } 165 169 public Object getValue() 170 { 171 return m_value; 172 } 174 178 public String getDisplay() 179 { 180 if (m_value == null) 181 return ""; 182 return m_value.getName(); 183 } 185 188 public void setDisplay() 189 { 190 m_text.setText(getDisplay()); 191 if (m_value == null) 192 return; 193 if (m_value.isAppsServerOK(false) || m_value.isDatabaseOK()) 195 { 196 m_text.setForeground(CompierePLAF.getTextColor_OK()); 197 setBackground(false); 198 if (!m_value.isAppsServerOK(false)) 199 m_server.setBackground(CompierePLAF.getFieldBackground_Error()); 200 if (!m_value.isDatabaseOK()) 201 m_db.setBackground(CompierePLAF.getFieldBackground_Error()); 202 } 203 else 204 { 205 m_text.setForeground(CompierePLAF.getTextColor_Issue()); 206 setBackground(true); 207 } 208 } 210 211 212 216 public synchronized void removeActionListener(ActionListener l) 217 { 218 if (m_actionListeners != null && m_actionListeners.contains(l)) 219 { 220 Vector v = (Vector) m_actionListeners.clone(); 221 v.removeElement(l); 222 m_actionListeners = v; 223 } 224 } 226 230 public synchronized void addActionListener(ActionListener l) 231 { 232 Vector v = m_actionListeners == null ? new Vector(2) : (Vector) m_actionListeners.clone(); 233 if (!v.contains(l)) 234 { 235 v.addElement(l); 236 m_actionListeners = v; 237 } 238 } 240 243 private void fireActionPerformed() 244 { 245 if (m_actionListeners == null || m_actionListeners.size() == 0) 246 return; 247 ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, 248 "actionPerformed"); 249 for (int i = 0; i < m_actionListeners.size(); i++) 250 ((ActionListener)m_actionListeners.get(i)).actionPerformed(e); 251 } 253 254 255 259 public static void main(String [] args) 260 { 261 JFrame frame = new JFrame("CConnectionEditor"); 263 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 264 frame.getRootPane().getContentPane().add(new CConnectionEditor()); 265 CompierePLAF.showCenterScreen(frame); 266 } 268 269 272 public class CConnectionExitor_MouseListener extends MouseAdapter 273 { 274 278 public void mouseClicked(MouseEvent e) 279 { 280 if (!isEnabled() || !m_rw || m_active) 281 return; 282 m_active = true; 283 setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 284 if (m_value == null) 286 m_value = new CConnection(); 287 CConnectionDialog cd = new CConnectionDialog(m_value); 288 setValue(cd.getConnection()); 289 fireActionPerformed(); 290 setCursor(Cursor.getDefaultCursor()); 292 m_active = false; 293 } 295 private boolean m_active = false; 296 } 298 } | Popular Tags |