1 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 ; 19 import java.awt.event.ActionEvent ; 20 import java.awt.event.ActionListener ; 21 22 import javax.swing.DefaultListModel ; 23 24 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 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 [] m_result; 39 private ActionListener 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 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 () { 60 public void actionPerformed(ActionEvent 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 ()); 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 () { 74 public void actionPerformed(ActionEvent ae) { 75 accept(); 76 } 77 }); 78 m_cancelButton = (Button)findComponent("CancelButton"); 79 m_cancelButton.addActionListener(new ActionListener () { 80 public void actionPerformed(ActionEvent 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 { 95 public void actionPerformed(ActionEvent ae) { 96 if(m_classNavigator == null) { 97 Frame owner = (java.awt.Frame )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 listener) { 110 m_listener = listener; 111 } 112 113 protected void fireActionPerformed() { 114 m_listener.actionPerformed(null); 115 } 116 117 class NavigatorListener implements ActionListener { 118 public void actionPerformed(ActionEvent ae) { 119 String [] 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 [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 [] getClassnames() { 139 return m_result; 140 } 141 } 142 | Popular Tags |