You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2011/12/19 20:13:58 UTC

svn commit: r1220903 - in /incubator/airavata/trunk/modules/xbaya-gui/src/main: java/org/apache/airavata/xbaya/gui/ java/org/apache/airavata/xbaya/menues/ java/org/apache/airavata/xbaya/menues/run/ resources/images/menu/

Author: samindaw
Date: Mon Dec 19 19:13:58 2011
New Revision: 1220903

URL: http://svn.apache.org/viewvc?rev=1220903&view=rev
Log:
Stop button + menu to stop a running workflow

Added:
    incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/stop.png   (with props)
Modified:
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaGUI.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/run/RunMenuItem.java

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaGUI.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaGUI.java?rev=1220903&r1=1220902&r2=1220903&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaGUI.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaGUI.java Mon Dec 19 19:13:58 2011
@@ -373,7 +373,6 @@ public class XBayaGUI implements EventLi
     public void addWorkflowTabChangeListener(ChangeListener listener){
 		graphTabbedPane.addChangeListener(listener);
 		tabChangeListeners.add(listener);
-		
     }
     
     public void removeWorkflowTabChangeListener(ChangeListener listener){

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java?rev=1220903&r1=1220902&r2=1220903&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java Mon Dec 19 19:13:58 2011
@@ -31,6 +31,7 @@ public class MenuIcons {
     public static final ImageIcon NEW_ICON = SwingUtil.createImageIcon("menu/new2.png");
     
     public static final ImageIcon RUN_ICON = SwingUtil.createImageIcon("menu/play4.png");
+    public static final ImageIcon STOP_ICON = SwingUtil.createImageIcon("menu/stop.png");
     public static final ImageIcon MONITOR_PAUSE_ICON = SwingUtil.createImageIcon("menu/pause_monitor1.png");
     public static final ImageIcon MONITOR_RESUME_ICON = SwingUtil.createImageIcon("menu/resume_monitoring1.png");;
     public static final ImageIcon JCR_ICON = SwingUtil.createImageIcon("jcr-repo.png");;

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/run/RunMenuItem.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/run/RunMenuItem.java?rev=1220903&r1=1220902&r2=1220903&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/run/RunMenuItem.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/run/RunMenuItem.java Mon Dec 19 19:13:58 2011
@@ -31,6 +31,8 @@ import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
+import javax.swing.event.MenuEvent;
+import javax.swing.event.MenuListener;
 
 import org.apache.airavata.xbaya.XBayaEngine;
 import org.apache.airavata.xbaya.event.Event;
@@ -77,6 +79,7 @@ public class RunMenuItem  implements Eve
     private static final Logger logger = LoggerFactory.getLogger(RunMenuItem.class);
 
 	private static final String EXECUTE_ACTIONS = "run_actions";
+	private static final String EXECUTE_MONITOR_ACTIONS = "monitor_actions";
 
     private XBayaToolBar toolBar;
 
@@ -85,6 +88,10 @@ public class RunMenuItem  implements Eve
 	private ToolbarButton pauseMonitorButton;
 
 	private ToolbarButton resumeMonitorButton;
+
+	private JMenuItem stopWorkflowItem;
+
+	private ToolbarButton stopWorkflowButton;
     
     /**
      * Constructs a WorkflowMenu.
@@ -99,6 +106,7 @@ public class RunMenuItem  implements Eve
         monitor.addEventListener(this);
         monitor.getConfiguration().addEventListener(this);
         XBayaToolBar.setGroupOrder(EXECUTE_ACTIONS, 5);
+        XBayaToolBar.setGroupOrder(EXECUTE_MONITOR_ACTIONS, 6);
     }
 
     /**
@@ -119,14 +127,18 @@ public class RunMenuItem  implements Eve
         this.configMonitorItem = createConfigMonitoring();
         this.resumeMonitoringItem = createResumeMonitoring();
         this.pauseMonitoringItem = createPauseMonitoring();
-        this.resetMonitoringItem = createStopMonitoring();
+        this.resetMonitoringItem = createResetMonitoring();
+        stopWorkflowItem = createStopWorkflow();
         
         runMenu = new JMenu("Run");
         runMenu.setMnemonic(KeyEvent.VK_R);
 
         runMenu.add(launchDynamicWorkflowItem);
         runMenu.add(launchXBayaInterpreterItem);
-
+        
+        runMenu.addSeparator();
+        runMenu.add(stopWorkflowItem);
+        
         runMenu.addSeparator();
         runMenu.add(launchGridChemWorkflowItem);
         runMenu.add(launchAndSaveInGridChemWorkflowItem);
@@ -138,8 +150,19 @@ public class RunMenuItem  implements Eve
         runMenu.add(this.resetMonitoringItem);
         runMenu.add(this.configMonitorItem);
         
-        setupMonitors();
+        runMenu.addMenuListener(new MenuListener(){
+			@Override
+			public void menuCanceled(MenuEvent e) {}
+			@Override
+			public void menuDeselected(MenuEvent e) {}
+			@Override
+			public void menuSelected(MenuEvent e) {
+				stopWorkflowItem.setEnabled(isWorkflowRunning());
+			}
+        });
         
+        setupMonitors();
+        startStopButtonStateUpdater();
     }
 
 	private void setupMonitors() {
@@ -195,7 +218,7 @@ public class RunMenuItem  implements Eve
 		item.addActionListener(action);
         boolean valid = this.engine.getMonitor().getConfiguration().isValid();
         item.setVisible(valid);
-        resumeMonitorButton = getToolBar().addToolbarButton(EXECUTE_ACTIONS,item.getText(), MenuIcons.MONITOR_RESUME_ICON, "Resume monitoring", action,3);
+        resumeMonitorButton = getToolBar().addToolbarButton(EXECUTE_MONITOR_ACTIONS,item.getText(), MenuIcons.MONITOR_RESUME_ICON, "Resume monitoring", action,4);
         resumeMonitorButton.setEnabled(false);
         return item;
     }
@@ -216,23 +239,37 @@ public class RunMenuItem  implements Eve
         };
 		item.addActionListener(action);
         item.setVisible(false);
-        pauseMonitorButton = getToolBar().addToolbarButton(EXECUTE_ACTIONS,item.getText(), MenuIcons.MONITOR_PAUSE_ICON, "Pause monitoring", action,2);
+        pauseMonitorButton = getToolBar().addToolbarButton(EXECUTE_MONITOR_ACTIONS,item.getText(), MenuIcons.MONITOR_PAUSE_ICON, "Pause monitoring", action,3);
         pauseMonitorButton.setEnabled(false);
         return item;
     }
 
-    private JMenuItem createStopMonitoring() {
+    private JMenuItem createResetMonitoring() {
         JMenuItem item = new JMenuItem("Reset monitoring");
         item.setMnemonic(KeyEvent.VK_R);
         item.addActionListener(new AbstractAction() {
             public void actionPerformed(ActionEvent event) {
-                cleanup();
+                engine.getMonitor().reset();
             }
         });
         item.setVisible(false);
         return item;
     }
 
+    private JMenuItem createStopWorkflow() {
+        JMenuItem item = new JMenuItem("Stop running workflow",MenuIcons.STOP_ICON);
+        item.setMnemonic(KeyEvent.VK_S);
+        AbstractAction action = new AbstractAction() {
+            public void actionPerformed(ActionEvent event) {
+                cleanup();
+            }
+        };
+		item.addActionListener(action);
+        item.setEnabled(false);
+        stopWorkflowButton = getToolBar().addToolbarButton(EXECUTE_ACTIONS,item.getText(), MenuIcons.STOP_ICON, "Stop workflow", action,2);
+        stopWorkflowButton.setEnabled(item.isEnabled());
+        return item;
+    }
     
     private JMenuItem createRunJythonWorkflowItem() {
         JMenuItem menuItem = new JMenuItem("Run workflow as Jython...");
@@ -258,7 +295,7 @@ public class RunMenuItem  implements Eve
             private DynamicWorkflowRunnerWindow window;
 
             public void actionPerformed(ActionEvent event) {
-            	if (engine.getWorkflowInterpreter()!=null){
+            	if (isWorkflowRunning()){
             		if (JOptionPane.showConfirmDialog(null, "A previous workflow excution data needs to be cleared before launching another workflow. Do you wish to continue?", "Run Dynamic Workflow", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
             			cleanup();
             		}else{
@@ -335,7 +372,6 @@ public class RunMenuItem  implements Eve
      */
     public void eventReceived(Event event) {
         Type type = event.getType();
-        lastEvent=event;
         if (type.equals(Event.Type.MONITOR_CONFIGURATION_CHANGED)) {
             MonitorConfiguration configuration = this.engine.getMonitor().getConfiguration();
             boolean valid = configuration.isValid();
@@ -371,5 +407,27 @@ public class RunMenuItem  implements Eve
 		}
 	}
 
-	private Event lastEvent=null;
+	private boolean isWorkflowRunning() {
+		return engine.getWorkflowInterpreter()!=null;
+	}
+
+	private void startStopButtonStateUpdater() {
+		Thread t=new Thread(){
+			@Override
+			public void run() {
+				while(true){
+					stopWorkflowButton.setEnabled(engine.getWorkflowInterpreter()!=null);
+					if (engine.getWorkflowInterpreter()==null){
+						pauseMonitorButton.setEnabled(false);
+						resumeMonitorButton.setEnabled(false);
+					}
+					try {
+						Thread.sleep(1000);
+					} catch (InterruptedException e) {
+					}
+				}
+			}
+		};
+		t.start();
+	}
 }
\ No newline at end of file

Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/stop.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/stop.png?rev=1220903&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/stop.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream