org/objectweb/proactive/ext/scilab/gui/SciFrame.java

00001 /* 
00002  * ################################################################
00003  * 
00004  * ProActive: The Java(TM) library for Parallel, Distributed, 
00005  *            Concurrent computing with Security and Mobility
00006  * 
00007  * Copyright (C) 1997-2007 INRIA/University of Nice-Sophia Antipolis
00008  * Contact: proactive@objectweb.org
00009  * 
00010  * This library is free software; you can redistribute it and/or
00011  * modify it under the terms of the GNU Lesser General Public
00012  * License as published by the Free Software Foundation; either
00013  * version 2.1 of the License, or any later version.
00014  *  
00015  * This library is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018  * Lesser General Public License for more details.
00019  * 
00020  * You should have received a copy of the GNU Lesser General Public
00021  * License along with this library; if not, write to the Free Software
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
00023  * USA
00024  *  
00025  *  Initial developer(s):               The ProActive Team
00026  *                        http://www.inria.fr/oasis/ProActive/contacts.html
00027  *  Contributor(s): 
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                                                         //to modify
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 }

Generated on Mon Jan 22 15:16:10 2007 for ProActive by  doxygen 1.5.1