00001 package TestGUI;
00002
00003 import java.io.*;
00004 import java.util.*;
00005 import javax.swing.*;
00006 import javax.swing.tree.*;
00007 import javax.swing.text.*;
00008 import is.*;
00009 import Sct.Serializable;
00010 import Sct.IS.*;
00011 import GuiComponents.Inspector.InspectorPanel;
00012 import GuiComponents.plotter.*;
00013 import GuiComponents.System.*;
00014 import GuiComponents.Console.*;
00015
00016
00017
00018
00019
00020
00021
00026 public class ISPanel extends javax.swing.JPanel implements InfoListener {
00027
00029 public ISPanel(JTextArea taMessages) {
00030 this.taMessages = taMessages;
00031 si = SystemInterface.getInstance();
00032 is = ISInterface.getInstance();
00033 initComponents();
00034 myInitComponents();
00035 }
00036
00037 void close() {
00038 unsubscribeAll();
00039 }
00040
00041 private void myInitComponents() {
00042 refreshISTree(false);
00043 }
00044
00050 private void initComponents() {
00051 java.awt.GridBagConstraints gridBagConstraints;
00052
00053 lList = new javax.swing.JLabel();
00054 bDelete = new javax.swing.JButton();
00055 bISRefresh = new javax.swing.JButton();
00056 jScrollPane2 = new javax.swing.JScrollPane();
00057 jPanel2 = new javax.swing.JPanel();
00058 trISServers = new javax.swing.JTree();
00059 trISServers.getPreferredScrollableViewportSize();
00060
00061 jSeparator1 = new javax.swing.JSeparator();
00062 bISData = new javax.swing.JButton();
00063 bExternal = new javax.swing.JButton();
00064 jLabel2 = new javax.swing.JLabel();
00065 bInternal = new javax.swing.JButton();
00066 bDeleteAll = new javax.swing.JButton();
00067 bIsdump = new javax.swing.JButton();
00068
00069 setLayout(new java.awt.GridBagLayout());
00070
00071 lList.setText("List of available IS servers and objects");
00072 gridBagConstraints = new java.awt.GridBagConstraints();
00073 gridBagConstraints.gridx = 1;
00074 gridBagConstraints.gridy = 0;
00075 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00076 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00077 add(lList, gridBagConstraints);
00078
00079 bDelete.setText("Delete");
00080 bDelete.addActionListener(new java.awt.event.ActionListener() {
00081 public void actionPerformed(java.awt.event.ActionEvent evt) {
00082 bDeleteActionPerformed(evt);
00083 }
00084 });
00085
00086 gridBagConstraints = new java.awt.GridBagConstraints();
00087 gridBagConstraints.gridx = 0;
00088 gridBagConstraints.gridy = 1;
00089 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00090 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00091 add(bDelete, gridBagConstraints);
00092
00093 bISRefresh.setText("Refresh");
00094 bISRefresh.addActionListener(new java.awt.event.ActionListener() {
00095 public void actionPerformed(java.awt.event.ActionEvent evt) {
00096 bISRefreshActionPerformed(evt);
00097 }
00098 });
00099
00100 gridBagConstraints = new java.awt.GridBagConstraints();
00101 gridBagConstraints.gridx = 0;
00102 gridBagConstraints.gridy = 2;
00103 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00104 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00105 add(bISRefresh, gridBagConstraints);
00106
00107 jScrollPane2.setMinimumSize(new java.awt.Dimension(200, 100));
00108 jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
00109
00110 jPanel2.setMinimumSize(new java.awt.Dimension(200, 200));
00111 trISServers.setBorder(new javax.swing.border.EtchedBorder());
00112 trISServers.setMaximumSize(new java.awt.Dimension(32767, 32767));
00113 trISServers.setAutoscrolls(true);
00114 trISServers.addKeyListener(new java.awt.event.KeyAdapter() {
00115 public void keyReleased(java.awt.event.KeyEvent evt) {
00116 trISServersKeyReleased(evt);
00117 }
00118 });
00119 trISServers.addMouseListener(new java.awt.event.MouseAdapter() {
00120 public void mouseClicked(java.awt.event.MouseEvent evt) {
00121 trISServersMouseClicked(evt);
00122 }
00123 });
00124
00125 jPanel2.add(trISServers);
00126
00127 jScrollPane2.setViewportView(jPanel2);
00128
00129 gridBagConstraints = new java.awt.GridBagConstraints();
00130 gridBagConstraints.gridx = 1;
00131 gridBagConstraints.gridy = 1;
00132 gridBagConstraints.gridheight = 12;
00133 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00134 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00135 gridBagConstraints.weightx = 1.0;
00136 gridBagConstraints.weighty = 1.0;
00137 add(jScrollPane2, gridBagConstraints);
00138
00139 gridBagConstraints = new java.awt.GridBagConstraints();
00140 gridBagConstraints.gridx = 0;
00141 gridBagConstraints.gridy = 4;
00142 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00143 add(jSeparator1, gridBagConstraints);
00144
00145 bISData.setText("IS Data");
00146 bISData.addActionListener(new java.awt.event.ActionListener() {
00147 public void actionPerformed(java.awt.event.ActionEvent evt) {
00148 bISDataActionPerformed(evt);
00149 }
00150 });
00151
00152 gridBagConstraints = new java.awt.GridBagConstraints();
00153 gridBagConstraints.gridx = 0;
00154 gridBagConstraints.gridy = 6;
00155 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00156 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00157 add(bISData, gridBagConstraints);
00158
00159 bExternal.setText("External Graphics");
00160 bExternal.addActionListener(new java.awt.event.ActionListener() {
00161 public void actionPerformed(java.awt.event.ActionEvent evt) {
00162 bExternalActionPerformed(evt);
00163 }
00164 });
00165
00166 gridBagConstraints = new java.awt.GridBagConstraints();
00167 gridBagConstraints.gridx = 0;
00168 gridBagConstraints.gridy = 9;
00169 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00170 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00171 add(bExternal, gridBagConstraints);
00172
00173 jLabel2.setText("View...");
00174 gridBagConstraints = new java.awt.GridBagConstraints();
00175 gridBagConstraints.gridx = 0;
00176 gridBagConstraints.gridy = 5;
00177 add(jLabel2, gridBagConstraints);
00178
00179 bInternal.setText("Internal Graphics");
00180 bInternal.addActionListener(new java.awt.event.ActionListener() {
00181 public void actionPerformed(java.awt.event.ActionEvent evt) {
00182 bInternalActionPerformed(evt);
00183 }
00184 });
00185
00186 gridBagConstraints = new java.awt.GridBagConstraints();
00187 gridBagConstraints.gridx = 0;
00188 gridBagConstraints.gridy = 8;
00189 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00190 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00191 add(bInternal, gridBagConstraints);
00192
00193 bDeleteAll.setText("Delete All");
00194 bDeleteAll.addActionListener(new java.awt.event.ActionListener() {
00195 public void actionPerformed(java.awt.event.ActionEvent evt) {
00196 bDeleteAllActionPerformed(evt);
00197 }
00198 });
00199
00200 gridBagConstraints = new java.awt.GridBagConstraints();
00201 gridBagConstraints.gridx = 0;
00202 gridBagConstraints.gridy = 3;
00203 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00204 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00205 add(bDeleteAll, gridBagConstraints);
00206
00207 bIsdump.setText("IS Dump");
00208 bIsdump.addActionListener(new java.awt.event.ActionListener() {
00209 public void actionPerformed(java.awt.event.ActionEvent evt) {
00210 bIsdumpActionPerformed(evt);
00211 }
00212 });
00213
00214 gridBagConstraints = new java.awt.GridBagConstraints();
00215 gridBagConstraints.gridx = 0;
00216 gridBagConstraints.gridy = 7;
00217 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00218 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00219 add(bIsdump, gridBagConstraints);
00220
00221 }
00222
00223 private void bIsdumpActionPerformed(java.awt.event.ActionEvent evt) {
00224 TreePath[] paths = trISServers.getSelectionPaths();
00225 for (int i=0; i<paths.length; i++) {
00226 dumpISData(paths[i].getLastPathComponent().toString());
00227 }
00228 }
00229
00230 private void bDeleteAllActionPerformed(java.awt.event.ActionEvent evt) {
00231 ServerIterator sit = new ServerIterator(si.getPartition());
00232 while (sit.hasMoreElements()) {
00233 InfoList il = new InfoList(si.getPartition(), sit.nextServerName());
00234 for (int i=0; i<il.size(); ++i) {
00235 is.remove(il.getInfo(i).getName());
00236 }
00237 }
00238 }
00239
00240
00241 private void bInternalActionPerformed(java.awt.event.ActionEvent evt) {
00242 TreePath[] paths = trISServers.getSelectionPaths();
00243 for (int i=0; i<paths.length; i++) {
00244 plotISData(paths[i].getLastPathComponent().toString());
00245 }
00246 }
00247
00248 private void bExternalActionPerformed(java.awt.event.ActionEvent evt) {
00249 TreePath[] paths = trISServers.getSelectionPaths();
00250 for (int i=0; i<paths.length; i++) {
00251 launchExternalViewer(paths[i].getLastPathComponent().toString());
00252 }
00253 }
00254
00255 private void bISDataActionPerformed(java.awt.event.ActionEvent evt) {
00256 TreePath[] paths = trISServers.getSelectionPaths();
00257 for (int i=0; i<paths.length; i++) {
00258 viewISData(paths[i].getLastPathComponent().toString());
00259 }
00260 }
00261
00262 private void trISServersKeyReleased(java.awt.event.KeyEvent evt) {
00263 switch (evt.getKeyCode()) {
00264 case java.awt.event.KeyEvent.VK_DELETE:
00265 deleteSelectedInfos();
00266 break;
00267 default:
00268 }
00269 }
00270
00271 private void trISServersMouseClicked(java.awt.event.MouseEvent evt) {
00272 int selRow = trISServers.getRowForLocation(evt.getX(), evt.getY());
00273 TreePath selPath = trISServers.getPathForLocation(evt.getX(), evt.getY());
00274 if(selRow != -1) {
00275 if(evt.getClickCount() == 2) {
00276 String name = selPath.getLastPathComponent().toString();
00277
00278 viewISData(name);
00279 }
00280 }
00281 }
00282
00283 private void bCreateTrimRangeTestActionPerformed(java.awt.event.ActionEvent evt) {
00284
00285 }
00286
00287 private void bISRefreshActionPerformed(java.awt.event.ActionEvent evt) {
00288 refreshISTree(true);
00289 }
00290
00291 private void bDeleteActionPerformed(java.awt.event.ActionEvent evt) {
00292 deleteSelectedInfos();
00293 }
00294
00295 private void plotISData(String name) {
00296 if (plotterManager == null)
00297 initPlotterManager();
00298
00299 try {
00300 Serializable ob = ObjectManagerIS.getInstance().readObject(name);
00301 plotterManager.plot(ob);
00302
00303 } catch (java.io.IOException ioe) {
00304 taMessages.append("Error reading object from IS: " + ioe + " " +ioe.getMessage() +"\n");
00305 }
00306 taMessages.append("IS Object: " + name + " plotted\n");
00307 }
00308
00309 private void initPlotterManager() {
00310 plotterManager = PlotterManager.defaultManager();
00311 JFrame frame = new JFrame("Plots");
00312 frame.getContentPane().add(plotterManager.getPlotPanel());
00313 frame.pack();
00314 frame.show();
00315 }
00316
00317 private void viewISData(String name) {
00318 try {
00319 Serializable ob = ObjectManagerIS.getInstance().readObject(name);
00320 InspectorPanel p = new InspectorPanel(name, ob);
00321
00322 JFrame frame2 = new JFrame("TreeTable");
00323 frame2.getContentPane().add(new JScrollPane(p.treeTable));
00324 frame2.pack();
00325 frame2.show();
00326
00327 } catch (java.io.IOException ioe) {
00328 taMessages.append("Error reading object from IS: " + ioe + " " +ioe.getMessage() +"\n");
00329 }
00330 taMessages.append("IS Object: " + name + " viewed\n");
00331 }
00332
00333 private void dumpISData(String name) {
00334 try {
00335 AnyInfo ai = new AnyInfo();
00336 is.getRepository().getValue(name, ai);
00337 InspectorPanel p = new InspectorPanel(name, new Sct.IS.AnyInfoAdapter(ai));
00338
00339 JFrame frame2 = new JFrame("TreeTable");
00340 frame2.getContentPane().add(new JScrollPane(p.treeTable));
00341 frame2.pack();
00342 frame2.show();
00343
00344 } catch (Exception ioe) {
00345 taMessages.append("Error reading object from IS: " + ioe + " " +ioe.getMessage() +"\n");
00346 }
00347 taMessages.append("IS Object: " + name + " dumped\n");
00348 }
00349
00350 private void launchExternalViewer(String name) {
00351 try {
00352 ExternalProcess p = new ExternalProcess("DataDisplayer " + name);
00353 } catch (Exception ioe) {
00354 System.out.println(ioe.getMessage());
00355 ioe.printStackTrace();
00356 }
00357 }
00358
00365 protected void refreshISTree(boolean unsubscribe) {
00366 if (unsubscribe) unsubscribeAll();
00367 String[] servers = is.getISServers();
00368
00369
00370
00371 DefaultMutableTreeNode top = new DefaultMutableTreeNode("IS Servers");
00372 DefaultMutableTreeNode server;
00373 DefaultMutableTreeNode object;
00374 for (int i=0; i<servers.length; i++) {
00375 is.subscribe(servers[i], this);
00376 server = new DefaultMutableTreeNode(servers[i]);
00377 String[] objects = is.getISObjects(servers[i]);
00378 for (int j=0; j<objects.length; j++) {
00379 object = new DefaultMutableTreeNode(objects[j]);
00380 server.add(object);
00381 }
00382 top.add(server);
00383 }
00384 trISServers.setModel(new DefaultTreeModel(top));
00385 }
00386
00390 protected void unsubscribeAll() {
00391 TreeModel model = trISServers.getModel();
00392 Object root = model.getRoot();
00393 for (int i=0; i<model.getChildCount(root); ++i) {
00394 is.unsubscribe(model.getChild(root, i).toString());
00395 }
00396 }
00400 private void deleteSelectedInfos() {
00401 TreePath[] paths = trISServers.getSelectionPaths();
00402 String object;
00403 for (int i=0; i<paths.length; i++) {
00404 object = paths[i].getLastPathComponent().toString();
00405 taMessages.append(is.remove(object) + "\n");
00406 }
00407 }
00408
00415 public void infoCreated(InfoEvent e) {
00416 String serverName = e.getName().split("\\.")[0];
00417 DefaultMutableTreeNode server = null;
00418 for (int i=0; i<trISServers.getModel().getChildCount(trISServers.getModel().getRoot()); i++) {
00419 server = (DefaultMutableTreeNode)trISServers.getModel().getChild(trISServers.getModel().getRoot(), i);
00420 if (server.toString().equals(serverName)) {
00421 String name = new String(e.getName());
00422 DefaultMutableTreeNode newobject = new DefaultMutableTreeNode(name);
00423
00424
00425 ((DefaultTreeModel)trISServers.getModel()).insertNodeInto(newobject, server, server.getChildCount());
00426 return;
00427 }
00428 }
00429 System.err.println("Server: " + serverName + " not found");
00430 }
00431
00435 public void infoDeleted(InfoEvent e) {
00436 TreePath path = trISServers.getNextMatch(new String(e.getName()), 0, Position.Bias.Forward );
00437 if (path == null) {
00438 System.out.println(e.getName() + " not found in tree");
00439 return;
00440 }
00441 DefaultMutableTreeNode hist = (DefaultMutableTreeNode)path.getLastPathComponent();
00442
00443
00444 ((DefaultTreeModel)trISServers.getModel()).removeNodeFromParent(hist);
00445 }
00446
00450 public void infoUpdated(InfoEvent e) {
00451 taMessages.append(new String(e.getName()) + " has been updated\n");
00452 }
00453
00454
00455 private javax.swing.JButton bDelete;
00456 private javax.swing.JButton bDeleteAll;
00457 private javax.swing.JButton bExternal;
00458 private javax.swing.JButton bISData;
00459 private javax.swing.JButton bISRefresh;
00460 private javax.swing.JButton bInternal;
00461 private javax.swing.JButton bIsdump;
00462 private javax.swing.JLabel jLabel2;
00463 private javax.swing.JPanel jPanel2;
00464 private javax.swing.JScrollPane jScrollPane2;
00465 private javax.swing.JSeparator jSeparator1;
00466 private javax.swing.JLabel lList;
00467 private javax.swing.JTree trISServers;
00468
00469 private SystemInterface si;
00470 private ISInterface is;
00471 private JTextArea taMessages;
00472 private PlotterManager plotterManager;
00473 }