You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2011/11/13 06:39:40 UTC
svn commit: r1201406 - 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/
java/org/apache/airavata/xbaya/menues/xbaya/ resources...
Author: lahiru
Date: Sun Nov 13 05:39:39 2011
New Revision: 1201406
URL: http://svn.apache.org/viewvc?rev=1201406&view=rev
Log:
https://issues.apache.org/jira/browse/AIRAVATA-201
Added:
incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/ToolbarButton.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/resources/images/menu/ (with props)
incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/new2.png (with props)
incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open1.png (with props)
incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open2.png (with props)
incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/pause1.png (with props)
incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/play3.png (with props)
incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/save1.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/gui/XBayaMenu.java
incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaToolBar.java
incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/run/RunMenuItem.java
incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/xbaya/XBayaMenuItem.java
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/ToolbarButton.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/ToolbarButton.java?rev=1201406&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/ToolbarButton.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/ToolbarButton.java Sun Nov 13 05:39:39 2011
@@ -0,0 +1,107 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.xbaya.gui;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
+import javax.swing.Icon;
+import javax.swing.JButton;
+
+public class ToolbarButton extends JButton implements ActionListener, MouseListener{
+ private ActionListener buttonClickListener;
+ private static final long serialVersionUID = -8266744670729158206L;
+ private boolean showCaption=false;
+ private String caption;
+ private int order;
+
+ public ToolbarButton(Icon icon, String text, String description, int order) {
+ super(icon);
+ setOrder(order);
+ setToolTipText(description);
+ setCaption(text);
+ setBorderPainted(false);
+ setFocusable(false);
+// setBorder(BorderFactory.create);
+ setRolloverEnabled(true);
+ addMouseListener(this);
+ addActionListener(this);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (getButtonClickListener()!=null){
+ getButtonClickListener().actionPerformed(e);
+ }
+ }
+
+ public ActionListener getButtonClickListener() {
+ return buttonClickListener;
+ }
+
+ public void setButtonClickListener(ActionListener buttonClickListener) {
+ this.buttonClickListener = buttonClickListener;
+ }
+
+ public boolean isShowCaption() {
+ return showCaption;
+ }
+
+ public void setShowCaption(boolean showCaption) {
+ this.showCaption = showCaption;
+ }
+
+ public String getCaption() {
+ return caption;
+ }
+
+ public void setCaption(String caption) {
+ this.caption = caption;
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ setBorderPainted(true);
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ setBorderPainted(false);
+ }
+
+ @Override
+ public void mouseClicked(MouseEvent e) {}
+ @Override
+ public void mousePressed(MouseEvent e) {}
+ @Override
+ public void mouseReleased(MouseEvent e) {}
+
+ public int getOrder() {
+ return order;
+ }
+
+ public void setOrder(int order) {
+ this.order = order;
+ }
+}
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=1201406&r1=1201405&r2=1201406&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 Sun Nov 13 05:39:39 2011
@@ -34,10 +34,9 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -218,6 +217,9 @@ public class XBayaGUI implements EventLi
* @return The toolbar
*/
public XBayaToolBar getToolbar() {
+ if (toolbar==null){
+ this.toolbar = new XBayaToolBar(this.engine);
+ }
return this.toolbar;
}
@@ -247,15 +249,6 @@ public class XBayaGUI implements EventLi
removeGraphCanvasFromIndex(index);
}
});
- graphTabbedPane.addPropertyChangeListener(new PropertyChangeListener() {
-
- @Override
- public void propertyChange(PropertyChangeEvent event) {
- System.out.print(event.getPropertyName());
- System.out.println("=>"+engine.getGUI().getGraphCanvases().size());
- }
-
- });
graphTabbedPane.addContainerListener(new ContainerListener(){
@Override
@@ -314,6 +307,13 @@ public class XBayaGUI implements EventLi
case WORKFLOW_CHANGED:
updateTabTitle(graphCanvas,graphCanvas.getWorkflow());
setFrameName(workflow.getName());
+ for (ChangeListener listener:tabChangeListeners){
+ try{
+ listener.stateChanged(null);
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ }
}
}
private void updateTabTitle(
@@ -361,7 +361,19 @@ public class XBayaGUI implements EventLi
setFocus(graphCanvas);
}
}
-
+
+ private List<ChangeListener> tabChangeListeners=new ArrayList<ChangeListener>();
+
+ public void addWorkflowTabChangeListener(ChangeListener listener){
+ graphTabbedPane.addChangeListener(listener);
+ tabChangeListeners.add(listener);
+
+ }
+
+ public void removeWorkflowTabChangeListener(ChangeListener listener){
+ graphTabbedPane.removeChangeListener(listener);
+ tabChangeListeners.remove(listener);
+ }
/**
* Closes the selected graph canvas.
*
@@ -470,7 +482,7 @@ public class XBayaGUI implements EventLi
private void init() {
createFrame();
- this.menu = new XBayaMenu(this.engine);
+ this.menu = new XBayaMenu(this.engine, getToolbar());
this.frame.setJMenuBar(this.menu.getSwingComponent());
initPane();
@@ -490,8 +502,7 @@ public class XBayaGUI implements EventLi
// Error window
this.errorWindow = new ErrorWindow(contentPane);
- this.toolbar = new XBayaToolBar(this.engine);
- contentPane.add(this.toolbar.getSwingComponent(), BorderLayout.PAGE_START);
+ contentPane.add(getToolbar().getSwingComponent(), BorderLayout.PAGE_START);
this.portViewer = new PortViewer();
this.componentViewer = new ComponentViewer();
@@ -778,11 +789,11 @@ public class XBayaGUI implements EventLi
}
public void addDynamicExecutionToolsToToolbar() {
- this.toolbar.addDynamicExecutionTools();
+ getToolbar().addDynamicExecutionTools();
}
public void removeDynamicExecutionToolsFromToolbar() {
- this.toolbar.removeDynamicExecutionTools();
+ getToolbar().removeDynamicExecutionTools();
}
/**
Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaMenu.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaMenu.java?rev=1201406&r1=1201405&r2=1201406&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaMenu.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaMenu.java Sun Nov 13 05:39:39 2011
@@ -86,33 +86,50 @@ public class XBayaMenu implements XBayaC
private ToolsMenuItem toolsMenuItem;
+ private XBayaGUI gui;
+
+ private XBayaToolBar toolBar;
+
/**
* Constructs an XwfMenu.
*
* @param engine
*/
- public XBayaMenu(XBayaEngine engine) {
- this.engine = engine;
-
- this.fileMenu = new FileMenu(this.engine);
-
- xBayaMenuItem = new XBayaMenuItem(engine);
- editMenuItem = new EditMenuItem(engine);
- viewMenuItem = new ViewMenuItem(engine);
- runMenuItem = new RunMenuItem(engine);
- registryMenuItem = new RegistryMenuItem(engine);
- toolsMenuItem = new ToolsMenuItem(engine);
-
- this.workflowMenu = new WorkflowMenu(this.engine);
- this.experimentMenu = new ExperimentMenu(this.engine);
- this.amazonEC2Menu = new AmazonEC2Menu(this.engine);
- this.componentMenu = new ComponentMenu(this.engine);
- this.monitorMenu = new MonitorMenu(this.engine);
- // this.myProxyMenu = new MyProxyMenu(this.engine);
- this.registerApplications = new RegisterApplicationsMenu(this.engine);
-
- createMenuBar();
+ public XBayaMenu(XBayaEngine engine, XBayaToolBar toolBar) {
+ this.setEngine(engine);
+ setToolBar(toolBar);
+ initMenu();
+// SwingUtilities.invokeLater(new Runnable() {
+// public void run() {
+// try {
+// initMenu();
+// } catch (Exception exception) {
+// exception.printStackTrace();
+// }
+// }
+// });
}
+
+ private void initMenu() {
+ fileMenu = new FileMenu(getEngine());
+
+ xBayaMenuItem = new XBayaMenuItem(getEngine(),getToolBar());
+ editMenuItem = new EditMenuItem(getEngine());
+ viewMenuItem = new ViewMenuItem(getEngine());
+ runMenuItem = new RunMenuItem(getEngine(), getToolBar());
+ registryMenuItem = new RegistryMenuItem(getEngine());
+ toolsMenuItem = new ToolsMenuItem(getEngine());
+
+ workflowMenu = new WorkflowMenu(getEngine());
+ experimentMenu = new ExperimentMenu(getEngine());
+ amazonEC2Menu = new AmazonEC2Menu(getEngine());
+ componentMenu = new ComponentMenu(getEngine());
+ monitorMenu = new MonitorMenu(getEngine());
+ // this.myProxyMenu = new MyProxyMenu(this.engine);
+ registerApplications = new RegisterApplicationsMenu(getEngine());
+
+ createMenuBar();
+ }
/**
* Returns the menu bar.
@@ -164,7 +181,7 @@ public class XBayaMenu implements XBayaC
public void actionPerformed(ActionEvent event) {
if (this.window == null) {
- this.window = new AboutWindow(XBayaMenu.this.engine);
+ this.window = new AboutWindow(XBayaMenu.this.getEngine());
}
this.window.show();
}
@@ -174,4 +191,20 @@ public class XBayaMenu implements XBayaC
return helpMenu;
}
+ public XBayaEngine getEngine() {
+ return engine;
+ }
+
+ public void setEngine(XBayaEngine engine) {
+ this.engine = engine;
+ }
+
+ public XBayaToolBar getToolBar() {
+ return toolBar;
+ }
+
+ public void setToolBar(XBayaToolBar toolBar) {
+ this.toolBar = toolBar;
+ }
+
}
\ No newline at end of file
Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaToolBar.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaToolBar.java?rev=1201406&r1=1201405&r2=1201406&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaToolBar.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaToolBar.java Sun Nov 13 05:39:39 2011
@@ -22,9 +22,16 @@
package org.apache.airavata.xbaya.gui;
import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
+import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
@@ -48,6 +55,8 @@ public class XBayaToolBar implements XBa
private JButton step;
private JButton stop;
+
+ private Map<String,List<ToolbarButton>> toolbarButtons = new HashMap<String,List<ToolbarButton>>();
/**
* IMAGES_STOP_JPEG
@@ -225,12 +234,50 @@ public class XBayaToolBar implements XBa
};
this.stop.setAction(stopAction);
- this.toolbar.add(addNodeButton);
- this.toolbar.add(removeNodeButton);
- this.toolbar.addSeparator();
- this.toolbar.add(connectEdgeButton);
+// this.toolbar.add(addNodeButton);
+// this.toolbar.add(removeNodeButton);
+// this.toolbar.addSeparator();
+// this.toolbar.add(connectEdgeButton);
+
+// addToolbarButton("test", SwingUtil.createImageIcon("test.png"), "my description", stopAction);
}
+ public ToolbarButton addToolbarButton(String group, String caption, Icon icon, String description, ActionListener onClick, int order){
+ ToolbarButton toolbarButton = new ToolbarButton(icon, caption, description, order);
+ toolbarButton.setButtonClickListener(onClick);
+ getToolBarButtonList(group).add(toolbarButton);
+ rearrangeToolbarButtons();
+ return toolbarButton;
+ }
+
+ private void sortButtons(List<ToolbarButton> buttons){
+ ToolbarButton[] buttonList=buttons.toArray(new ToolbarButton[]{});
+ ToolbarButton temp;
+ for (int i=0;i<buttonList.length-1;i++) {
+ for(int j=i+1;j<buttonList.length;j++){
+ if (buttonList[i].getOrder()!=-1){
+ if (buttonList[i].getOrder()>buttonList[j].getOrder()){
+ temp=buttonList[i];
+ buttonList[i]=buttonList[j];
+ buttonList[j]=temp;
+ }
+ }
+ }
+ }
+ buttons.clear();
+ buttons.addAll(Arrays.asList(buttonList));
+ }
+ private void rearrangeToolbarButtons(){
+ toolbar.removeAll();
+ for (String groupId : toolbarButtons.keySet()) {
+ sortButtons(toolbarButtons.get(groupId));
+ for (ToolbarButton button : toolbarButtons.get(groupId)) {
+ toolbar.add(button);
+ }
+ toolbar.addSeparator();
+ }
+ }
+
public void addDynamicExecutionTools() {
this.toolbar.add(this.play);
this.toolbar.add(this.step);
@@ -272,4 +319,10 @@ public class XBayaToolBar implements XBa
return this.stopAction;
}
+ private List<ToolbarButton> getToolBarButtonList(String group){
+ if (!toolbarButtons.containsKey(group)){
+ toolbarButtons.put(group, new ArrayList<ToolbarButton>());
+ }
+ return toolbarButtons.get(group);
+ }
}
\ No newline at end of file
Added: 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=1201406&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/MenuIcons.java Sun Nov 13 05:39:39 2011
@@ -0,0 +1,36 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.xbaya.menues;
+
+import javax.swing.ImageIcon;
+
+import org.apache.airavata.common.utils.SwingUtil;
+
+public class MenuIcons {
+ public static final ImageIcon OPEN_ICON = SwingUtil.createImageIcon("menu/open1.png");
+ public static final ImageIcon SAVE_ICON = SwingUtil.createImageIcon("menu/save1.png");
+ public static final ImageIcon NEW_ICON = SwingUtil.createImageIcon("menu/new2.png");
+
+ public static final ImageIcon RUN_ICON = SwingUtil.createImageIcon("menu/play3.png");
+ public static final ImageIcon MONITOR_PAUSE_ICON = SwingUtil.createImageIcon("menu/pause1.png");
+ public static final ImageIcon MONITOR_RESUME_ICON = null;
+}
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=1201406&r1=1201405&r2=1201406&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 Sun Nov 13 05:39:39 2011
@@ -36,7 +36,9 @@ import org.apache.airavata.xbaya.experim
import org.apache.airavata.xbaya.graph.dynamic.gui.DynamicWorkflowRunnerWindow;
import org.apache.airavata.xbaya.gridchem.gui.GridChemRunnerWindow;
import org.apache.airavata.xbaya.gui.ErrorMessages;
+import org.apache.airavata.xbaya.gui.XBayaToolBar;
import org.apache.airavata.xbaya.jython.gui.JythonRunnerWindow;
+import org.apache.airavata.xbaya.menues.MenuIcons;
import org.apache.airavata.xbaya.monitor.Monitor;
import org.apache.airavata.xbaya.monitor.MonitorConfiguration;
import org.apache.airavata.xbaya.monitor.gui.MonitorConfigurationWindow;
@@ -70,13 +72,18 @@ public class RunMenuItem implements Eve
private static final Logger logger = LoggerFactory.getLogger(RunMenuItem.class);
+ private static final String EXECUTE_ACTIONS = "run_actions";
+
+ private XBayaToolBar toolBar;
+
/**
* Constructs a WorkflowMenu.
*
* @param engine
*/
- public RunMenuItem(XBayaEngine engine) {
+ public RunMenuItem(XBayaEngine engine, XBayaToolBar toolBar) {
this.engine = engine;
+ setToolBar(toolBar);
createWorkflowMenu();
Monitor monitor = this.engine.getMonitor();
monitor.addEventListener(this);
@@ -141,9 +148,9 @@ public class RunMenuItem implements Eve
}
private JMenuItem createResumeMonitoring() {
- JMenuItem item = new JMenuItem("Resume monitoring");
+ JMenuItem item = new JMenuItem("Resume monitoring",MenuIcons.MONITOR_RESUME_ICON);
item.setMnemonic(KeyEvent.VK_S);
- item.addActionListener(new AbstractAction() {
+ AbstractAction action = new AbstractAction() {
private MonitorStarter starter;
public void actionPerformed(ActionEvent event) {
@@ -152,16 +159,18 @@ public class RunMenuItem implements Eve
}
this.starter.start();
}
- });
+ };
+ item.addActionListener(action);
boolean valid = this.engine.getMonitor().getConfiguration().isValid();
item.setVisible(valid);
+ getToolBar().addToolbarButton(EXECUTE_ACTIONS,item.getText(), MenuIcons.MONITOR_RESUME_ICON, "Resume monitoring", action,3);
return item;
}
private JMenuItem createPauseMonitoring() {
- JMenuItem item = new JMenuItem("Pause monitoring");
+ JMenuItem item = new JMenuItem("Pause monitoring", MenuIcons.MONITOR_PAUSE_ICON);
item.setMnemonic(KeyEvent.VK_T);
- item.addActionListener(new AbstractAction() {
+ AbstractAction action = new AbstractAction() {
public void actionPerformed(ActionEvent event) {
try {
engine.getMonitor().asynchronousStop();
@@ -171,8 +180,10 @@ public class RunMenuItem implements Eve
engine.getErrorWindow().error(ErrorMessages.UNEXPECTED_ERROR, e);
}
}
- });
+ };
+ item.addActionListener(action);
item.setVisible(false);
+ getToolBar().addToolbarButton(EXECUTE_ACTIONS,item.getText(), MenuIcons.MONITOR_PAUSE_ICON, "Pause monitoring", action,2);
return item;
}
@@ -214,7 +225,7 @@ public class RunMenuItem implements Eve
private JMenuItem createLaunchDynamicWorkflowItem() {
JMenuItem menuItem = new JMenuItem("Run workflow...");
menuItem.setMnemonic(KeyEvent.VK_D);
- menuItem.addActionListener(new AbstractAction() {
+ AbstractAction action = new AbstractAction() {
private DynamicWorkflowRunnerWindow window;
public void actionPerformed(ActionEvent event) {
@@ -223,7 +234,9 @@ public class RunMenuItem implements Eve
}
this.window.show();
}
- });
+ };
+ menuItem.addActionListener(action);
+ getToolBar().addToolbarButton(EXECUTE_ACTIONS,menuItem.getText(), MenuIcons.RUN_ICON, "Run workflow", action,1);
return menuItem;
}
@@ -295,4 +308,12 @@ public class RunMenuItem implements Eve
resetMonitoringItem.setVisible(false);
}
}
+
+ public XBayaToolBar getToolBar() {
+ return toolBar;
+ }
+
+ public void setToolBar(XBayaToolBar toolBar) {
+ this.toolBar = toolBar;
+ }
}
\ No newline at end of file
Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/xbaya/XBayaMenuItem.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/xbaya/XBayaMenuItem.java?rev=1201406&r1=1201405&r2=1201406&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/xbaya/XBayaMenuItem.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/menues/xbaya/XBayaMenuItem.java Sun Nov 13 05:39:39 2011
@@ -28,6 +28,9 @@ import javax.swing.AbstractAction;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
@@ -36,10 +39,12 @@ import org.apache.airavata.xbaya.XBayaEx
import org.apache.airavata.xbaya.appwrapper.ApplicationDescriptionDialog;
import org.apache.airavata.xbaya.appwrapper.HostDescriptionDialog;
import org.apache.airavata.xbaya.appwrapper.ServiceDescriptionDialog;
-import org.apache.airavata.xbaya.component.gui.ComponentMenu;
import org.apache.airavata.xbaya.component.gui.URLRegistryWindow;
import org.apache.airavata.xbaya.experiment.gui.RegistryLoaderWindow;
import org.apache.airavata.xbaya.graph.gui.GraphCanvas;
+import org.apache.airavata.xbaya.gui.ToolbarButton;
+import org.apache.airavata.xbaya.gui.XBayaToolBar;
+import org.apache.airavata.xbaya.menues.MenuIcons;
import org.apache.airavata.xbaya.ode.ODEDeploymentDescriptor;
import org.apache.airavata.xbaya.registry.RegistryAccesser;
import org.apache.airavata.xbaya.util.XBayaUtil;
@@ -110,14 +115,21 @@ public class XBayaMenuItem {
private RegistryAccesser registryAccesser;
+ private XBayaToolBar toolBar;
+
+ private ToolbarButton saveToolBarButton;
+
+ private static final String FILE_ACTIONS="file";
+
/**
* Constructs a FileMenu.
*
* @param engine
*
*/
- public XBayaMenuItem(XBayaEngine engine) {
+ public XBayaMenuItem(XBayaEngine engine, XBayaToolBar toolBar) {
this.engine = engine;
+ this.toolBar=toolBar;
this.registryAccesser = new RegistryAccesser(engine);
this.graphFiler = new WorkflowFiler(engine);
@@ -218,7 +230,7 @@ public class XBayaMenuItem {
public void menuSelected(MenuEvent e) {
GraphCanvas graphCanvas = engine.getGUI().getGraphCanvas();
saveAsWorkflowItem.setEnabled(graphCanvas!=null && graphCanvas.getWorkflowFile()!=null);
- saveWorkflowItem.setEnabled(graphCanvas!=null && (graphCanvas.getWorkflowFile()==null || graphCanvas.isWorkflowChanged()));
+ saveWorkflowItem.setEnabled(isSaveShouldBeActive());
saveAllWorkflowItem.setEnabled(engine.getGUI().getGraphCanvases().size()>0);
}
@Override
@@ -337,13 +349,16 @@ public class XBayaMenuItem {
}
private JMenuItem createNewWorkflowTabMenuItem() {
- JMenuItem menuItem = new JMenuItem("Workflow");
+
+ JMenuItem menuItem = new JMenuItem("Workflow", MenuIcons.NEW_ICON);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
- menuItem.addActionListener(new AbstractAction() {
+ AbstractAction action = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
engine.getGUI().newGraphCanvas(true, true);
}
- });
+ };
+ menuItem.addActionListener(action);
+ getToolBar().addToolbarButton(FILE_ACTIONS,menuItem.getText(), MenuIcons.NEW_ICON, "Create new workflow", action,1);
return menuItem;
}
@@ -385,25 +400,45 @@ public class XBayaMenuItem {
}
private void createOpenWorkflowMenuItem() {
- this.openWorkflowItem = new JMenuItem("Open...");
+ this.openWorkflowItem = new JMenuItem("Open...", MenuIcons.OPEN_ICON);
this.openWorkflowItem.setMnemonic(KeyEvent.VK_O);
openWorkflowItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
- this.openWorkflowItem.addActionListener(new AbstractAction() {
+ AbstractAction action = new AbstractAction() {
public void actionPerformed(ActionEvent event) {
XBayaMenuItem.this.graphFiler.openWorkflow();
}
- });
+ };
+ this.openWorkflowItem.addActionListener(action);
+ getToolBar().addToolbarButton(FILE_ACTIONS,openWorkflowItem.getText(), MenuIcons.OPEN_ICON, "Open workflow", action,2);
}
private void createSaveWorkflowItem() {
- saveWorkflowItem = new JMenuItem("Save");
+ saveWorkflowItem = new JMenuItem("Save", MenuIcons.SAVE_ICON);
saveWorkflowItem.setMnemonic(KeyEvent.VK_S);
saveWorkflowItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
- saveWorkflowItem.addActionListener(new AbstractAction() {
+ AbstractAction action = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
XBayaMenuItem.this.graphFiler.saveWorkflow();
+ saveToolBarButton.setEnabled(isSaveShouldBeActive());
+ }
+ };
+ saveWorkflowItem.addActionListener(action);
+ saveToolBarButton = getToolBar().addToolbarButton(FILE_ACTIONS,saveWorkflowItem.getText(), MenuIcons.SAVE_ICON, "Save workflow", action,3);
+ saveToolBarButton.setEnabled(false);
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ while(engine.getGUI()==null){
+ Thread.yield();
+ }
+ engine.getGUI().addWorkflowTabChangeListener(new ChangeListener(){
+ @Override
+ public void stateChanged(ChangeEvent event) {
+ saveToolBarButton.setEnabled(isSaveShouldBeActive());
+ }
+ });
}
});
+
}
private void createSaveAsWorkflowItem() {
@@ -475,16 +510,6 @@ public class XBayaMenuItem {
});
}
- // private void createExportScuflScriptItem(){
- // this.exportScuflItem = new JMenuItem("Export Taverna Scufl");
- // this.exportScuflItem.setMnemonic(KeyEvent.VK_T);
- // this.exportScuflItem.addActionListener(new AbstractAction() {
- // public void actionPerformed(ActionEvent e) {
- // FileMenu.this.scuflFiler.exportScuflScript();
- // }
- // });
- // }
-
private void createExportODEScriptsItem() {
this.exportODEScriptsItem = new JMenuItem("ODE Scripts...");
this.exportODEScriptsItem.addActionListener(new AbstractAction() {
@@ -512,4 +537,17 @@ public class XBayaMenuItem {
});
return menuItem;
}
+
+ public XBayaToolBar getToolBar() {
+ return toolBar;
+ }
+
+ public void setToolBar(XBayaToolBar toolBar) {
+ this.toolBar = toolBar;
+ }
+
+ private boolean isSaveShouldBeActive() {
+ GraphCanvas graphCanvas = engine.getGUI().getGraphCanvas();
+ return graphCanvas !=null && (graphCanvas.getWorkflowFile()==null || graphCanvas.isWorkflowChanged());
+ }
}
\ No newline at end of file
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/
------------------------------------------------------------------------------
bugtraq:number = true
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/new2.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/new2.png?rev=1201406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/new2.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open1.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open1.png?rev=1201406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open1.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open2.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open2.png?rev=1201406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/open2.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/pause1.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/pause1.png?rev=1201406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/pause1.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/play3.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/play3.png?rev=1201406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/play3.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/save1.png
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/save1.png?rev=1201406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/airavata/trunk/modules/xbaya-gui/src/main/resources/images/menu/save1.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream