00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 package org.objectweb.proactive.ext.scilab.gui;
00032
00033 import java.awt.BorderLayout;
00034 import java.awt.Color;
00035 import java.awt.Dimension;
00036 import java.awt.EventQueue;
00037 import java.awt.FlowLayout;
00038 import java.awt.Font;
00039 import java.awt.Graphics;
00040 import java.awt.Toolkit;
00041 import java.awt.event.ActionEvent;
00042 import java.awt.event.ActionListener;
00043 import java.awt.event.MouseAdapter;
00044 import java.awt.event.MouseEvent;
00045 import java.awt.event.WindowAdapter;
00046 import java.awt.event.WindowEvent;
00047 import java.beans.PropertyChangeEvent;
00048 import java.beans.PropertyChangeListener;
00049 import java.io.File;
00050 import java.io.FileWriter;
00051 import java.io.IOException;
00052 import java.util.ArrayList;
00053 import java.util.Date;
00054 import java.util.HashMap;
00055 import java.util.Iterator;
00056 import java.util.TreeSet;
00057
00058 import javax.swing.BorderFactory;
00059 import javax.swing.DefaultComboBoxModel;
00060 import javax.swing.ImageIcon;
00061 import javax.swing.JButton;
00062 import javax.swing.JFileChooser;
00063 import javax.swing.JLabel;
00064 import javax.swing.JList;
00065 import javax.swing.JMenu;
00066 import javax.swing.JMenuBar;
00067 import javax.swing.JMenuItem;
00068 import javax.swing.JPanel;
00069 import javax.swing.JPopupMenu;
00070 import javax.swing.JScrollPane;
00071 import javax.swing.JSplitPane;
00072 import javax.swing.JTable;
00073 import javax.swing.JTextArea;
00074 import javax.swing.JTree;
00075 import javax.swing.ListSelectionModel;
00076 import javax.swing.Timer;
00077 import javax.swing.WindowConstants;
00078 import javax.swing.filechooser.FileFilter;
00079 import javax.swing.table.DefaultTableModel;
00080
00081 import org.objectweb.proactive.ext.scilab.SciDeployEngine;
00082 import org.objectweb.proactive.ext.scilab.monitor.SciEngineInfo;
00083 import org.objectweb.proactive.ext.scilab.monitor.SciEvent;
00084 import org.objectweb.proactive.ext.scilab.monitor.SciEventListener;
00085 import org.objectweb.proactive.ext.scilab.monitor.SciTaskInfo;
00086 import org.objectweb.proactive.ext.scilab.monitor.ScilabService;
00087
00088 public class SciFrame extends javax.swing.JFrame {
00089 private JMenuBar menuBar;
00090 private JSplitPane splitMain2;
00091 private JScrollPane scrollTreeEngine;
00092 private JTree treeEngine;
00093 private JScrollPane scrollTaskWait;
00094 private JPanel pnlTaskRun;
00095 private JButton btnClearTaskRun;
00096 private JFileChooser chooserDescriptor;
00097 private JMenuItem itemDesktopGrid;
00098 private JMenuItem itemDescriptor;
00099 private JMenu menuEngine;
00100 private JMenuItem itemExit;
00101 private JMenuItem itemTask;
00102 private JMenu menuCommand;
00103 private JPanel pnlLogSouth;
00104 private JTextArea txtLog;
00105 private JScrollPane scrollLog;
00106 private JPanel pnlMainLog;
00107 private JButton btnDeleteTaskEnd;
00108 private JButton btnSaveTaskEnd;
00109 private JPanel pnlBtnTaskEnd;
00110 private JTable tableTaskEnd;
00111 private JScrollPane scrollTaskEnd;
00112 private JLabel lblTaskEnd;
00113 private JPanel pnlTaskEnd;
00114 private JButton btnKillTaskRun;
00115 private JPanel pnlBtnTaskRun;
00116 private JTable tableTaskRun;
00117 private JScrollPane scrollTaskRun;
00118 private JLabel lblTaskRun;
00119 private JButton btnClearTaskWait;
00120 private JButton btnCancelTaskWait;
00121 private JPanel pnlBtnTaskWait;
00122 private JTable tableTaskWait;
00123 private JLabel lblTaskWait;
00124 private JPanel pnlTaskWait;
00125 private JSplitPane splitMain1;
00126 private JSplitPane splitTask1;
00127 private JPanel pnlBtnClearCenter;
00128 private JPanel pnlBtnClear;
00129 private JPanel pnlLblTaskEnd;
00130 private JPanel pnlLblTaskRun;
00131 private JPanel pnlLblTaskWait;
00132 private JMenuItem itemLegend;
00133 private JPanel pnlScilab;
00134 private JPanel pnlLogo;
00135 private JButton btnClearLog;
00136 private JPanel pnlProActive;
00137 private JMenuItem itemRestartEngine;
00138 private JPopupMenu popupTreeEngine;
00139 private JList listPreview;
00140 private JSplitPane splitTask2;
00141 private DefaultTableModel tableTaskWaitModel;
00142 private DefaultTableModel tableTaskRunModel;
00143 private DefaultTableModel tableTaskEndModel;
00144 private TreeEngineNode rootEngine;
00145 private ScilabService service;
00146 private DialogTask dialogTask;
00147 private DialogResult dialogResult;
00148 private String pathDescriptor;
00149 private String nameVn;
00150 private Timer timerRefresh;
00151 private JFileChooser chooserSave;
00152 private JPanel pnlPreview;
00153 private JLabel lblVn;
00154 private DefaultComboBoxModel listPreviewModel;
00155 private JScrollPane scrollPreview;
00156 private TreeEngineRenderer treeRenderer;
00157 private DialogLegend dialogLegend;
00158
00162 public static void main(String[] args) {
00163 SciFrame inst = new SciFrame();
00164 inst.setVisible(true);
00165 }
00166
00167 public SciFrame() {
00168 super();
00169 initGUI();
00170
00171 dialogTask = new DialogTask(this);
00172 dialogTask.setModal(true);
00173
00174 dialogResult = new DialogResult(this);
00175 dialogResult.setModal(true);
00176
00177 dialogLegend = new DialogLegend(this);
00178 dialogLegend.setModal(true);
00179
00180 service = new ScilabService();
00181
00182 service.addEventListenerTask(new SciEventListener(){
00183 public void actionPerformed(SciEvent evt){
00184 SciTaskInfo sciTaskInfo = (SciTaskInfo) evt.getSource();
00185
00186 if(sciTaskInfo.getState() == SciTaskInfo.PENDING){
00187 updateTableTaskWait(sciTaskInfo);
00188 return;
00189 }
00190
00191 if(sciTaskInfo.getState() == SciTaskInfo.CANCELLED){
00192 updateTableTaskCancel(sciTaskInfo);
00193 return;
00194 }
00195
00196 if(sciTaskInfo.getState() == SciTaskInfo.RUNNING){
00197 updateTableTaskRun(sciTaskInfo);
00198 return;
00199 }
00200
00201 if(sciTaskInfo.getState() == SciTaskInfo.KILLED){
00202 updateTableTaskKill(sciTaskInfo);
00203 return;
00204 }
00205
00206 if(sciTaskInfo.getState() == SciTaskInfo.SUCCEEDED || sciTaskInfo.getState() == SciTaskInfo.ABORTED){
00207 updateTableTaskEnd(sciTaskInfo);
00208 return;
00209 }
00210 }
00211 });
00212
00213
00214 service.addEventListenerEngine(new SciEventListener(){
00215 public void actionPerformed(SciEvent evt){
00216 refreshTreeEngine();
00217 }
00218 });
00219
00220 timerRefresh = new Timer(1000, new ActionListener() {
00221 public void actionPerformed(ActionEvent evt) {
00222 timerRefreshActionPerformed(evt);
00223 }
00224 });
00225
00226
00227 timerRefresh.start();
00228 }
00229
00230 private void initGUI() {
00231 try {
00232 {
00233 chooserSave = new JFileChooser();
00234 chooserSave.setDialogTitle("Save Scilab Result");
00235 }
00236 {
00237 splitMain1 = new JSplitPane();
00238 getContentPane().add(splitMain1, BorderLayout.CENTER);
00239 splitMain1.setOrientation(JSplitPane.VERTICAL_SPLIT);
00240 splitMain1.setOneTouchExpandable(true);
00241 splitMain1.setDividerLocation(520);
00242 splitMain1.setDividerSize(7);
00243 {
00244 splitMain2 = new JSplitPane();
00245 splitMain1.add(splitMain2, JSplitPane.TOP);
00246 splitMain2.setOneTouchExpandable(true);
00247 splitMain2.setDividerLocation(160);
00248 splitMain2.setDividerSize(7);
00249 {
00250 scrollTreeEngine = new JScrollPane();
00251 splitMain2.add(scrollTreeEngine, JSplitPane.LEFT);
00252 {
00253 rootEngine = new TreeEngineNode("Scilab Engines");
00254 treeEngine = new JTree(rootEngine);
00255 treeRenderer = new TreeEngineRenderer();
00256 treeEngine.setCellRenderer(treeRenderer);
00257 scrollTreeEngine.setViewportView(treeEngine);
00258 {
00259 popupTreeEngine = new JPopupMenu();
00260 setComponentPopupMenu(
00261 treeEngine,
00262 popupTreeEngine);
00263 {
00264
00265 itemRestartEngine = new JMenuItem();
00266 popupTreeEngine.add(itemRestartEngine);
00267 itemRestartEngine.setText("Restart Engine");
00268 itemRestartEngine.addActionListener(new ActionListener() {
00269 public void actionPerformed(ActionEvent evt) {
00270 itemRestartEngineActionPerformed(evt);
00271 }
00272 });
00273 }
00274 }
00275 treeEngine.addMouseListener(new MouseAdapter() {
00276 public void mouseClicked(MouseEvent evt) {
00277 treeEngineMouseClicked(evt);
00278 }
00279 });
00280 }
00281 }
00282 {
00283 splitTask1 = new JSplitPane();
00284 splitTask1.setOrientation(JSplitPane.VERTICAL_SPLIT);
00285 splitTask1.setDividerSize(7);
00286 splitTask1.setOneTouchExpandable(true);
00287 splitMain2.add(splitTask1, JSplitPane.RIGHT);
00288 {
00289 splitTask2 = new JSplitPane();
00290 splitTask2.setOneTouchExpandable(true);
00291 splitTask2.setOrientation(JSplitPane.VERTICAL_SPLIT);
00292 splitTask2.setDividerSize(7);
00293 splitTask1.add(splitTask2, JSplitPane.TOP);
00294 {
00295 pnlTaskWait = new JPanel();
00296 splitTask2.add(pnlTaskWait, JSplitPane.TOP);
00297 BorderLayout pnlTaskWaitLayout = new BorderLayout();
00298 pnlTaskWait.setLayout(pnlTaskWaitLayout);
00299 pnlTaskWait.setSize(700, 180);
00300 pnlTaskWait.setPreferredSize(new java.awt.Dimension(702, 150));
00301 pnlTaskWait.setBackground(new Color(96, 106, 173));
00302 {
00303 pnlLblTaskWait = new JPanel();
00304 pnlTaskWait.add(pnlLblTaskWait, BorderLayout.NORTH);
00305 pnlLblTaskWait.setBackground(new java.awt.Color(96,106,173));
00306 {
00307 lblTaskWait = new JLabel();
00308 pnlLblTaskWait.add(lblTaskWait);
00309 FlowLayout lblTaskWaitLayout = new FlowLayout();
00310 lblTaskWait
00311 .setLayout(lblTaskWaitLayout);
00312 lblTaskWait.setForeground(Color.WHITE);
00313 lblTaskWait.setFont(new Font(
00314 "Tahoma",
00315 Font.BOLD,
00316 13));
00317
00318 lblTaskWait.setText("Pending Tasks");
00319 }
00320 }
00321
00322 {
00323 scrollTaskWait = new JScrollPane();
00324 pnlTaskWait.add(scrollTaskWait,
00325 BorderLayout.CENTER);
00326 scrollTaskWait.setPreferredSize(new java.awt.Dimension(690, 135));
00327
00328 {
00329 tableTaskWaitModel = new DefaultTableModel(
00330 null, new String[] { "Id Task", "Script",
00331 "Priority", "Awaited Time(ms)",
00332 "State"});
00333
00334 tableTaskWait = new JTable() {
00335 public boolean isCellEditable(int rowIndex, int vColIndex) {
00336 return false;
00337 }
00338 };
00339
00340 scrollTaskWait.setViewportView(tableTaskWait);
00341 scrollTaskWait.getViewport().setBackground(Color.WHITE);
00342 tableTaskWait.setModel(tableTaskWaitModel);
00343 tableTaskWait.getTableHeader().setBackground(new java.awt.Color(250,251,253));
00344 tableTaskWait.getColumnModel().getColumn(4).setCellRenderer(new IconRenderer());
00345 tableTaskWait.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
00346 tableTaskWait
00347 .addMouseListener(new MouseAdapter() {
00348 public void mouseClicked(
00349 MouseEvent evt) {
00350 tableTaskWaitMouseClicked(evt);
00351 }
00352 });
00353 }
00354 }
00355 {
00356 pnlBtnTaskWait = new JPanel();
00357 pnlTaskWait.add(pnlBtnTaskWait,
00358 BorderLayout.SOUTH);
00359 FlowLayout pnlBtnTaskWaitLayout = new FlowLayout();
00360 pnlBtnTaskWaitLayout
00361 .setAlignment(FlowLayout.RIGHT);
00362 pnlBtnTaskWait.setLayout(pnlBtnTaskWaitLayout);
00363 {
00364 btnCancelTaskWait = new JButton();
00365 pnlBtnTaskWait.add(btnCancelTaskWait);
00366 btnCancelTaskWait.setText("Cancel");
00367 btnCancelTaskWait.setToolTipText("Cancel pending tasks ");
00368 btnCancelTaskWait
00369 .addActionListener(new ActionListener() {
00370 public void actionPerformed(
00371 ActionEvent evt) {
00372 btnCancelTaskWaitActionPerformed(evt);
00373 }
00374 });
00375 }
00376 {
00377 btnClearTaskWait = new JButton();
00378 pnlBtnTaskWait.add(btnClearTaskWait);
00379 btnClearTaskWait.setText("Clear");
00380 btnClearTaskWait.setSize(70, 22);
00381 btnClearTaskWait.setToolTipText("Clear cancelled tasks");
00382 btnClearTaskWait
00383 .addActionListener(new ActionListener() {
00384 public void actionPerformed(
00385 ActionEvent evt) {
00386 btnClearTaskWaitActionPerformed(evt);
00387 }
00388 });
00389 }
00390 }
00391 }
00392 {
00393 pnlTaskRun = new JPanel();
00394 splitTask2.add(pnlTaskRun, JSplitPane.BOTTOM);
00395 BorderLayout pnlTaskRunLayout = new BorderLayout();
00396 pnlTaskRun.setLayout(pnlTaskRunLayout);
00397 pnlTaskRun.setSize(700, 180);
00398 pnlTaskRun.setPreferredSize(new java.awt.Dimension(
00399 702, 150));
00400 pnlTaskRun.setBackground(new Color(96, 106, 173));
00401
00402 {
00403 scrollTaskRun = new JScrollPane();
00404 pnlTaskRun.add(scrollTaskRun,
00405 BorderLayout.CENTER);
00406 scrollTaskRun.setPreferredSize(new java.awt.Dimension(690, 135));
00407 {
00408 tableTaskRunModel = new DefaultTableModel(
00409 null, new String[] { "Id Task", "Script",
00410 "Id Engine", "Global Time(ms)",
00411 "State"});
00412
00413 tableTaskRun = new JTable() {
00414 public boolean isCellEditable(int rowIndex, int vColIndex) {
00415 return false;
00416 }
00417 };
00418
00419 scrollTaskRun.setViewportView(tableTaskRun);
00420 scrollTaskRun.getViewport().setBackground(Color.WHITE);
00421
00422 tableTaskRun.setModel(tableTaskRunModel);
00423 tableTaskRun.getTableHeader().setBackground(new java.awt.Color(250,251,253));
00424
00425 tableTaskRun.getColumnModel().getColumn(4).setCellRenderer(new IconRenderer());
00426 tableTaskRun.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
00427 tableTaskRun.addMouseListener(new MouseAdapter() {
00428 public void mouseClicked(
00429 MouseEvent evt) {
00430 tableTaskRunMouseClicked(evt);
00431 }
00432 });
00433 }
00434 }
00435 {
00436 pnlBtnTaskRun = new JPanel();
00437 pnlTaskRun.add(pnlBtnTaskRun,
00438 BorderLayout.SOUTH);
00439 FlowLayout pnlBtnTaskRunLayout = new FlowLayout();
00440 pnlBtnTaskRunLayout
00441 .setAlignment(FlowLayout.RIGHT);
00442 pnlBtnTaskRun.setLayout(pnlBtnTaskRunLayout);
00443 {
00444 btnKillTaskRun = new JButton();
00445 pnlBtnTaskRun.add(btnKillTaskRun);
00446 btnKillTaskRun.setText("Kill");
00447 btnKillTaskRun.setSize(70, 22);
00448 btnKillTaskRun.setToolTipText("Kill executing tasks");
00449 btnKillTaskRun.addActionListener(new ActionListener() {
00450 public void actionPerformed(
00451 ActionEvent evt) {
00452 btnKillTaskRunActionPerformed(evt);
00453 }
00454 });
00455 }
00456 {
00457 btnClearTaskRun = new JButton();
00458 pnlBtnTaskRun.add(btnClearTaskRun);
00459 btnClearTaskRun.setText("Clear");
00460 btnClearTaskRun.setSize(70, 22);
00461 btnClearTaskRun.setToolTipText("Clear killed tasks");
00462 btnClearTaskRun.addActionListener(new ActionListener() {
00463 public void actionPerformed(
00464 ActionEvent evt) {
00465 btnClearTaskRunActionPerformed(evt);
00466 }
00467 });
00468 }
00469 }
00470 {
00471 pnlLblTaskRun = new JPanel();
00472 pnlTaskRun.add(pnlLblTaskRun, BorderLayout.NORTH);
00473 pnlLblTaskRun.setBackground(new java.awt.Color(96,106,173));
00474 {
00475 lblTaskRun = new JLabel();
00476 pnlLblTaskRun.add(lblTaskRun);
00477 lblTaskRun.setForeground(Color.WHITE);
00478 lblTaskRun.setFont(new Font(
00479 "Tahoma",
00480 Font.BOLD,
00481 13));
00482 lblTaskRun.setText("Executing Tasks");
00483 }
00484 }
00485 }
00486
00487 }
00488 {
00489 pnlTaskEnd = new JPanel();
00490 splitTask1.add(pnlTaskEnd, JSplitPane.BOTTOM);
00491 BorderLayout pnlTaskEndLayout = new BorderLayout();
00492 pnlTaskEnd.setLayout(pnlTaskEndLayout);
00493 pnlTaskEnd.setSize(700, 180);
00494 pnlTaskEnd.setPreferredSize(new java.awt.Dimension(
00495 702, 150));
00496 pnlTaskEnd.setBackground(new Color(96, 106, 173));
00497 {
00498 scrollTaskEnd = new JScrollPane();
00499 pnlTaskEnd.add(scrollTaskEnd,BorderLayout.CENTER);
00500 scrollTaskEnd.setPreferredSize(new java.awt.Dimension(690, 135));
00501 {
00502 tableTaskEndModel = new DefaultTableModel(
00503 null, new String[] { "Id Task", "Script",
00504 "Execution Time(ms)", "Global Time(ms)",
00505 "State"});
00506
00507 tableTaskEnd = new JTable() {
00508 public boolean isCellEditable(int rowIndex, int vColIndex) {
00509 return false;
00510 }
00511 };
00512 scrollTaskEnd.setViewportView(tableTaskEnd);
00513 scrollTaskEnd.getViewport().setBackground(Color.WHITE);
00514 tableTaskEnd.setModel(tableTaskEndModel);
00515 tableTaskEnd.getTableHeader().setBackground(new java.awt.Color(250,251,253));
00516 tableTaskEnd.getColumnModel().getColumn(4).setCellRenderer(new IconRenderer());
00517 tableTaskEnd.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
00518 tableTaskEnd.addMouseListener(new MouseAdapter() {
00519 public void mouseClicked(
00520 MouseEvent evt) {
00521 tableTaskEndMouseClicked(evt);
00522 }
00523 });
00524 }
00525 }
00526 {
00527 pnlBtnTaskEnd = new JPanel();
00528 pnlTaskEnd.add(pnlBtnTaskEnd, BorderLayout.SOUTH);
00529 FlowLayout pnlBtnTaskEndLayout = new FlowLayout();
00530 pnlBtnTaskEndLayout
00531 .setAlignment(FlowLayout.RIGHT);
00532 pnlBtnTaskEnd.setLayout(pnlBtnTaskEndLayout);
00533 {
00534 btnSaveTaskEnd = new JButton();
00535 pnlBtnTaskEnd.add(btnSaveTaskEnd);
00536 btnSaveTaskEnd.setText("Save");
00537 btnSaveTaskEnd.setSize(70, 22);
00538 btnSaveTaskEnd.setToolTipText("Save results");
00539 btnSaveTaskEnd
00540 .addActionListener(new ActionListener() {
00541 public void actionPerformed(
00542 ActionEvent evt) {
00543 btnSaveTaskEndActionPerformed(evt);
00544 }
00545 });
00546 }
00547 {
00548 btnDeleteTaskEnd = new JButton();
00549 pnlBtnTaskEnd.add(btnDeleteTaskEnd);
00550 btnDeleteTaskEnd.setText("Delete");
00551 btnDeleteTaskEnd.setSize(70, 22);
00552 btnDeleteTaskEnd.setToolTipText("Delete result");
00553 btnDeleteTaskEnd
00554 .addActionListener(new ActionListener() {
00555 public void actionPerformed(
00556 ActionEvent evt) {
00557 btnDeleteTaskEndActionPerformed(evt);
00558 }
00559 });
00560 }
00561 }
00562 {
00563 pnlLblTaskEnd = new JPanel();
00564 pnlTaskEnd.add(pnlLblTaskEnd, BorderLayout.NORTH);
00565 pnlLblTaskEnd.setBackground(new java.awt.Color(96,106,173));
00566 {
00567 lblTaskEnd = new JLabel();
00568 pnlLblTaskEnd.add(lblTaskEnd);
00569 lblTaskEnd.setForeground(Color.WHITE);
00570 lblTaskEnd.setFont(new Font(
00571 "Tahoma",
00572 Font.BOLD,
00573 13));
00574 lblTaskEnd.setText("Terminated Tasks");
00575 }
00576 }
00577 }
00578 }
00579 }
00580 {
00581 pnlMainLog = new JPanel();
00582 splitMain1.add(pnlMainLog, JSplitPane.BOTTOM);
00583 BorderLayout pnlMainLogLayout = new BorderLayout();
00584 pnlMainLog.setLayout(pnlMainLogLayout);
00585 pnlMainLog
00586 .setPreferredSize(new java.awt.Dimension(790, 348));
00587 pnlMainLog.setSize(790, 200);
00588 pnlMainLog.setBorder(BorderFactory.createTitledBorder("Operations"));
00589 {
00590 scrollLog = new JScrollPane();
00591 pnlMainLog.add(scrollLog, BorderLayout.CENTER);
00592 {
00593 txtLog = new JTextArea();
00594 scrollLog.setViewportView(txtLog);
00595 }
00596 }
00597 {
00598 pnlLogSouth = new JPanel();
00599 pnlMainLog.add(pnlLogSouth, BorderLayout.SOUTH);
00600 BorderLayout pnlLogSouthLayout = new BorderLayout();
00601 pnlLogSouth.setLayout(pnlLogSouthLayout);
00602 {
00603 pnlLogo = new JPanel();
00604 pnlLogSouth.add(pnlLogo, BorderLayout.CENTER);
00605 FlowLayout pnlLogoLayout = new FlowLayout();
00606 pnlLogo.setLayout(pnlLogoLayout);
00607 pnlLogo.setSize(802, 60);
00608 pnlLogo.setPreferredSize(new java.awt.Dimension(802, 60));
00609 {
00610 pnlProActive = new JPanel() {
00611 public void paintComponent(Graphics g) {
00612 super.paintComponent(g);
00613
00614 g.drawImage(
00615 Toolkit
00616 .getDefaultToolkit()
00617 .getImage(
00618 getClass()
00619 .getResource(
00620 "img/logo_proactive.png")),
00621 0,
00622 0,
00623 this);
00624 }
00625 };
00626 pnlLogo.add(pnlProActive);
00627
00628 pnlProActive
00629 .setPreferredSize(new java.awt.Dimension(
00630 200,
00631 30));
00632 pnlProActive.setSize(200, 70);
00633 }
00634 {
00635 pnlScilab = new JPanel() {
00636 public void paintComponent(Graphics g) {
00637 super.paintComponent(g);
00638
00639 g.drawImage(
00640 Toolkit
00641 .getDefaultToolkit()
00642 .getImage(
00643 getClass()
00644 .getResource(
00645 "img/logo_scilab1.gif")),
00646 0,
00647 0,
00648 this);
00649 }
00650 };
00651 pnlLogo.add(pnlScilab);
00652
00653 pnlScilab
00654 .setPreferredSize(new java.awt.Dimension(
00655 125,
00656 70));
00657 pnlScilab.setSize(125, 70);
00658 }
00659 }
00660 {
00661 pnlBtnClear = new JPanel();
00662 BorderLayout pnlBtnClearLayout = new BorderLayout();
00663 pnlBtnClear.setLayout(pnlBtnClearLayout);
00664 pnlLogSouth.add(pnlBtnClear, BorderLayout.EAST);
00665 {
00666 btnClearLog = new JButton();
00667 pnlBtnClear.add(btnClearLog, BorderLayout.NORTH);
00668 btnClearLog.setText("Clear");
00669 btnClearLog
00670 .setToolTipText("Clear operation logs");
00671 btnClearLog
00672 .addActionListener(new ActionListener() {
00673 public void actionPerformed(
00674 ActionEvent evt) {
00675 btnClearLogActionPerformed(evt);
00676 }
00677 });
00678 }
00679 {
00680 pnlBtnClearCenter = new JPanel();
00681 pnlBtnClear.add(
00682 pnlBtnClearCenter,
00683 BorderLayout.CENTER);
00684 }
00685 }
00686 }
00687 }
00688 }
00689
00690 {
00691 menuBar = new JMenuBar();
00692 setJMenuBar(menuBar);
00693 {
00694 menuCommand = new JMenu();
00695 menuBar.add(menuCommand);
00696 menuCommand.setText("Command");
00697 {
00698 menuEngine = new JMenu();
00699 menuCommand.add(menuEngine);
00700 menuEngine.setText("New Engine");
00701 {
00702 itemDescriptor = new JMenuItem();
00703 menuEngine.add(itemDescriptor);
00704 itemDescriptor.setText("From Descriptor");
00705 itemDescriptor
00706 .addActionListener(new ActionListener() {
00707 public void actionPerformed(
00708 ActionEvent evt) {
00709 itemDescriptorActionPerformed(evt);
00710 }
00711 });
00712 }
00713 {
00714 itemDesktopGrid = new JMenuItem();
00715 menuEngine.add(itemDesktopGrid);
00716 itemDesktopGrid.setText("From Desktop Grid");
00717
00718 itemDesktopGrid.setEnabled(false);
00719 itemDesktopGrid
00720 .addActionListener(new ActionListener() {
00721 public void actionPerformed(
00722 ActionEvent evt) {
00723 itemDesktopGridActionPerformed(evt);
00724 }
00725 });
00726 }
00727 }
00728 {
00729 itemTask = new JMenuItem();
00730 menuCommand.add(itemTask);
00731 itemTask.setText("New Task");
00732 itemTask.addActionListener(new ActionListener() {
00733 public void actionPerformed(ActionEvent evt) {
00734 itemTaskActionPerformed(evt);
00735 }
00736 });
00737 }
00738 {
00739 itemLegend = new JMenuItem();
00740 menuCommand.add(itemLegend);
00741 itemLegend.setText("Legend");
00742 itemLegend.addActionListener(new ActionListener() {
00743 public void actionPerformed(ActionEvent evt) {
00744 itemLegendActionPerformed(evt);
00745 }
00746 });
00747 }
00748 {
00749 itemExit = new JMenuItem();
00750 menuCommand.add(itemExit);
00751 itemExit.setText("Exit");
00752 itemExit.addActionListener(new ActionListener() {
00753 public void actionPerformed(ActionEvent evt) {
00754
00755 if(service != null){
00756 service.exit();
00757 }
00758
00759 System.exit(0);
00760 }
00761 });
00762 }
00763 }
00764 }
00765 {
00766 chooserDescriptor = new JFileChooser();
00767 FileFilter filter = new FileFilter() {
00768 public boolean accept(File f) {
00769
00770 if (f == null) {
00771 return false;
00772 }
00773
00774 if (f.isDirectory()) {
00775 return true;
00776 }
00777
00778 return f.getName().endsWith(".xml");
00779 }
00780
00781 public String getDescription() {
00782 return "XML Filter";
00783 }
00784 };
00785
00786 chooserDescriptor.setApproveButtonText("Deploy");
00787 chooserDescriptor.setFileFilter(filter);
00788
00789 {
00790 pnlPreview = new JPanel();
00791 BorderLayout pnlPreviewLayout = new BorderLayout();
00792 pnlPreview.setLayout(pnlPreviewLayout);
00793 pnlPreview.setBorder(BorderFactory.createTitledBorder(""));
00794 {
00795 lblVn = new JLabel();
00796 lblVn.setText("Select Virtual Node");
00797 pnlPreview.add(lblVn, BorderLayout.NORTH);
00798 }
00799 {
00800 scrollPreview = new JScrollPane();
00801 scrollPreview.setPreferredSize(new java.awt.Dimension(90, 80));
00802 scrollPreview.setBorder(BorderFactory.createLineBorder(Color.BLACK));
00803 pnlPreview.add(scrollPreview, BorderLayout.CENTER);
00804 {
00805 listPreviewModel = new DefaultComboBoxModel();
00806 listPreview = new JList();
00807 listPreview.setModel(listPreviewModel);
00808 scrollPreview.setViewportView(listPreview);
00809 }
00810 }
00811 }
00812
00813 chooserDescriptor.setAccessory(pnlPreview);
00814 chooserDescriptor.addPropertyChangeListener( new PropertyChangeListener(){
00815 public void propertyChange(PropertyChangeEvent evt) {
00816 if(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(evt.getPropertyName())) {
00817 File newFile = (File) evt.getNewValue();
00818 if(newFile != null) {
00819 String path = newFile.getAbsolutePath();
00820
00821 String arrayNameVn[] = SciDeployEngine.getListVirtualNode(path);
00822
00823 if(listPreviewModel == null){
00824 txtLog.append("Invalid deployment descriptor:" + path);
00825 return;
00826 }
00827
00828 listPreviewModel.removeAllElements();
00829 for(int i=0; i<arrayNameVn.length; i++){
00830 listPreviewModel.addElement(arrayNameVn[i]);
00831 }
00832 }
00833 }
00834 }
00835 });
00836 }
00837
00838 setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
00839 this.addWindowListener(new WindowAdapter() {
00840 public void windowClosing(WindowEvent evt) {
00841
00842 if(service != null){
00843 service.exit();
00844 }
00845
00846 System.exit(0);
00847 }
00848 });
00849 pack();
00850 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
00851 Dimension f = this.getSize();
00852 int x = (d.width - f.width) / 2;
00853 int y = (d.height - f.height) / 2;
00854 this.setBounds(x, y, f.width, f.height );
00855 this.setIconImage(new ImageIcon(getClass().getResource("img/icone.png")).getImage());
00856 this.setTitle("Grid Scilab ToolBox");
00857 this.setSize(812, 780);
00858 } catch (Exception e) {
00859 e.printStackTrace();
00860 }
00861 }
00862
00863
00864 private void itemDescriptorActionPerformed(ActionEvent evt) {
00865
00866 this.deployDescriptor();
00867 }
00868
00869 private void itemDesktopGridActionPerformed(ActionEvent evt) {
00870
00871 }
00872
00873 private void itemTaskActionPerformed(ActionEvent evt) {
00874
00875 this.addTask();
00876 }
00877
00878 private void treeEngineMouseClicked(MouseEvent evt) {
00879
00880 }
00881
00882 private void tableTaskWaitMouseClicked(MouseEvent evt) {
00883
00884 if (evt.getClickCount() == 2) {
00885 String idTask = (String) this.tableTaskWaitModel.getValueAt(this.tableTaskWait.getSelectedRow(), 0);
00886
00887 ArrayList listTask = service.getListTaskWait();
00888
00889 SciTaskInfo sciTaskInfo = null;
00890 int i;
00891 for(i=0; i<listTask.size(); i++){
00892 sciTaskInfo = (SciTaskInfo) listTask.get(i);
00893 if(idTask.equals(sciTaskInfo.getIdTask())){
00894 break;
00895 }
00896 }
00897
00898 if(i == listTask.size()){
00899 return;
00900 }
00901
00902
00903 this.dialogResult.setPathScript(sciTaskInfo.getPathScript());
00904 this.dialogResult.setJobInit(sciTaskInfo.getSciTask().getJobInit());
00905 this.dialogResult.setDataOut("");
00906 this.dialogResult.setSaveEnable(false);
00907
00908 this.dialogResult.setLocationRelativeTo(this);
00909 this.dialogResult.setVisible(true);
00910 }
00911 }
00912
00913 private void tableTaskRunMouseClicked(MouseEvent evt) {
00914
00915 if (evt.getClickCount() == 2) {
00916 String idTask = (String)this.tableTaskRunModel.getValueAt(this.tableTaskRun.getSelectedRow(), 0);
00917
00918 SciTaskInfo sciTaskInfo = (SciTaskInfo) service.getMapTaskRun().get(idTask);
00919 this.dialogResult.setPathScript(sciTaskInfo.getPathScript());
00920 this.dialogResult.setJobInit(sciTaskInfo.getSciTask().getJobInit());
00921 this.dialogResult.setDataOut("");
00922 this.dialogResult.setSaveEnable(false);
00923
00924 this.dialogResult.setLocationRelativeTo(this);
00925 this.dialogResult.setVisible(true);
00926 }
00927 }
00928
00929 private void tableTaskEndMouseClicked(MouseEvent evt) {
00930
00931
00932 if (evt.getClickCount() == 2) {
00933 String idTask = (String)this.tableTaskEndModel.getValueAt(this.tableTaskEnd.getSelectedRow(), 0);
00934
00935 SciTaskInfo sciTaskInfo = service.getTaskEnd(idTask);
00936 this.dialogResult.setPathScript(sciTaskInfo.getPathScript());
00937 this.dialogResult.setJobInit(sciTaskInfo.getSciTask().getJobInit());
00938
00939 String strResult="";
00940 ArrayList listResult = sciTaskInfo.getSciResult().getList();
00941 for(int i=0; i< listResult.size(); i++){
00942 strResult += listResult.get(i).toString() + "\n";
00943 }
00944
00945 this.dialogResult.setSaveEnable(true);
00946 this.dialogResult.setDataOut(strResult);
00947 this.dialogResult.setLocationRelativeTo(this);
00948 this.dialogResult.setVisible(true);
00949 }
00950 }
00951
00952 private void btnCancelTaskWaitActionPerformed(ActionEvent evt) {
00953
00954 int array[] = this.tableTaskWait.getSelectedRows();
00955
00956 String idEngine;
00957 for(int i=0; i<array.length; i++){
00958 idEngine = (String) this.tableTaskWaitModel.getValueAt(array[i], 0);
00959 service.cancelTask(idEngine);
00960 }
00961 }
00962
00963 private void btnClearTaskWaitActionPerformed(ActionEvent evt) {
00964
00965 int i = 0;
00966 int count = this.tableTaskWaitModel.getRowCount();
00967 String value;
00968
00969 while(i<count){
00970 value = (String) this.tableTaskWaitModel.getValueAt(i, 3);
00971
00972 if(value.equals("-")){
00973 this.tableTaskWaitModel.removeRow(i);
00974 count--;
00975 }else{
00976 i++;
00977 }
00978 }
00979 }
00980
00981 private void btnKillTaskRunActionPerformed(ActionEvent evt) {
00982
00983 int array[] = this.tableTaskRun.getSelectedRows();
00984
00985 String idEngine;
00986 for(int i=0; i<array.length; i++){
00987 idEngine = (String) this.tableTaskRunModel.getValueAt(array[i], 0);
00988 service.killTask(idEngine);
00989 }
00990 }
00991
00992 private void btnClearTaskRunActionPerformed(ActionEvent evt) {
00993
00994 int i = 0;
00995 int count = this.tableTaskRunModel.getRowCount();
00996 String value;
00997
00998 while(i<count){
00999 value = (String) this.tableTaskRunModel.getValueAt(i, 3);
01000
01001 if(value.equals("-")){
01002 this.tableTaskRunModel.removeRow(i);
01003 count--;
01004 }else{
01005 i++;
01006 }
01007 }
01008 }
01009
01010 private void btnSaveTaskEndActionPerformed(ActionEvent evt) {
01011
01012
01013 int i = this.tableTaskWait.getSelectedRow();
01014
01015 if( i== -1) return;
01016
01017 String idTask = (String) this.tableTaskEndModel.getValueAt(i, 0);
01018 SciTaskInfo sciTaskInfo = service.getTaskEnd(idTask);
01019
01020 if (this.chooserSave.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) {
01021 return;
01022 }
01023
01024 File f = this.chooserSave.getSelectedFile().getAbsoluteFile();
01025 if(f.exists() && !f.canWrite()){
01026 return;
01027 }
01028
01029 String strResult="";
01030 ArrayList listResult = sciTaskInfo.getSciResult().getList();
01031 for(i=0; i< listResult.size(); i++){
01032 strResult += listResult.get(i).toString() + "\n";
01033 }
01034 try{
01035 FileWriter fw = new FileWriter(f);
01036 fw.write(strResult);
01037 fw.close();
01038
01039 }catch(IOException e){
01040 e.printStackTrace();
01041 }
01042 }
01043
01044 private void btnDeleteTaskEndActionPerformed(ActionEvent evt) {
01045
01046
01047 int array[] = this.tableTaskEnd.getSelectedRows();
01048 int length = array.length;
01049 String idEngine;
01050 for(int i=length-1; i >= 0; i--){
01051 idEngine = (String) this.tableTaskEndModel.getValueAt(array[i], 0);
01052 service.removeTask(idEngine);
01053 this.tableTaskEndModel.removeRow(array[i]);
01054 }
01055 }
01056
01057 private void btnClearLogActionPerformed(ActionEvent evt) {
01058
01059 this.txtLog.setText("");
01060 }
01061
01062 private void timerRefreshActionPerformed(ActionEvent evt){
01063 this.refreshTableTask();
01064 }
01065
01066 private void deployDescriptor() {
01067 if (this.chooserDescriptor.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
01068 return;
01069 }
01070
01071 pathDescriptor = this.chooserDescriptor.getSelectedFile().getAbsolutePath();
01072 nameVn = (String)listPreview.getSelectedValue();
01073
01074 if(nameVn == null){
01075 txtLog.append("->Please select a Virtual Node: "
01076 + pathDescriptor + "\n");
01077 return;
01078 }
01079
01080 txtLog.append("->Deployment is running: "
01081 + pathDescriptor + "\n");
01082
01083 (new Thread(){
01084 private String path = pathDescriptor;
01085 public void run(){
01086 service.deployEngine(nameVn, path);
01087 txtLog.append("->Deployment is successfull:" + path + "\n");
01088 }
01089 }).start();
01090 }
01091
01092 private void addTask() {
01093
01094 if(this.service == null){
01095 this.txtLog.append("->No Node Descriptor is deployed" + "\n");
01096 return;
01097 }
01098
01099 if(this.service.getNbEngine() == 0){
01100 this.txtLog.append("->No Scilab Engine is launched" + "\n");
01101 return;
01102 }
01103
01104 this.dialogTask.setLocationRelativeTo(this);
01105 this.dialogTask.setVisible(true);
01106
01107 if ((this.dialogTask.getState() == DialogTask.CANCEL)) {
01108 return;
01109 }
01110
01111 int priority = SciTaskInfo.NORMAL;
01112
01113 if(dialogTask.getTaskPriority().equals("Low")){
01114 priority = SciTaskInfo.LOW;
01115 }else if(dialogTask.getTaskPriority().equals("High")){
01116 priority = SciTaskInfo.HIGH;
01117 }
01118
01119 try {
01120 service.sendTask(dialogTask.getPath(), dialogTask.getJobInit(), dialogTask.getDataOut(), priority);
01121 } catch (IOException e) {
01122 txtLog.append("->Path Error :" + dialogTask.getPath() + "\n");
01123 }
01124 }
01125
01126 private void refreshTreeEngine(){
01127 HashMap mapEngine = this.service.getMapEngine();
01128 SciEngineInfo sciEngineInfo;
01129 TreeEngineNode nodeEngine;
01130
01131 int i = 0;
01132 int count = this.rootEngine.getChildCount();
01133 while(i<count){
01134 nodeEngine = (TreeEngineNode) this.rootEngine.getChildAt(i);
01135 sciEngineInfo = (SciEngineInfo) mapEngine.remove(nodeEngine.toString());
01136 if(sciEngineInfo == null){
01137 nodeEngine.removeFromParent();
01138 count--;
01139 }else{
01140 nodeEngine.removeAllChildren();
01141 nodeEngine.add(new TreeEngineNode(sciEngineInfo.getSciEngineUrl()));
01142 i++;
01143 }
01144 }
01145
01146 TreeSet listSort = new TreeSet(mapEngine.keySet());
01147 Iterator it = listSort.iterator();
01148
01149 while(it.hasNext()){
01150 sciEngineInfo = (SciEngineInfo) mapEngine.get(it.next());
01151 nodeEngine = new TreeEngineNode(sciEngineInfo.getIdEngine());
01152 nodeEngine.add(new TreeEngineNode(sciEngineInfo.getSciEngineUrl()));
01153 this.rootEngine.add(nodeEngine);
01154 }
01155
01156 updateTreeNodes();
01157 }
01158
01159 private void updateTreeNodes(){
01160 EventQueue.invokeLater( new Runnable(){
01161 public void run() {
01162 treeEngine.updateUI();
01163 }} );
01164
01165 }
01166
01167 private void setStateTreeNode(String idEngine, int state){
01168 TreeEngineNode nodeEngine;
01169 for(int i=0; i < this.rootEngine.getChildCount(); i++){
01170 nodeEngine = (TreeEngineNode) this.rootEngine.getChildAt(i);
01171 nodeEngine.getUserObject();
01172 if(idEngine.equals(nodeEngine.toString())){
01173 nodeEngine.setState(state);
01174 }
01175 }
01176 }
01177
01178 private void refreshTableTask(){
01179 String value;
01180 for(int i=0; i<this.tableTaskWaitModel.getRowCount(); i++){
01181 value = (String)this.tableTaskWaitModel.getValueAt(i, 3);
01182
01183 if(value.equals("-"))
01184 continue;
01185
01186 value = (String)this.tableTaskWaitModel.getValueAt(i, 3);
01187 value = Integer.parseInt(value) + 1000 + "";
01188 this.tableTaskWaitModel.setValueAt(value, i, 3);
01189 }
01190
01191 for(int i=0; i<this.tableTaskRunModel.getRowCount(); i++){
01192 value = (String)this.tableTaskRunModel.getValueAt(i, 3);
01193 if(value.equals("-"))
01194 continue;
01195
01196 value = (String)this.tableTaskRunModel.getValueAt(i, 3);
01197 value = Integer.parseInt(value) + 1000 + "";
01198 this.tableTaskRunModel.setValueAt(value, i, 3);
01199 }
01200 }
01201
01202 private void updateTableTaskWait(SciTaskInfo sciTaskInfo){
01203 String strPriority;
01204
01205 if (sciTaskInfo.getPriority() == SciTaskInfo.HIGH) {
01206 strPriority = "High";
01207 } else if (sciTaskInfo.getPriority() == SciTaskInfo.NORMAL) {
01208 strPriority = "Normal";
01209 } else {
01210 strPriority = "Low";
01211 }
01212
01213 Object row[] = new Object[]{
01214 sciTaskInfo.getIdTask(),
01215 sciTaskInfo.getNameScript(),
01216 strPriority,
01217 (new Date()).getTime() - sciTaskInfo.getDateStart() + "",
01218 new ImageIcon(getClass().getResource("img/runTask.gif"))
01219 };
01220 this.tableTaskWaitModel.addRow(row);
01221 txtLog.append("->Add new Scilab Task :" + sciTaskInfo.getIdTask() + "\n");
01222 }
01223
01224 private void updateTableTaskCancel(SciTaskInfo sciTaskInfo){
01225 String idTask;
01226 for(int i=0; i<this.tableTaskWaitModel.getRowCount(); i++){
01227 idTask = (String) this.tableTaskWaitModel.getValueAt(i,0);
01228 if(idTask.equals(sciTaskInfo.getIdTask())){
01229 this.tableTaskWaitModel.setValueAt("-", i, 2);
01230 this.tableTaskWaitModel.setValueAt("-", i, 3);
01231 this.tableTaskWaitModel.setValueAt(new ImageIcon(getClass().getResource("img/stopTask.gif")), i, 4);
01232 break;
01233 }
01234 }
01235 txtLog.append("->Cancel Scilab Task :" + sciTaskInfo.getIdTask() + "\n");
01236 }
01237
01238 private void updateTableTaskRun(SciTaskInfo sciTaskInfo){
01239 String idTask;
01240
01241 for(int i=0; i<this.tableTaskWaitModel.getRowCount(); i++){
01242 idTask = (String) this.tableTaskWaitModel.getValueAt(i,0);
01243 if(idTask.equals(sciTaskInfo.getIdTask())){
01244 this.tableTaskWaitModel.removeRow(i);
01245 break;
01246 }
01247 }
01248
01249 Object row[] = new Object[]{
01250 sciTaskInfo.getIdTask(),
01251 sciTaskInfo.getNameScript(),
01252 sciTaskInfo.getIdEngine(),
01253 (new Date()).getTime() - sciTaskInfo.getDateStart() + "",
01254 new ImageIcon(getClass().getResource("img/runTask.gif"))
01255 };
01256
01257 this.tableTaskRunModel.addRow(row);
01258 txtLog.append("->Execute Scilab Task :" + sciTaskInfo.getIdTask() + "\n");
01259 }
01260
01261 private void updateTableTaskKill(SciTaskInfo sciTaskInfo){
01262 String idTask;
01263 for(int i=0; i<this.tableTaskRunModel.getRowCount(); i++){
01264 idTask = (String) this.tableTaskRunModel.getValueAt(i,0);
01265 if(idTask.equals(sciTaskInfo.getIdTask())){
01266 this.tableTaskRunModel.setValueAt("-", i, 2);
01267 this.tableTaskRunModel.setValueAt("-", i, 3);
01268 this.tableTaskRunModel.setValueAt(new ImageIcon(getClass().getResource("img/stopTask.gif")), i, 4);
01269 txtLog.append("->Execute Scilab Task :" + sciTaskInfo.getIdTask() + "\n");
01270 break;
01271 }
01272 }
01273 }
01274
01275 private void updateTableTaskEnd(SciTaskInfo sciTaskInfo){
01276 String idTask;
01277 for(int i=0; i<this.tableTaskRunModel.getRowCount(); i++){
01278 idTask = (String) this.tableTaskRunModel.getValueAt(i,0);
01279 if(idTask.equals(sciTaskInfo.getIdTask())){
01280 this.tableTaskRunModel.removeRow(i);
01281 break;
01282 }
01283 }
01284
01285 String strTmp;
01286
01287 if(sciTaskInfo.getState() == SciTaskInfo.SUCCEEDED){
01288 strTmp = "img/successTask.gif";
01289 setStateTreeNode(sciTaskInfo.getIdEngine(), TreeEngineNode.VALID);
01290 }
01291 else{
01292 strTmp = "img/abortTask.gif";
01293 setStateTreeNode(sciTaskInfo.getIdEngine(), TreeEngineNode.SUSPECT);
01294 }
01295
01296 Object row[] = new Object[]{
01297 sciTaskInfo.getIdTask(),
01298 sciTaskInfo.getNameScript(),
01299 sciTaskInfo.getTimeExecution() + "",
01300 sciTaskInfo.getTimeGlobal() + "",
01301 new ImageIcon(getClass().getResource(strTmp))
01302 };
01303 this.tableTaskEndModel.addRow(row);
01304
01305 updateTreeNodes();
01306
01307 txtLog.append("->Terminate Scilab Task :" + sciTaskInfo.getIdTask() + "\n");
01308 }
01309
01313 private void setComponentPopupMenu(
01314 final java.awt.Component parent,
01315 final javax.swing.JPopupMenu menu) {
01316 parent.addMouseListener(new java.awt.event.MouseAdapter() {
01317 public void mousePressed(java.awt.event.MouseEvent e) {
01318 if (e.isPopupTrigger())
01319 menu.show(parent, e.getX(), e.getY());
01320
01321 TreeEngineNode nodeEngine = (TreeEngineNode) treeEngine.getLastSelectedPathComponent();
01322
01323 if(nodeEngine == null){
01324 return;
01325 }
01326
01327 if(!nodeEngine.isRoot() && !nodeEngine.isLeaf()){
01328 itemRestartEngine.setEnabled(true);
01329 }else{
01330 itemRestartEngine.setEnabled(false);
01331 }
01332 }
01333 public void mouseReleased(java.awt.event.MouseEvent e) {
01334 if (e.isPopupTrigger())
01335 menu.show(parent, e.getX(), e.getY());
01336 }
01337 });
01338 }
01339
01340 private void itemRestartEngineActionPerformed(ActionEvent evt) {
01341
01342
01343 TreeEngineNode nodeEngine = (TreeEngineNode) treeEngine.getLastSelectedPathComponent();
01344
01345 if(nodeEngine == null){
01346 return;
01347 }
01348
01349 nodeEngine.setState(TreeEngineNode.VALID);
01350 service.restartEngine(nodeEngine.toString());
01351 }
01352
01353 private void itemLegendActionPerformed(ActionEvent evt) {
01354 this.dialogLegend.setLocationRelativeTo(this);
01355 this.dialogLegend.setVisible(true);
01356 }
01357 }