1 4 package org.terracotta.dso.editors; 5 6 import org.eclipse.core.resources.IFolder; 7 import org.eclipse.core.resources.IProject; 8 9 import org.dijon.Button; 10 import org.dijon.ContainerResource; 11 import org.dijon.Label; 12 13 import org.terracotta.dso.editors.chooser.ProjectFolderNavigator; 14 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureChangeEvent; 15 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureListener; 16 import org.terracotta.dso.editors.xmlbeans.XmlStringField; 17 import com.terracottatech.config.Server; 18 19 import java.awt.Frame ; 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.ActionListener ; 22 import java.awt.event.MouseAdapter ; 23 import java.awt.event.MouseEvent ; 24 25 public class ServerPanel extends ConfigurationEditorPanel 26 implements ActionListener , 27 XmlObjectStructureListener 28 { 29 private Server m_server; 30 private XmlStringField m_data; 31 private Label m_dataLabel; 32 private Button m_dataButton; 33 private XmlStringField m_logs; 34 private Label m_logsLabel; 35 private Button m_logsButton; 36 private DsoServerDataPanel m_dsoServerDataPanel; 37 private ProjectFolderNavigator m_folderNavigator; 38 39 public ServerPanel() { 40 super(); 41 } 42 43 public void load(ContainerResource containerRes) { 44 super.load(containerRes); 45 46 m_data = (XmlStringField)findComponent("Data"); 47 m_data.init(Server.class, "data"); 48 m_dataLabel = (Label)findComponent("DataLabel"); 49 m_dataLabel.addMouseListener(new MouseAdapter () { 50 public void mouseClicked(MouseEvent me) { 51 if(me.getClickCount() == 1) { 52 m_data.unset(); 53 } 54 } 55 }); 56 m_dataButton = (Button)findComponent("DataButton"); 57 m_dataButton.addActionListener(new ActionListener () { 58 public void actionPerformed(ActionEvent ae) { 59 Frame frame = (Frame )getAncestorOfClass(Frame .class); 60 ServersPanel serversPanel = (ServersPanel)getAncestorOfClass(ServersPanel.class); 61 IProject project = serversPanel.getProject(); 62 63 if(m_folderNavigator == null) { 64 m_folderNavigator = new ProjectFolderNavigator(frame); 65 } 66 m_folderNavigator.init(project); 67 m_folderNavigator.setActionListener(new DataNavigatorListener()); 68 m_folderNavigator.center(frame); 69 m_folderNavigator.setVisible(true); 70 } 71 }); 72 73 m_logs = (XmlStringField)findComponent("Logs"); 74 m_logs.init(Server.class, "logs"); 75 m_logsLabel = (Label)findComponent("LogsLabel"); 76 m_logsLabel.addMouseListener(new MouseAdapter () { 77 public void mouseClicked(MouseEvent me) { 78 if(me.getClickCount() == 1) { 79 m_logs.unset(); 80 } 81 } 82 }); 83 m_logsButton = (Button)findComponent("LogsButton"); 84 m_logsButton.addActionListener(new ActionListener () { 85 public void actionPerformed(ActionEvent ae) { 86 Frame frame = (Frame )getAncestorOfClass(Frame .class); 87 ServersPanel serversPanel = (ServersPanel)getAncestorOfClass(ServersPanel.class); 88 IProject project = serversPanel.getProject(); 89 90 if(m_folderNavigator == null) { 91 m_folderNavigator = new ProjectFolderNavigator(frame); 92 } 93 m_folderNavigator.init(project); 94 m_folderNavigator.setActionListener(new LogsNavigatorListener()); 95 m_folderNavigator.center(frame); 96 m_folderNavigator.setVisible(true); 97 } 98 }); 99 100 m_dsoServerDataPanel = (DsoServerDataPanel)findComponent("DsoServerData"); 101 } 102 103 class DataNavigatorListener implements ActionListener { 104 public void actionPerformed(ActionEvent ae) { 105 IFolder folder = m_folderNavigator.getSelectedFolder(); 106 107 if(folder != null) { 108 m_data.setText(folder.getProjectRelativePath().toString()); 109 m_data.set(); 110 } 111 } 112 } 113 114 class LogsNavigatorListener implements ActionListener { 115 public void actionPerformed(ActionEvent ae) { 116 IFolder folder = m_folderNavigator.getSelectedFolder(); 117 118 if(folder != null) { 119 m_logs.setText(folder.getProjectRelativePath().toString()); 120 m_logs.set(); 121 } 122 } 123 } 124 125 public void structureChanged(XmlObjectStructureChangeEvent e) { 126 syncModel(); 127 } 128 129 public void actionPerformed(ActionEvent ae) { 130 setDirty(); 131 } 132 133 private void syncModel() { 134 137 setDirty(); 138 } 139 140 public boolean hasAnySet() { 141 return m_server != null && 142 (m_server.isSetData() || 143 m_server.isSetLogs() || 144 m_server.isSetDsoPort() || 145 m_server.isSetDso()); 146 } 147 148 private void addListeners() { 149 m_data.addActionListener(this); 150 m_data.addXmlObjectStructureListener(this); 151 152 m_logs.addActionListener(this); 153 m_logs.addXmlObjectStructureListener(this); 154 155 m_dsoServerDataPanel.addXmlObjectStructureListener(this); 156 } 157 158 private void removeListeners() { 159 m_data.removeActionListener(this); 160 m_data.removeXmlObjectStructureListener(this); 161 162 m_logs.removeActionListener(this); 163 m_logs.removeXmlObjectStructureListener(this); 164 165 m_dsoServerDataPanel.removeXmlObjectStructureListener(this); 166 } 167 168 private void updateChildren() { 169 m_data.setup(m_server); 170 m_logs.setup(m_server); 171 m_dsoServerDataPanel.setup(m_server); 172 } 173 174 public void setup(Server server) { 175 setEnabled(true); 176 removeListeners(); 177 178 m_server = server; 179 180 updateChildren(); 181 addListeners(); 182 } 183 184 public void tearDown() { 185 removeListeners(); 186 187 m_server = null; 188 189 m_data.tearDown(); 190 m_logs.tearDown(); 191 m_dsoServerDataPanel.tearDown(); 192 193 setEnabled(false); 194 } 195 } 196 | Popular Tags |