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