View Javadoc

1   package com.explosion.expfmodules.rdbmsconn;
2   /* =============================================================================
3    *       
4    *     Copyright 2004 Stephen Cowx
5    *
6    *     Licensed under the Apache License, Version 2.0 (the "License");
7    *     you may not use this file except in compliance with the License.
8    *     You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *     Unless required by applicable law or agreed to in writing, software
13   *     distributed under the License is distributed on an "AS IS" BASIS,
14   *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *     See the License for the specific language governing permissions and
16   *     limitations under the License.
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()); //Unfortunately, the constructor expects a check box, combo box, or text field.
71      this.editorComponent = button;
72      ((JButton) editorComponent).setBackground(Color.WHITE);
73  
74      setClickCountToStart(1); //This is usually 1 or 2.
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 }