1 5 package org.terracotta.dso.editors.chooser; 6 7 import org.eclipse.core.resources.IProject; 8 import org.eclipse.jdt.core.JavaCore; 9 10 import org.dijon.Button; 11 import org.dijon.Dialog; 12 import org.dijon.DialogResource; 13 import org.dijon.DictionaryResource; 14 import org.dijon.List; 15 import org.dijon.TextField; 16 17 import org.terracotta.dso.TcPlugin; 18 19 import java.awt.Frame ; 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.ActionListener ; 22 23 import javax.swing.DefaultListModel ; 24 25 public class FieldChooser extends Dialog { 26 private static DialogResource m_res; 27 private IProject m_project; 28 private TextField m_fieldTextField; 29 private List m_fieldList; 30 private DefaultListModel m_fieldListModel; 31 private Button m_fieldSelectorButton; 32 private FieldNavigator m_fieldNavigator; 33 private Button m_okButton; 34 private Button m_cancelButton; 35 private String [] m_result; 36 private ActionListener m_listener; 37 38 static { 39 TcPlugin plugin = TcPlugin.getDefault(); 40 DictionaryResource topRes = plugin.getResources(); 41 42 m_res = (DialogResource) topRes.find("FieldChooser"); 43 } 44 45 public FieldChooser(Frame frame) { 46 super(frame); 47 if (m_res != null) { 48 load(m_res); 49 } 50 } 51 52 public void load(DialogResource dialogRes) { 53 super.load(dialogRes); 54 55 m_fieldTextField = (TextField) findComponent("FieldTextField"); 56 m_fieldTextField.addActionListener(new ActionListener () { 57 public void actionPerformed(ActionEvent ae) { 58 m_fieldListModel.addElement(m_fieldTextField.getText()); 59 m_fieldTextField.selectAll(); 60 } 61 }); 62 63 m_fieldList = (List) findComponent("FieldList"); 64 m_fieldList.setModel(m_fieldListModel = new DefaultListModel ()); 65 66 m_fieldSelectorButton = (Button) findComponent("FieldSelectorButton"); 67 m_fieldSelectorButton.addActionListener(new FieldSelector()); 68 69 m_okButton = (Button) findComponent("OKButton"); 70 m_okButton.addActionListener(new ActionListener () { 71 public void actionPerformed(ActionEvent ae) { 72 accept(); 73 } 74 }); 75 m_cancelButton = (Button) findComponent("CancelButton"); 76 m_cancelButton.addActionListener(new ActionListener () { 77 public void actionPerformed(ActionEvent ae) { 78 cancel(); 79 } 80 }); 81 82 getRootPane().setDefaultButton(m_okButton); 83 } 84 85 public void setup(IProject project) { 86 m_project = project; 87 m_fieldTextField.setText(null); 88 m_fieldListModel.clear(); 89 } 90 91 class FieldSelector implements ActionListener { 92 public void actionPerformed(ActionEvent ae) { 93 if (m_fieldNavigator == null) { 94 m_fieldNavigator = new FieldNavigator((Frame ) FieldChooser.this.getOwner()); 95 m_fieldNavigator.setActionListener(new NavigatorListener()); 96 } 97 m_fieldNavigator.init(JavaCore.create(m_project)); 98 m_fieldNavigator.center(FieldChooser.this); 99 m_fieldNavigator.setModal(true); 100 m_fieldNavigator.setVisible(true); 101 } 102 } 103 104 public void setListener(ActionListener listener) { 105 m_listener = listener; 106 } 107 108 protected void fireActionPerformed() { 109 m_listener.actionPerformed(null); 110 } 111 112 class NavigatorListener implements ActionListener { 113 public void actionPerformed(ActionEvent ae) { 114 String [] fields = m_fieldNavigator.getSelectedFieldNames(); 115 for (int i = 0; i < fields.length; i++) { 116 m_fieldListModel.addElement(fields[i]); 117 } 118 } 119 } 120 121 private void accept() { 122 m_fieldListModel.copyInto(m_result = new String [m_fieldListModel.size()]); 123 setVisible(false); 124 fireActionPerformed(); 125 } 126 127 private void cancel() { 128 m_result = null; 129 setVisible(false); 130 } 131 132 public String [] getFieldNames() { 133 return m_result; 134 } 135 } 136 | Popular Tags |