1 package com.explosion.expfmodules.rdbmsconn;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.awt.Color;
22 import java.awt.Component;
23 import java.awt.event.ActionEvent;
24 import java.awt.event.ActionListener;
25 import java.awt.event.MouseEvent;
26
27 import javax.swing.DefaultCellEditor;
28 import javax.swing.JButton;
29 import javax.swing.JCheckBox;
30 import javax.swing.JTable;
31 import javax.swing.table.DefaultTableCellRenderer;
32 import javax.swing.table.TableCellEditor;
33
34 import com.explosion.expf.Application;
35 import com.explosion.utilities.GeneralUtils;
36 import com.explosion.utilities.preferences.Preference;
37 import com.explosion.utilities.preferences.groups.dialogs.PreferenceGroupsEditorDialog;
38 /***
39 * @author Stephen Cowx
40 * Date created:@24-Mar-2003
41 */
42 public class ConnectionDescriptorPreference extends Preference
43 {
44 private DefaultCellEditor editor;
45 private DefaultTableCellRenderer renderer = null;
46
47 public ConnectionDescriptorPreference(String uniqueIdentifier, int type, Object defaultValue, Object referenceToStore, DriverDescriptorManager driverManager) throws Exception
48 {
49 super(uniqueIdentifier,type, defaultValue, referenceToStore);
50 editor = new DriverPreferenceEditor(new JButton(), driverManager);
51 }
52
53 public TableCellEditor getEditor()
54 {
55 return editor;
56 }
57
58 public void setEditor(TableCellEditor editor)
59 {
60 }
61
62 }
63
64 class DriverPreferenceEditor extends DefaultCellEditor
65 {
66 private Preference preference;
67
68 public DriverPreferenceEditor(JButton button, DriverDescriptorManager driverManager)
69 {
70 super(new JCheckBox());
71 this.editorComponent = button;
72 ((JButton) editorComponent).setBackground(Color.WHITE);
73
74 setClickCountToStart(1);
75
76 ((JButton) editorComponent).addActionListener(new DriverButtonActionListener(this,driverManager));
77
78 ((JButton) editorComponent).addActionListener(new ActionListener()
79 {
80 public void actionPerformed(ActionEvent e)
81 {
82 fireEditingStopped();
83 }
84 });
85 }
86
87 protected void fireEditingStopped()
88 {
89 super.fireEditingStopped();
90 }
91
92 public Object getCellEditorValue()
93 {
94 return preference;
95 }
96
97 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
98 {
99 preference = (Preference) value;
100 ((JButton) editorComponent).setText("..");
101
102 return ((JButton) editorComponent);
103 }
104
105 public Preference getPreference()
106 {
107 return preference;
108 }
109 }
110
111 /***
112 * Opens up a FontSelectorDialog
113 */
114 class DriverButtonActionListener implements ActionListener
115 {
116 private DriverPreferenceEditor driverEditor = null;
117 private PreferenceGroupsEditorDialog driversDialog;
118 private DriverDescriptorManager driverManager;
119
120 public DriverButtonActionListener(DriverPreferenceEditor driverEditor, DriverDescriptorManager driverManager)
121 {
122 this.driverEditor = driverEditor;
123 this.driverManager = driverManager;
124 }
125
126 public void actionPerformed(ActionEvent e)
127 {
128 try
129 {
130 driversDialog = new PreferenceGroupsEditorDialog(Application.getApplicationFrame(),"Select a JDBC driver",true, driverManager,(String) driverEditor.getPreference().getValue());
131 driversDialog.getPersistentObjectList().addMouseListener(new java.awt.event.MouseAdapter()
132 {
133 public void mouseClicked(MouseEvent e)
134 {
135 if (e.getClickCount() == 2)
136 {
137 driversDialog.setVisible(false);
138 }
139 }
140 });
141
142
143 driversDialog.setSize(RdbmsConnConstants.driversDialogDimension);
144 GeneralUtils.centreWindowInParent(driversDialog);
145 driversDialog.setVisible(true);
146
147 driverEditor.getPreference().setValue(driversDialog.getSelectedValue());
148
149 }
150 catch (Exception e1)
151 {
152 com.explosion.utilities.exception.ExceptionManagerFactory.getExceptionManager().manageException(e1, null);
153 }
154 }
155
156
157 }