Repository: airavata
Updated Branches:
  refs/heads/master 4a79ee6ce -> b30577739


Fixed - Opening new workflow issues


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/b3057773
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/b3057773
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/b3057773

Branch: refs/heads/master
Commit: b305777397b0b75fa78ef8c5ba712528d5afbbad
Parents: 4a79ee6
Author: shamrath <shameerai...@gmail.com>
Authored: Tue Nov 25 18:20:26 2014 -0500
Committer: shamrath <shameerai...@gmail.com>
Committed: Tue Nov 25 18:20:26 2014 -0500

----------------------------------------------------------------------
 .../org/apache/airavata/xbaya/ui/XBayaGUI.java  | 164 ++++++++++---------
 .../workflow/WorkflowPropertyWindow.java        |  91 +++-------
 .../airavata/xbaya/ui/graph/GraphCanvas.java    |  14 +-
 3 files changed, 121 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b3057773/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/XBayaGUI.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/XBayaGUI.java 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/XBayaGUI.java
index ac55462..1e44243 100644
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/XBayaGUI.java
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/XBayaGUI.java
@@ -52,6 +52,7 @@ import org.apache.airavata.common.utils.SwingUtil;
 import org.apache.airavata.workflow.model.component.Component;
 import org.apache.airavata.workflow.model.exceptions.WorkflowException;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
+import org.apache.airavata.workflow.model.graph.Graph;
 import org.apache.airavata.workflow.model.graph.Node;
 import org.apache.airavata.workflow.model.graph.Port;
 import org.apache.airavata.workflow.model.wf.Workflow;
@@ -256,55 +257,67 @@ public class XBayaGUI implements EventListener, 
XBayaExecutionModeListener {
     public GraphCanvas newGraphCanvas(boolean focus) {
        return newGraphCanvas(focus, false);
     }
-    
+
     /**
      * Creates a new graph tab.
-     * 
+     *
      * This method needs to be called by Swing event thread.
-     * 
+     *
      * @param focus
-     * 
+     *
      * @return The graph canvas created
      */
-    public GraphCanvas newGraphCanvas(boolean focus, boolean withID) {
-        GraphCanvas newGraphCanvas = new GraphCanvas(this.engine);
+    public GraphCanvas newGraphCanvas(boolean focus, boolean newFreshWorkflow) 
{
+        if (newFreshWorkflow) {
+            getWorkflowPropertyWindow().show();
+            return null;
+        } else {
+            GraphCanvas graphCanvas = getNewGraphCanvas(null, null);
+            if (focus) {
+                setFocus(graphCanvas);
+            }
+            return graphCanvas;
+        }
+    }
+
+    public GraphCanvas getNewGraphCanvas(String wfName, String wfDescription) {
+        GraphCanvas newGraphCanvas = new GraphCanvas(this.engine, wfName);
+        newGraphCanvas.setDescription(wfDescription);
         this.graphCanvases.add(newGraphCanvas);
         this.graphTabbedPane.addTab(newGraphCanvas.getWorkflow().getName(), 
newGraphCanvas.getSwingComponent());
-        final int index = graphTabbedPane.getTabCount()-1;
-               TabLabelButton tabLabelButton = new 
TabLabelButton(graphTabbedPane,"Close this workflow");
-               graphTabbedPane.setTabComponentAt(index, tabLabelButton); 
-               tabLabelButton.setCloseButtonListener(new ActionListener(){
-                       @Override
-                       public void actionPerformed(ActionEvent e) {
-                               removeGraphCanvasFromIndex(index);              
                
-                       }
-               });
-        graphTabbedPane.addContainerListener(new ContainerListener(){
+        final int index = graphTabbedPane.getTabCount() - 1;
+        TabLabelButton tabLabelButton = new TabLabelButton(graphTabbedPane, 
"Close this workflow");
+        graphTabbedPane.setTabComponentAt(index, tabLabelButton);
+        tabLabelButton.setCloseButtonListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                removeGraphCanvasFromIndex(index);
+            }
+        });
+        graphTabbedPane.addContainerListener(new ContainerListener() {
 
-                       @Override
-                       public void componentAdded(ContainerEvent event) {
-                       }
+            @Override
+            public void componentAdded(ContainerEvent event) {
+            }
+
+            @Override
+            public void componentRemoved(ContainerEvent event) {
+                List<GraphCanvas> graphCanvases = 
engine.getGUI().getGraphCanvases();
+                for (GraphCanvas graphCanvas : graphCanvases) {
+                    if (graphCanvas.getSwingComponent() == 
event.getComponent()) {
+                        if (graphCanvas.isWorkflowChanged()) {
+                            setFocus(graphCanvas);
+                            if (JOptionPane.showConfirmDialog(null, "The 
workflow '" + graphCanvas.getWorkflow().getName() + "' has been modified. Save 
changes?", "Save Workflow", JOptionPane.YES_NO_OPTION) == 
JOptionPane.YES_OPTION) {
+                                graphFiler.saveWorkflow(graphCanvas);
+                            }
+                        }
+                        break;
+                    }
+                }
+            }
 
-                       @Override
-                       public void componentRemoved(ContainerEvent event) {
-                               List<GraphCanvas> graphCanvases = 
engine.getGUI().getGraphCanvases();
-                               for (GraphCanvas graphCanvas : graphCanvases) {
-                                       if 
(graphCanvas.getSwingComponent()==event.getComponent()){
-                                               if 
(graphCanvas.isWorkflowChanged()){
-                                                       setFocus(graphCanvas);
-                                                       if 
(JOptionPane.showConfirmDialog(null, "The workflow 
'"+graphCanvas.getWorkflow().getName()+"' has been modified. Save changes?", 
"Save Workflow", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
-                                                               
graphFiler.saveWorkflow(graphCanvas);
-                                                       }
-                                               }
-                                               break;
-                                       }
-                               }
-                       }
-               
         });
-        if (focus) {
-            setFocus(newGraphCanvas);
-        }
+
         newGraphCanvas.addGraphCanvasListener(this.componentViewer);
         newGraphCanvas.addGraphCanvasListener(this.portViewer);
         newGraphCanvas.addGraphCanvasListener(new GraphCanvasListener() {
@@ -314,55 +327,52 @@ public class XBayaGUI implements EventListener, 
XBayaExecutionModeListener {
                 final GraphCanvas graphCanvas = event.getGraphCanvas();
                 final Workflow workflow = event.getWorkflow();
                 switch (type) {
-                case GRAPH_LOADED:
-                case NAME_CHANGED:
-                    SwingUtilities.invokeLater(new Runnable() {
-                        public void run() {
-                            String name = workflow.getName();
-
-                            // Change the name of the tab.
-                            updateTabTitle(graphCanvas, workflow);
-
-                            // Change the name of the frame.
-                            setFrameName(name);
+                    case GRAPH_LOADED:
+                    case NAME_CHANGED:
+                        SwingUtilities.invokeLater(new Runnable() {
+                            public void run() {
+                                String name = workflow.getName();
+
+                                // Change the name of the tab.
+                                updateTabTitle(graphCanvas, workflow);
+
+                                // Change the name of the frame.
+                                setFrameName(name);
+                            }
+                        });
+                        break;
+                    case NODE_SELECTED:
+                    case INPUT_PORT_SELECTED:
+                    case OUTPUT_PORT_SELECTED:
+                        // Do nothing
+                    case WORKFLOW_CHANGED:
+                        updateTabTitle(graphCanvas, graphCanvas.getWorkflow());
+                        setFrameName(workflow.getName());
+                        for (ChangeListener listener : tabChangeListeners) {
+                            try {
+                                listener.stateChanged(null);
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
                         }
-
-                                               
-                    });
-                    break;
-                case NODE_SELECTED:
-                case INPUT_PORT_SELECTED:
-                case OUTPUT_PORT_SELECTED:
-                    // Do nothing
-                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(
-                                       final GraphCanvas graphCanvas,
-                                       final Workflow workflow) {
-                               int index = 
XBayaGUI.this.graphTabbedPane.indexOfComponent(graphCanvas.getSwingComponent());
+                    final GraphCanvas graphCanvas,
+                    final Workflow workflow) {
+                int index = 
XBayaGUI.this.graphTabbedPane.indexOfComponent(graphCanvas.getSwingComponent());
                 String newTitle = workflow.getName();
-                if (graphCanvas.isWorkflowChanged()){
-                       newTitle="*"+newTitle;
+                if (graphCanvas.isWorkflowChanged()) {
+                    newTitle = "*" + newTitle;
                 }
-                               XBayaGUI.this.graphTabbedPane.setTitleAt(index, 
newTitle);
-                       }
+                XBayaGUI.this.graphTabbedPane.setTitleAt(index, newTitle);
+            }
         });
-        if (withID){
-               getWorkflowPropertyWindow().show();
-        }
         return newGraphCanvas;
     }
 
+
     /**
      * @param graphCanvas
      */

http://git-wip-us.apache.org/repos/asf/airavata/blob/b3057773/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/workflow/WorkflowPropertyWindow.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/workflow/WorkflowPropertyWindow.java
 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/workflow/WorkflowPropertyWindow.java
index aad4141..d4bd884 100644
--- 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/workflow/WorkflowPropertyWindow.java
+++ 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/workflow/WorkflowPropertyWindow.java
@@ -23,6 +23,7 @@ package org.apache.airavata.xbaya.ui.dialogs.workflow;
 
 import java.awt.event.ActionEvent;
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.swing.AbstractAction;
@@ -80,38 +81,32 @@ public class WorkflowPropertyWindow {
      * Shows the dialog.
      */
     public void show() {
-        this.workflow = this.xbayaGUI.getWorkflow();
+//        this.workflow = this.xbayaGUI.getWorkflow();
 
-        String name = this.workflow.getName();
+//        String name = this.workflow.getName();
+        String name = generateNewWorkflowName();
         this.nameTextField.setText(name);
 
-        String description = this.workflow.getDescription();
+        String description = "Airavata workflow";
         this.descriptionTextArea.setText(description);
-
-        URI templateID = this.workflow.getUniqueWorkflowName();
-        if (templateID == null) {
-            this.templateIDField.setText("");
-        } else {
-            this.templateIDField.setText(templateID.toString());
+        this.dialog.show();
+    }
+    private String generateNewWorkflowName() {
+        String baseName="Workflow";
+        List<String> existingNames=new ArrayList<String>();
+        if (this.xbayaGUI != null) {
+            List<GraphCanvas> graphCanvases = this.xbayaGUI.getGraphCanvases();
+            for (GraphCanvas graphCanvas : graphCanvases) {
+                existingNames.add(graphCanvas.getWorkflow().getName());
+            }
         }
-
-        URI instanceID = this.workflow.getGPELInstanceID();
-        if (instanceID == null) {
-            this.instanceIDField.setText("");
-        } else {
-            this.instanceIDField.setText(instanceID.toString());
+        int i=1;
+        String newName=baseName+i;
+        while(existingNames.contains(newName)){
+            i++;
+            newName=baseName+i;
         }
-
-//        XmlElement metadata = this.workflow.getMetadata();
-//        String metadataText;
-//        if (metadata == null) {
-//            metadataText = WSConstants.EMPTY_APPINFO;
-//        } else {
-//            metadataText = XMLUtil.xmlElementToString(metadata);
-//        }
-//        this.metadataTextArea.setText(metadataText);
-
-        this.dialog.show();
+        return newName;
     }
 
     /**
@@ -138,29 +133,7 @@ public class WorkflowPropertyWindow {
         String name = this.nameTextField.getText();
         if (name != null && 
name.equals(StringUtil.convertToJavaIdentifier(name)) && 
(!isWorkflowNameAlreadyPresent(name))) {
             String description = this.descriptionTextArea.getText();
-//            String metadataText = this.metadataTextArea.getText();
-
-//            XmlElement metadata;
-//            if (metadataText.length() == 0) {
-//                metadata = null;
-//            } else {
-//                try {
-////                    metadata = XMLUtil.stringToXmlElement(metadataText);
-//                    JsonObject metadataObject = new JsonObject();
-//                    JsonObject appInfoObject = new JsonObject();
-//                    appInfoObject.add("data", 
JSONUtil.stringToJSONObject(metadataText));
-//
-//                    metadata = XMLUtil.stringToXmlElement(metadataText);
-//                } catch (RuntimeException e) {
-//                    String warning = "The metadata is ill-formed.";
-//                    this.xbayaGUI.getErrorWindow().error(warning, e);
-//                    return;
-//                }
-//            }
-
-            GraphCanvas graphCanvas = this.xbayaGUI.getGraphCanvas();
-            graphCanvas.setNameAndDescription(name, description);
-//            graphCanvas.getWorkflow().setMetadata(metadata);
+            this.xbayaGUI.getNewGraphCanvas(name, description);
             hide();
         } else {
             
this.nameTextField.setText(StringUtil.convertToJavaIdentifier(name));
@@ -172,33 +145,15 @@ public class WorkflowPropertyWindow {
     private void initGui() {
         this.nameTextField = new XBayaTextField();
         XBayaLabel nameLabel = new XBayaLabel("Name", this.nameTextField);
-
-        this.templateIDField = new XBayaTextField();
-        this.templateIDField.setEditable(false);
-        XBayaLabel templateIDLabel = new XBayaLabel("Template ID", 
this.templateIDField);
-
-        this.instanceIDField = new XBayaTextField();
-        this.instanceIDField.setEditable(false);
-        XBayaLabel instanceIDLabel = new XBayaLabel("Instance ID", 
this.instanceIDField);
-
         this.descriptionTextArea = new XBayaTextArea();
         XBayaLabel descriptionLabel = new XBayaLabel("Description", 
this.descriptionTextArea);
 
-//        this.metadataTextArea = new XBayaTextArea();
-//        XBayaLabel metadataLabel = new XBayaLabel("Metadata", 
this.metadataTextArea);
-
         GridPanel mainPanel = new GridPanel();
         mainPanel.add(nameLabel);
         mainPanel.add(this.nameTextField);
-        mainPanel.add(templateIDLabel);
-        mainPanel.add(this.templateIDField);
-        mainPanel.add(instanceIDLabel);
-        mainPanel.add(this.instanceIDField);
         mainPanel.add(descriptionLabel);
         mainPanel.add(this.descriptionTextArea);
-//        mainPanel.add(metadataLabel);
-//        mainPanel.add(this.metadataTextArea);
-        mainPanel.layout(new double[] { 0, 0, 0, 0.5}, new double[] { 0, 1 });
+        mainPanel.layout(new double[] { 0, 0.5}, new double[] { 0, 1 });
 
         this.okButton = new JButton("OK");
         this.okButton.addActionListener(new AbstractAction() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b3057773/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/graph/GraphCanvas.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/graph/GraphCanvas.java
 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/graph/GraphCanvas.java
index fa7b8eb..517e0f7 100644
--- 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/graph/GraphCanvas.java
+++ 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/graph/GraphCanvas.java
@@ -163,17 +163,22 @@ public class GraphCanvas implements 
XBayaExecutionModeListener{
      *            The XBayaEngine
      */
     public GraphCanvas(XBayaEngine engine) {
+        this(engine, null);
+    }
 
+    public GraphCanvas(XBayaEngine engine, String workflowName) {
         this.engine = engine;
-
         this.listeners = new LinkedList<GraphCanvasListener>();
-
         // To avoid null check. Do not call newWorkflow() here because 
something
         // are not initialized yet at this point.
         this.workflow = new Workflow();
         this.graph = this.workflow.getGraph();
         engine.getConfiguration().registerExecutionModeChangeListener(this);
-        graph.setName(generateNewWorkflowName());
+        if (workflowName == null) {
+            graph.setName(generateNewWorkflowName());
+        } else {
+            graph.setName(workflowName);
+        }
         initGUI();
         executionModeChanged(engine.getConfiguration());
     }
@@ -263,6 +268,9 @@ public class GraphCanvas implements 
XBayaExecutionModeListener{
         notifyListeners(new 
GraphCanvasEvent(GraphCanvasEvent.GraphCanvasEventType.NAME_CHANGED, this, 
this.workflow));
     }
 
+    public void setDescription(String description) {
+        this.workflow.setDescription(description);
+    }
     /**
      * Creates a new Node from a specified Component and adds it.
      * 

Reply via email to