KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > editors > chooser > ClassChooser


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package org.terracotta.dso.editors.chooser;
5
6 import org.eclipse.core.resources.IProject;
7 import org.eclipse.jdt.core.JavaCore;
8
9 import org.dijon.Button;
10 import org.dijon.Dialog;
11 import org.dijon.DialogResource;
12 import org.dijon.DictionaryResource;
13 import org.dijon.List;
14 import org.dijon.TextField;
15
16 import org.terracotta.dso.TcPlugin;
17
18 import java.awt.Frame JavaDoc;
19 import java.awt.event.ActionEvent JavaDoc;
20 import java.awt.event.ActionListener JavaDoc;
21
22 import javax.swing.DefaultListModel JavaDoc;
23
24 /**
25  * TODO: Factor out JavaProjectChooser from TransientChooser, RootChooser, and LockChooser.
26  */

27
28 public class ClassChooser extends Dialog {
29   private static DialogResource m_res;
30   private IProject m_project;
31   private TextField m_classTextField;
32   private List m_classList;
33   private DefaultListModel JavaDoc m_classListModel;
34   private Button m_classSelectorButton;
35   private ClassNavigator m_classNavigator;
36   private Button m_okButton;
37   private Button m_cancelButton;
38   private String JavaDoc[] m_result;
39   private ActionListener JavaDoc m_listener;
40
41   static {
42     TcPlugin plugin = TcPlugin.getDefault();
43     DictionaryResource topRes = plugin.getResources();
44
45     m_res = (DialogResource)topRes.find("ClassChooser");
46   }
47   
48   public ClassChooser(java.awt.Frame JavaDoc frame) {
49     super(frame);
50     if(m_res != null) {
51       load(m_res);
52     }
53   }
54   
55   public void load(DialogResource dialogRes) {
56     super.load(dialogRes);
57
58     m_classTextField = (TextField)findComponent("ClassTextField");
59     m_classTextField.addActionListener(new ActionListener JavaDoc() {
60       public void actionPerformed(ActionEvent JavaDoc ae) {
61         m_classListModel.addElement(m_classTextField.getText());
62         m_classTextField.selectAll();
63       }
64     });
65     
66     m_classList = (List)findComponent("ClassList");
67     m_classList.setModel(m_classListModel = new DefaultListModel JavaDoc());
68     
69     m_classSelectorButton = (Button)findComponent("ClassSelectorButton");
70     m_classSelectorButton.addActionListener(new ClassSelector());
71     
72     m_okButton = (Button)findComponent("OKButton");
73     m_okButton.addActionListener(new ActionListener JavaDoc() {
74       public void actionPerformed(ActionEvent JavaDoc ae) {
75         accept();
76       }
77     });
78     m_cancelButton = (Button)findComponent("CancelButton");
79     m_cancelButton.addActionListener(new ActionListener JavaDoc() {
80       public void actionPerformed(ActionEvent JavaDoc ae) {
81         cancel();
82       }
83     });
84     
85     getRootPane().setDefaultButton(m_okButton);
86   }
87   
88   public void setup(IProject project) {
89     m_project = project;
90     m_classTextField.setText(null);
91     m_classListModel.clear();
92   }
93   
94   class ClassSelector implements ActionListener JavaDoc {
95     public void actionPerformed(ActionEvent JavaDoc ae) {
96       if(m_classNavigator == null) {
97         Frame JavaDoc owner = (java.awt.Frame JavaDoc)ClassChooser.this.getOwner();
98         
99         m_classNavigator = new ClassNavigator(owner);
100         m_classNavigator.setActionListener(new NavigatorListener());
101       }
102       m_classNavigator.init(JavaCore.create(m_project));
103       m_classNavigator.center(ClassChooser.this);
104       m_classNavigator.setModal(true);
105       m_classNavigator.setVisible(true);
106     }
107   }
108
109   public void setListener(ActionListener JavaDoc listener) {
110     m_listener = listener;
111   }
112   
113   protected void fireActionPerformed() {
114     m_listener.actionPerformed(null);
115   }
116   
117   class NavigatorListener implements ActionListener JavaDoc {
118     public void actionPerformed(ActionEvent JavaDoc ae) {
119       String JavaDoc[] sigs = m_classNavigator.getSelectedSignatures();
120       for(int i = 0; i < sigs.length; i++) {
121         m_classListModel.addElement(sigs[i]);
122       }
123     }
124   }
125   
126   private void accept() {
127     m_result = new String JavaDoc[m_classListModel.size()];
128     m_classListModel.copyInto(m_result);
129     setVisible(false);
130     fireActionPerformed();
131   }
132   
133   private void cancel() {
134     m_result = null;
135     setVisible(false);
136   }
137   
138   public String JavaDoc[] getClassnames() {
139     return m_result;
140   }
141 }
142
Popular Tags