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 2014/04/14 20:31:14 UTC

[72/90] [abbrv] AIRAVATA-1124

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/AiravataTreeNodeFactory.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/AiravataTreeNodeFactory.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/AiravataTreeNodeFactory.java
new file mode 100644
index 0000000..f62f538
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/AiravataTreeNodeFactory.java
@@ -0,0 +1,112 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.xbaya.XBayaEngine;
+import org.apache.airavata.xbaya.model.registrybrowser.AiravataConfigurations;
+import org.apache.airavata.xbaya.model.registrybrowser.ApplicationDeploymentDescriptionWrap;
+import org.apache.airavata.xbaya.model.registrybrowser.ApplicationDeploymentDescriptions;
+import org.apache.airavata.xbaya.model.registrybrowser.EventingServiceURL;
+import org.apache.airavata.xbaya.model.registrybrowser.EventingServiceURLs;
+import org.apache.airavata.xbaya.model.registrybrowser.GFacURL;
+import org.apache.airavata.xbaya.model.registrybrowser.GFacURLs;
+import org.apache.airavata.xbaya.model.registrybrowser.HostDescriptions;
+import org.apache.airavata.xbaya.model.registrybrowser.InputParameters;
+import org.apache.airavata.xbaya.model.registrybrowser.InterpreterServiceURL;
+import org.apache.airavata.xbaya.model.registrybrowser.InterpreterServiceURLs;
+import org.apache.airavata.xbaya.model.registrybrowser.MessageBoxURL;
+import org.apache.airavata.xbaya.model.registrybrowser.MessageBoxURLs;
+import org.apache.airavata.xbaya.model.registrybrowser.OutputParameters;
+import org.apache.airavata.xbaya.model.registrybrowser.ServiceDescriptions;
+import org.apache.airavata.xbaya.model.registrybrowser.NodeParameter;
+import org.apache.airavata.xbaya.model.registrybrowser.ServiceParameters;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflow;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowExperiment;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowExperiments;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowNodeElement;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowTemplate;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowTemplates;
+
+public class AiravataTreeNodeFactory {
+	public static TreeNode getTreeNode(Object o,TreeNode parent){
+		if (o instanceof XBayaEngine){
+            return new RegistryNode((XBayaEngine)o,parent);
+        }else if (o instanceof AiravataConfigurations){
+			return new AiravataConfigurationsNode((AiravataConfigurations)o,parent);
+//		}else if (o instanceof GFacURLs){
+//			return new GFacURLsNode((GFacURLs)o,parent);
+		}else if (o instanceof GFacURL){
+			return new GFacURLNode((GFacURL)o,parent);
+		}else if (o instanceof InterpreterServiceURLs){
+			return new InterpreterServiceURLsNode((InterpreterServiceURLs)o,parent);
+		}else if (o instanceof InterpreterServiceURL){
+			return new InterpreterServiceURLNode((InterpreterServiceURL)o,parent);
+		}else if (o instanceof MessageBoxURLs){
+			return new MessageBoxURLsNode((MessageBoxURLs)o,parent);
+		}else if (o instanceof MessageBoxURL){
+			return new MessageBoxURLNode((MessageBoxURL)o,parent);
+		}else if (o instanceof EventingServiceURLs){
+			return new EventingServiceURLsNode((EventingServiceURLs)o,parent);
+		}else if (o instanceof EventingServiceURL){
+			return new EventingServiceURLNode((EventingServiceURL)o,parent);
+		}else if (o instanceof HostDescriptions){
+			return new HostDescriptionsNode((HostDescriptions)o,parent);
+		}else if (o instanceof HostDescription){
+			return new HostDescriptionNode((HostDescription)o,parent);
+		}else if (o instanceof ServiceDescriptions){
+			return new ServiceDescriptionsNode((ServiceDescriptions)o,parent);
+		}else if (o instanceof ServiceDescription){
+			return new ServiceDescriptionNode((ServiceDescription)o,parent);
+		}else if (o instanceof ApplicationDeploymentDescriptions){
+			return new ApplicationDeploymentDescriptionsNode((ApplicationDeploymentDescriptions)o,parent);
+		}else if (o instanceof ApplicationDeploymentDescriptionWrap){
+			return new ApplicationDeploymentDescriptionNode((ApplicationDeploymentDescriptionWrap)o,parent);
+		}else if (o instanceof XBayaWorkflowTemplates){
+			return new XBayaWorkflowTemplatesNode((XBayaWorkflowTemplates)o,parent);
+		}else if (o instanceof XBayaWorkflowTemplate){
+			return new XBayaWorkflowTemplateNode((XBayaWorkflowTemplate)o,parent);
+		}else if (o instanceof NodeParameter){
+			return new ParameterNode((NodeParameter)o,parent);
+		}else if (o instanceof InputParameters){
+			return new InputParametersNode((InputParameters)o,parent);
+		}else if (o instanceof OutputParameters){
+			return new OutputParametersNode((OutputParameters)o,parent);
+		}else if (o instanceof ServiceParameters){
+			return new ParametersNode((ServiceParameters)o,parent);
+		}else if (o instanceof XBayaWorkflowExperiments){
+			return new XBayaWorkflowExperimentsNode((XBayaWorkflowExperiments)o,parent);
+		}else if (o instanceof XBayaWorkflowExperiment){
+			return new XBayaWorkflowExperimentNode((XBayaWorkflowExperiment)o,parent);
+		}else if (o instanceof XBayaWorkflow){
+			return new XBayaWorkflowNode((XBayaWorkflow)o,parent);
+		}else if (o instanceof XBayaWorkflowNodeElement){
+			return new XBayaWorkflowNodeElementNode((XBayaWorkflowNodeElement)o,parent);
+		}else{
+			return new DefaultMutableTreeNode(o);
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionNode.java
new file mode 100644
index 0000000..8a3d82a
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionNode.java
@@ -0,0 +1,131 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.xbaya.model.registrybrowser.ApplicationDeploymentDescriptionWrap;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.DeleteAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.EditAction;
+import org.apache.airavata.xbaya.ui.dialogs.descriptors.ApplicationDescriptionDialog;
+
+public class ApplicationDeploymentDescriptionNode extends AbstractAiravataTreeNode {
+    private ApplicationDeploymentDescriptionWrap applicationDeploymentDescriptionWrap;
+
+    public ApplicationDeploymentDescriptionNode(
+            ApplicationDeploymentDescriptionWrap applicationDeploymentDescriptionWrap, TreeNode parent) {
+        super(parent);
+        setApplicationDeploymentDescriptionWrap(applicationDeploymentDescriptionWrap);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        return emptyList();
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return getApplicationDeploymentDescriptionWrap().getDescription().getType().getApplicationName().getStringValue();
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.APPLICATION_ICON;
+    }
+
+    public ApplicationDeploymentDescriptionWrap getApplicationDeploymentDescriptionWrap() {
+        return applicationDeploymentDescriptionWrap;
+    }
+
+    public void setApplicationDeploymentDescriptionWrap(
+            ApplicationDeploymentDescriptionWrap applicationDeploymentDescriptionWrap) {
+        this.applicationDeploymentDescriptionWrap = applicationDeploymentDescriptionWrap;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(DeleteAction.ID);
+    }
+
+//    @Override
+//    public String getDefaultAction() {
+//    	return EditAction.ID;
+//    }
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(DeleteAction.ID)) {
+        	return deleteApplicationDescription(tree);
+        } else if (action.equals(EditAction.ID)) {
+        	return editDescriptor(tree);
+        }
+        return super.triggerAction(tree, action);
+    }
+
+	private boolean editDescriptor(JTree tree) {
+		ApplicationDescriptionDialog applicationDescriptionDialog = new ApplicationDescriptionDialog(getXBayaEngine(),false,getApplicationDeploymentDescriptionWrap().getDescription(),getApplicationDeploymentDescriptionWrap().getHost(),getApplicationDeploymentDescriptionWrap().getService());
+		applicationDescriptionDialog.open();
+		if (applicationDescriptionDialog.isApplicationDescCreated()) {
+		    refresh();
+		    reloadTreeNode(tree, this);
+		}
+		return true;
+	}
+
+    private boolean deleteApplicationDescription(JTree tree) throws AiravataAPIInvocationException {
+        if (askQuestion("Application description",
+                "Are you sure that you want to remove the application description \""
+                        + getApplicationDeploymentDescriptionWrap().getDescription().getType().getApplicationName().getStringValue() + "\"?")) {
+            getRegistry().getApplicationManager().deleteApplicationDescription(getApplicationDeploymentDescriptionWrap().getService(),
+                    getApplicationDeploymentDescriptionWrap().getHost(),
+                    getApplicationDeploymentDescriptionWrap().getDescription().getType().getApplicationName().getStringValue());
+            ((AbstractAiravataTreeNode) getParent()).refresh();
+            reloadTreeNode(tree, getParent());
+        }
+        return true;
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        if (action.getID().equals(DeleteAction.ID)) {
+            return "Remove";
+        } else if (action.getID().equals(EditAction.ID)) {
+            return "View/Edit";
+        }
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionsNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionsNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionsNode.java
new file mode 100644
index 0000000..5d58fe9
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ApplicationDeploymentDescriptionsNode.java
@@ -0,0 +1,139 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.registry.api.exception.RegistryException;
+//import org.apache.airavata.registry.api.AiravataRegistry2;
+import org.apache.airavata.xbaya.model.registrybrowser.ApplicationDeploymentDescriptionWrap;
+import org.apache.airavata.xbaya.model.registrybrowser.ApplicationDeploymentDescriptions;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.AddAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.DeleteAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+import org.apache.airavata.xbaya.ui.dialogs.descriptors.ApplicationDescriptionDialog;
+
+public class ApplicationDeploymentDescriptionsNode extends AbstractAiravataTreeNode {
+    private ApplicationDeploymentDescriptions applicationDeploymentDescriptions;
+
+    public ApplicationDeploymentDescriptionsNode(ApplicationDeploymentDescriptions applicationDeploymentDescriptions,
+            TreeNode parent) {
+        super(parent);
+        setApplicationDeploymentDescriptions(applicationDeploymentDescriptions);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        try {
+            return getTreeNodeList(getApplicationDeploymentDescriptions().getDescriptions().toArray(), this);
+        } catch (AiravataAPIInvocationException e) {
+            e.printStackTrace();
+            return emptyList();
+        } catch (RegistryException e) {
+            e.printStackTrace();
+            return emptyList();
+        }
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return "Deployments";
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.APPLICATIONS_ICON;
+    }
+
+    public ApplicationDeploymentDescriptions getApplicationDeploymentDescriptions() {
+        return applicationDeploymentDescriptions;
+    }
+
+    public void setApplicationDeploymentDescriptions(ApplicationDeploymentDescriptions applicationDeploymentDescriptions) {
+        this.applicationDeploymentDescriptions = applicationDeploymentDescriptions;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(RefreshAction.ID, DeleteAction.ID);
+    }
+
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(DeleteAction.ID)) {
+            deleteApplicationDescription(tree);
+            return true;
+        } else if (action.equals(AddAction.ID)) {
+            ApplicationDescriptionDialog applicationDescriptionDialog = new ApplicationDescriptionDialog(getXBayaEngine());
+            applicationDescriptionDialog.open();
+            if (applicationDescriptionDialog.isApplicationDescCreated()) {
+                refresh();
+                reloadTreeNode(tree, this);
+            }
+            return true;
+        }
+        return super.triggerAction(tree, action);
+    }
+
+    private void deleteApplicationDescription(JTree tree) throws Exception {
+        if (askQuestion("Application descriptions",
+                "Are you sure that you want to remove all application descriptions in this registry?")) {
+            AiravataAPI airavataAPI = getRegistry();
+            List<ApplicationDeploymentDescriptionWrap> descriptions = getApplicationDeploymentDescriptions()
+                    .getDescriptions();
+            for (ApplicationDeploymentDescriptionWrap descriptionWrap : descriptions) {
+                airavataAPI.getApplicationManager().removeApplicationDescriptor(descriptionWrap.getService(), descriptionWrap.getHost(),
+                        descriptionWrap.getDescription().getType().getApplicationName().getStringValue());
+            }
+            refresh();
+            reloadTreeNode(tree, this);
+        }
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        if (action.getID().equals(DeleteAction.ID)) {
+            return "Remove all applications";
+        } else if (action.getID().equals(AddAction.ID)) {
+            return "New application...";
+        }
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLNode.java
new file mode 100644
index 0000000..f762efe
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLNode.java
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.EventingServiceURL;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.CopyAction;
+
+public class EventingServiceURLNode extends AbstractAiravataTreeNode {
+    private EventingServiceURL eventingServiceURL;
+
+    public EventingServiceURLNode(EventingServiceURL eventingServiceURL, TreeNode parent) {
+        super(parent);
+        setEventingServiceURL(eventingServiceURL);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        return emptyList();
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return getEventingServiceURL().getEventingServiceURL().toString();
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URL_ICON;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(CopyAction.ID);
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+    	if (action.getID().equals(CopyAction.ID)) {
+            return "Copy to clipboard";
+        }
+    	return null;
+    }
+
+    @Override
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(CopyAction.ID)) {
+        	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(getEventingServiceURL().getEventingServiceURL().toString()), null);
+        }
+        return super.triggerAction(tree, action);
+    }
+    
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+	public EventingServiceURL getEventingServiceURL() {
+		return eventingServiceURL;
+	}
+
+	public void setEventingServiceURL(EventingServiceURL eventingServiceURL) {
+		this.eventingServiceURL = eventingServiceURL;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLsNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLsNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLsNode.java
new file mode 100644
index 0000000..336e817
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/EventingServiceURLsNode.java
@@ -0,0 +1,91 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.xbaya.model.registrybrowser.EventingServiceURLs;
+import org.apache.airavata.xbaya.model.registrybrowser.InterpreterServiceURLs;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+
+public class EventingServiceURLsNode extends AbstractAiravataTreeNode {
+    private EventingServiceURLs eventingServiceURLs;
+
+    public EventingServiceURLsNode(EventingServiceURLs eventingServiceURLs, TreeNode parent) {
+        super(parent);
+        setEventingServiceURLs(eventingServiceURLs);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        try {
+            return getTreeNodeList(getEventingServiceURLs().getURLS().toArray(), this);
+        } catch (AiravataAPIInvocationException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return "Eventing Services";
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URLS_ICON;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(RefreshAction.ID);
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+	public EventingServiceURLs getEventingServiceURLs() {
+		return eventingServiceURLs;
+	}
+
+	public void setEventingServiceURLs(EventingServiceURLs eventingServiceURLs) {
+		this.eventingServiceURLs = eventingServiceURLs;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLNode.java
new file mode 100644
index 0000000..4270c29
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLNode.java
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.GFacURL;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.CopyAction;
+
+public class GFacURLNode extends AbstractAiravataTreeNode {
+    private GFacURL gfacURL;
+
+    public GFacURLNode(GFacURL gfacURL, TreeNode parent) {
+        super(parent);
+        setGfacURL(gfacURL);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        return emptyList();
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return getGfacURL().getGfacURL().toString();
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URL_ICON;
+    }
+
+    public GFacURL getGfacURL() {
+        return gfacURL;
+    }
+
+    public void setGfacURL(GFacURL gfacURL) {
+        this.gfacURL = gfacURL;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(CopyAction.ID);
+    }
+
+    @Override
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(CopyAction.ID)) {
+        	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(getGfacURL().getGfacURL().toString()), null);
+        }
+        return super.triggerAction(tree, action);
+    }
+    
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+    	if (action.getID().equals(CopyAction.ID)) {
+            return "Copy to clipboard";
+        }
+    	return null;
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLsNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLsNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLsNode.java
new file mode 100644
index 0000000..97b18c7
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/GFacURLsNode.java
@@ -0,0 +1,91 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.xbaya.model.registrybrowser.GFacURLs;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+
+public class GFacURLsNode{
+//        extends AbstractAiravataTreeNode {
+//    private GFacURLs gfacURLs;
+//
+//    public GFacURLsNode(GFacURLs gfacURLs, TreeNode parent) {
+//        super(parent);
+//        setGfacURLs(gfacURLs);
+//    }
+//
+//    @Override
+//    protected List<TreeNode> getChildren() {
+//        try {
+//            return getTreeNodeList(getGfacURLs().getURLS().toArray(), this);
+//        } catch (AiravataAPIInvocationException e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+//    }
+//
+//    @Override
+//    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+//        return "GFac Locations";
+//    }
+//
+//    @Override
+//    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+//        return JCRBrowserIcons.GFAC_URLS_ICON;
+//    }
+//
+//    public GFacURLs getGfacURLs() {
+//        return gfacURLs;
+//    }
+//
+//    public void setGfacURLs(GFacURLs gfacURLs) {
+//        this.gfacURLs = gfacURLs;
+//    }
+//
+//    @Override
+//    public List<String> getSupportedActions() {
+//        return Arrays.asList(RefreshAction.ID);
+//    }
+//
+//    @Override
+//    public String getActionCaption(AbstractBrowserActionItem action) {
+//        return action.getDefaultCaption();
+//    }
+//
+//    @Override
+//    public Icon getActionIcon(AbstractBrowserActionItem action) {
+//        return null;
+//    }
+//
+//    @Override
+//    public String getActionDescription(AbstractBrowserActionItem action) {
+//        return null;
+//    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionNode.java
new file mode 100644
index 0000000..2fba319
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionNode.java
@@ -0,0 +1,127 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.DeleteAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.EditAction;
+import org.apache.airavata.xbaya.ui.dialogs.descriptors.HostDescriptionDialog;
+
+public class HostDescriptionNode extends AbstractAiravataTreeNode {
+    private HostDescription hostDescription;
+
+    public HostDescriptionNode(HostDescription hostDescription, TreeNode parent) {
+        super(parent);
+        setHostDescription(hostDescription);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        return emptyList();
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return getHostDescription().getType().getHostName();
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.HOST_ICON;
+    }
+
+    public HostDescription getHostDescription() {
+        return hostDescription;
+    }
+
+    public void setHostDescription(HostDescription hostDescription) {
+        this.hostDescription = hostDescription;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(EditAction.ID, DeleteAction.ID);
+    }
+
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(DeleteAction.ID)) {
+        	return deleteHostDescription(tree);
+        } else if (action.equals(EditAction.ID)) {
+            return editHostDescription(tree);
+        }
+        return super.triggerAction(tree, action);
+    }
+    
+    @Override
+    public String getDefaultAction() {
+    	return EditAction.ID;
+    }
+    
+	private boolean editHostDescription(JTree tree) {
+		HostDescriptionDialog hostDescriptionDialog = new HostDescriptionDialog(getXBayaEngine().getConfiguration().getAiravataAPI(),false,getHostDescription(), null);
+		hostDescriptionDialog.open();
+		if (hostDescriptionDialog.isHostCreated()) {
+		    refresh();
+		    reloadTreeNode(tree, this);
+		}
+		return true;
+	}
+
+    private boolean deleteHostDescription(JTree tree) throws AiravataAPIInvocationException {
+        if (askQuestion("Host description", "Are you sure that you want to remove the host description \""
+                + getHostDescription().getType().getHostName() + "\"?")) {
+            getRegistry().getApplicationManager().deleteHostDescription(getHostDescription().getType().getHostName());
+            ((AbstractAiravataTreeNode) getParent()).refresh();
+            reloadTreeNode(tree, getParent());
+        }
+        return true;
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        if (action.getID().equals(DeleteAction.ID)) {
+            return "Remove";
+        } else if (action.getID().equals(EditAction.ID)) {
+            return "View/Edit";
+        }
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionsNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionsNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionsNode.java
new file mode 100644
index 0000000..525c15b
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/HostDescriptionsNode.java
@@ -0,0 +1,131 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.xbaya.model.registrybrowser.HostDescriptions;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.AddAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.DeleteAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+import org.apache.airavata.xbaya.ui.dialogs.descriptors.HostDescriptionDialog;
+//import org.apache.airavata.registry.api.AiravataRegistry2;
+
+public class HostDescriptionsNode extends AbstractAiravataTreeNode {
+    private HostDescriptions hostDescriptions;
+
+    public HostDescriptionsNode(HostDescriptions hostDescriptions, TreeNode parent) {
+        super(parent);
+        setHostDescriptions(hostDescriptions);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        try {
+            return getTreeNodeList(getHostDescriptions().getDescriptions().toArray(), this);
+        } catch (AiravataAPIInvocationException e) {
+            e.printStackTrace();
+            return emptyList();
+        }
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return "Hosts";
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.HOSTS_ICON;
+    }
+
+    public HostDescriptions getHostDescriptions() {
+        return hostDescriptions;
+    }
+
+    public void setHostDescriptions(HostDescriptions hostDescriptions) {
+        this.hostDescriptions = hostDescriptions;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(AddAction.ID, RefreshAction.ID, DeleteAction.ID);
+    }
+
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(DeleteAction.ID)) {
+            deleteHostDescription(tree);
+            return true;
+        } else if (action.equals(AddAction.ID)) {
+            HostDescriptionDialog hostDescriptionDialog = new HostDescriptionDialog(getXBayaEngine().getConfiguration().getAiravataAPI(), null);
+            hostDescriptionDialog.open();
+            if (hostDescriptionDialog.isHostCreated()) {
+                refresh();
+                reloadTreeNode(tree, this);
+            }
+            return true;
+        }
+        return super.triggerAction(tree, action);
+    }
+
+    private void deleteHostDescription(JTree tree) throws Exception {
+        if (askQuestion("Host descriptions",
+                "Are you sure that you want to remove all host descriptions in this registry?")) {
+            AiravataAPI registry = getRegistry();
+            List<HostDescription> descriptions = getHostDescriptions().getDescriptions();
+            for (HostDescription descriptionWrap : descriptions) {
+                registry.getApplicationManager().removeHostDescriptor(descriptionWrap.getType().getHostName());
+            }
+            refresh();
+            reloadTreeNode(tree, this);
+        }
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        if (action.getID().equals(DeleteAction.ID)) {
+            return "Remove all hosts";
+        } else if (action.getID().equals(AddAction.ID)) {
+            return "New host...";
+        }
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InputParametersNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InputParametersNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InputParametersNode.java
new file mode 100644
index 0000000..4116fcb
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InputParametersNode.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.InputParameters;
+
+public class InputParametersNode extends ParametersNode {
+
+	public InputParametersNode(InputParameters parameters, TreeNode parent) {
+		super(parameters, parent);
+	}
+
+	@Override
+	public String getCaption(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return "Input";
+	}
+	
+	@Override
+	public Icon getIcon(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return JCRBrowserIcons.INPUT_PARAMETERS_ICON;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLNode.java
new file mode 100644
index 0000000..eb595e7
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLNode.java
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.InterpreterServiceURL;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.CopyAction;
+
+public class InterpreterServiceURLNode extends AbstractAiravataTreeNode {
+    private InterpreterServiceURL interpreterServiceURL;
+
+    public InterpreterServiceURLNode(InterpreterServiceURL interpreterServiceURL, TreeNode parent) {
+        super(parent);
+        setInterpreterServiceURL(interpreterServiceURL);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        return emptyList();
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return getInterpreterServiceURL().getInterpreterServiceURL().toString();
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URL_ICON;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(CopyAction.ID);
+    }
+
+    @Override
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(CopyAction.ID)) {
+        	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(getInterpreterServiceURL().getInterpreterServiceURL().toString()), null);
+        }
+        return super.triggerAction(tree, action);
+    }
+    
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+    	if (action.getID().equals(CopyAction.ID)) {
+            return "Copy to clipboard";
+        }
+    	return null;
+	}
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+	public InterpreterServiceURL getInterpreterServiceURL() {
+		return interpreterServiceURL;
+	}
+
+	public void setInterpreterServiceURL(InterpreterServiceURL interpreterServiceURL) {
+		this.interpreterServiceURL = interpreterServiceURL;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLsNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLsNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLsNode.java
new file mode 100644
index 0000000..1835dde
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/InterpreterServiceURLsNode.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.xbaya.model.registrybrowser.InterpreterServiceURLs;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+
+public class InterpreterServiceURLsNode extends AbstractAiravataTreeNode {
+    private InterpreterServiceURLs interpreterServiceURLs;
+
+    public InterpreterServiceURLsNode(InterpreterServiceURLs interpreterServiceURLs, TreeNode parent) {
+        super(parent);
+        setInterpreterServiceURLs(interpreterServiceURLs);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        try {
+            return getTreeNodeList(getInterpreterServiceURLs().getURLS().toArray(), this);
+        } catch (AiravataAPIInvocationException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return "Interpreter Servers";
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URLS_ICON;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(RefreshAction.ID);
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+	public InterpreterServiceURLs getInterpreterServiceURLs() {
+		return interpreterServiceURLs;
+	}
+
+	public void setInterpreterServiceURLs(InterpreterServiceURLs interpreterServiceURLs) {
+		this.interpreterServiceURLs = interpreterServiceURLs;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/JCRBrowserIcons.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/JCRBrowserIcons.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/JCRBrowserIcons.java
new file mode 100644
index 0000000..17b7be2
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/JCRBrowserIcons.java
@@ -0,0 +1,50 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import javax.swing.Icon;
+
+import org.apache.airavata.common.utils.SwingUtil;
+
+public class JCRBrowserIcons {
+	public static final Icon APPLICATION_ICON=SwingUtil.createImageIcon("application.png");
+	public static final Icon APPLICATIONS_ICON=SwingUtil.createImageIcon("applications.png");
+	public static final Icon REGISTRY_ICON=SwingUtil.createImageIcon("jcr-repo.png");
+	public static final Icon AIRAVATA_CONFIG_ICON=SwingUtil.createImageIcon("airavata-config.png");
+	public static final Icon GFAC_URLS_ICON=SwingUtil.createImageIcon("gfac_urls.png");
+	public static final Icon GFAC_URL_ICON=SwingUtil.createImageIcon("gfac_url.png");
+	public static final Icon HOST_ICON=SwingUtil.createImageIcon("host.png");
+	public static final Icon HOSTS_ICON=SwingUtil.createImageIcon("hosts.png");
+	public static final Icon INPUT_PARAMETERS_ICON=SwingUtil.createImageIcon("input_para.png");
+	public static final Icon OUTPUT_PARAMETERS_ICON=SwingUtil.createImageIcon("output_para.png");
+	public static final Icon PARAMETER_ICON=SwingUtil.createImageIcon("parameter.png");
+	public static final Icon PARAMETERS_ICON=SwingUtil.createImageIcon("parameter.png");
+	public static final Icon PARAMETER_VALUE_ICON=SwingUtil.createImageIcon("parameter.png");
+	public static final Icon SERVICE_ICON=SwingUtil.createImageIcon("service.png");
+	public static final Icon SERVICES_ICON=SwingUtil.createImageIcon("services.png");
+	public static final Icon WORKFLOW_EXPERIMENT_ICON=SwingUtil.createImageIcon("experiment.png");
+	public static final Icon WORKFLOW_EXPERIMENTS_ICON=SwingUtil.createImageIcon("experiments.png");
+	public static final Icon WORKFLOW_ICON=SwingUtil.createImageIcon("workflow.png");
+	public static final Icon WORKFLOW_SERVICE_ICON=SwingUtil.createImageIcon("service.png");
+	public static final Icon WORKFLOW_TEMPLATE_ICON=SwingUtil.createImageIcon("workflow.png");
+	public static final Icon WORKFLOW_TEMPLATES_ICON=SwingUtil.createImageIcon("workflow_templates.png");
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLNode.java
new file mode 100644
index 0000000..23a9c37
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLNode.java
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.MessageBoxURL;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.CopyAction;
+
+public class MessageBoxURLNode extends AbstractAiravataTreeNode {
+    private MessageBoxURL messageBoxURL;
+
+    public MessageBoxURLNode(MessageBoxURL messageBoxURL, TreeNode parent) {
+        super(parent);
+        setMessageBoxURL(messageBoxURL);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        return emptyList();
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return getMessageBoxURL().getMessageBoxURL().toString();
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URL_ICON;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(CopyAction.ID);
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+    	if (action.getID().equals(CopyAction.ID)) {
+            return "Copy to clipboard";
+        }
+    	return null;
+    }
+
+    @Override
+    public boolean triggerAction(JTree tree, String action) throws Exception {
+        if (action.equals(CopyAction.ID)) {
+        	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(getMessageBoxURL().getMessageBoxURL().toString()), null);
+        }
+        return super.triggerAction(tree, action);
+    }
+    
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+	public MessageBoxURL getMessageBoxURL() {
+		return messageBoxURL;
+	}
+
+	public void setMessageBoxURL(MessageBoxURL messageBoxURL) {
+		this.messageBoxURL = messageBoxURL;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLsNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLsNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLsNode.java
new file mode 100644
index 0000000..5f521d3
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/MessageBoxURLsNode.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.xbaya.model.registrybrowser.MessageBoxURLs;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+
+public class MessageBoxURLsNode extends AbstractAiravataTreeNode {
+    private MessageBoxURLs messageBoxURLs;
+
+    public MessageBoxURLsNode(MessageBoxURLs messageBoxURLs, TreeNode parent) {
+        super(parent);
+        setMessageBoxURLs(messageBoxURLs);
+    }
+
+    @Override
+    protected List<TreeNode> getChildren() {
+        try {
+            return getTreeNodeList(getMessageBoxURLs().getURLS().toArray(), this);
+        } catch (AiravataAPIInvocationException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return "Message Boxes";
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.GFAC_URLS_ICON;
+    }
+
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(RefreshAction.ID);
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+	public MessageBoxURLs getMessageBoxURLs() {
+		return messageBoxURLs;
+	}
+
+	public void setMessageBoxURLs(MessageBoxURLs messageBoxURLs) {
+		this.messageBoxURLs = messageBoxURLs;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/OutputParametersNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/OutputParametersNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/OutputParametersNode.java
new file mode 100644
index 0000000..bed1a70
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/OutputParametersNode.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.OutputParameters;
+
+public class OutputParametersNode extends ParametersNode {
+
+	public OutputParametersNode(OutputParameters parameters, TreeNode parent) {
+		super(parameters, parent);
+	}
+
+	@Override
+	public String getCaption(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return "Output";
+	}
+	
+	@Override
+	public Icon getIcon(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return JCRBrowserIcons.OUTPUT_PARAMETERS_ICON;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterNode.java
new file mode 100644
index 0000000..5ce637f
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterNode.java
@@ -0,0 +1,136 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.common.utils.BrowserLauncher;
+import org.apache.airavata.xbaya.model.registrybrowser.NodeParameter;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.BrowserAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.CopyAction;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.ViewAction;
+import org.apache.airavata.xbaya.ui.dialogs.TextWindow;
+
+public class ParameterNode extends AbstractAiravataTreeNode {
+	private NodeParameter parameter;
+	
+	public ParameterNode(NodeParameter parameter, TreeNode parent) {
+		super(parent);
+		setParameter(parameter);
+	}
+
+	@Override
+	protected List<TreeNode> getChildren() {
+		return emptyList();
+	}
+
+	@Override
+	public String getCaption(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		if (getParameter().getValue()!=null){
+			String parameterValue = getParameter().getValue().toString();
+			if (parameterValue.length()>200){
+				parameterValue=parameterValue.substring(0, 200)+"...";
+			}
+			return wrapAsHtml("<b>"+getParameter().getName()+"</b>",": ",""+parameterValue+"");
+		}else{
+			return getParameter().getName();
+		}
+	}
+
+	@Override
+	public Icon getIcon(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return JCRBrowserIcons.PARAMETER_ICON;
+	}
+
+	@Override
+	public String getDefaultAction() {
+		return ViewAction.ID;
+	}
+	
+    @Override
+    public List<String> getSupportedActions() {
+        try {
+			new URL(getParameter().getValue().toString());
+			return Arrays.asList(ViewAction.ID,CopyAction.ID,BrowserAction.ID);
+		} catch (MalformedURLException e) {
+			//the content is not a proper url
+			return Arrays.asList(ViewAction.ID,CopyAction.ID);
+		}
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+    	if (action.getID().equals(ViewAction.ID)) {
+    		return "View";
+    	} else if (action.getID().equals(CopyAction.ID)) {
+            return "Copy to clipboard";
+    	} else if (action.getID().equals(BrowserAction.ID)) {
+            return "Open in web browser...";
+        }
+    	return null;
+    }
+    
+	public boolean triggerAction(JTree tree,String action) throws Exception{
+		String value = getParameter().getValue().toString();
+		if (action.equals(ViewAction.ID)) {
+			TextWindow textWindow = new TextWindow(getXBayaEngine(), getParameter().getName(), value,"Parameter Content");
+			textWindow.show();
+		} else if (action.equals(CopyAction.ID)) {
+        	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(value), null);
+		} else if (action.equals(BrowserAction.ID)) {
+			BrowserLauncher.openURL(getParameter().getValue().toString());
+        } 
+		return super.triggerAction(tree, action);
+	}
+
+	@Override
+	public Icon getActionIcon(AbstractBrowserActionItem action) {
+		return null;
+	}
+
+	@Override
+	public String getActionDescription(AbstractBrowserActionItem action) {
+		return null;
+	}
+
+	public NodeParameter getParameter() {
+		return parameter;
+	}
+
+	public void setParameter(NodeParameter parameter) {
+		this.parameter = parameter;
+	}
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterValueNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterValueNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterValueNode.java
new file mode 100644
index 0000000..38a7d16
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParameterValueNode.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.schemas.gfac.Parameter;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+
+public class ParameterValueNode extends AbstractAiravataTreeNode {
+	private Parameter parameter;
+	
+	public ParameterValueNode(Parameter parameter, TreeNode parent) {
+		super(parent);
+		setParameter(parameter);
+	}
+
+	@Override
+	protected List<TreeNode> getChildren() {
+		return emptyList();
+	}
+
+	@Override
+	public String getCaption(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return getParameter().getParameterName();
+	}
+
+	@Override
+	public Icon getIcon(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return JCRBrowserIcons.PARAMETER_VALUE_ICON;
+	}
+
+	@Override
+	public List<String> getSupportedActions() {
+		return Arrays.asList();
+	}
+
+	public boolean triggerAction(JTree tree,String action) throws Exception{
+		return super.triggerAction(tree, action);
+	}
+
+	@Override
+	public String getActionCaption(AbstractBrowserActionItem action) {
+		return action.getDefaultCaption();
+	}
+
+	@Override
+	public Icon getActionIcon(AbstractBrowserActionItem action) {
+		return null;
+	}
+
+	@Override
+	public String getActionDescription(AbstractBrowserActionItem action) {
+		return null;
+	}
+
+	public Parameter getParameter() {
+		return parameter;
+	}
+
+	public void setParameter(Parameter parameter) {
+		this.parameter = parameter;
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParametersNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParametersNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParametersNode.java
new file mode 100644
index 0000000..33e409a
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/ParametersNode.java
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.xbaya.model.registrybrowser.ServiceParameters;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+
+public class ParametersNode extends AbstractAiravataTreeNode {
+	private ServiceParameters parametersList;
+	public ParametersNode(ServiceParameters parameters,TreeNode parent) {
+		super(parent);
+		setParametersList(parameters);
+	}
+
+	@Override
+	protected List<TreeNode> getChildren() {
+		return getTreeNodeList(getParametersList().getParameters().toArray(), this);
+	}
+
+	@Override
+	public String getCaption(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return "Parameters";
+	}
+
+	@Override
+	public Icon getIcon(boolean selected, boolean expanded, boolean leaf,
+			boolean hasFocus) {
+		return JCRBrowserIcons.PARAMETERS_ICON;
+	}
+
+	@Override
+	public List<String> getSupportedActions() {
+		return Arrays.asList();
+	}
+	
+	public boolean triggerAction(JTree tree,String action) throws Exception{
+		return super.triggerAction(tree, action);
+	}
+
+	@Override
+	public String getActionCaption(AbstractBrowserActionItem action) {
+		return action.getDefaultCaption();
+	}
+
+	@Override
+	public Icon getActionIcon(AbstractBrowserActionItem action) {
+		return null;
+	}
+
+	@Override
+	public String getActionDescription(AbstractBrowserActionItem action) {
+		return null;
+	}
+
+	public ServiceParameters getParametersList() {
+		return parametersList;
+	}
+
+	public void setParametersList(ServiceParameters parametersList) {
+		this.parametersList = parametersList;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryNode.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryNode.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryNode.java
new file mode 100644
index 0000000..09af7c8
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryNode.java
@@ -0,0 +1,130 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.tree.TreeNode;
+
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//import org.apache.airavata.registry.api.AiravataRegistry2;
+import org.apache.airavata.xbaya.XBayaEngine;
+import org.apache.airavata.xbaya.model.registrybrowser.AiravataConfigurations;
+import org.apache.airavata.xbaya.model.registrybrowser.HostDescriptions;
+import org.apache.airavata.xbaya.model.registrybrowser.ServiceDescriptions;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowExperiments;
+import org.apache.airavata.xbaya.model.registrybrowser.XBayaWorkflowTemplates;
+import org.apache.airavata.xbaya.ui.actions.AbstractBrowserActionItem;
+import org.apache.airavata.xbaya.ui.actions.registry.browser.RefreshAction;
+
+public class RegistryNode extends AbstractAiravataTreeNode {
+    private AiravataAPI registry;
+    private XBayaEngine engine;
+
+    public RegistryNode(XBayaEngine engine, TreeNode parent) {
+        super(parent);
+        setRegistry(engine.getConfiguration().getAiravataAPI());
+        this.engine=engine;
+    }
+
+    protected List<TreeNode> getChildren() {
+        List<Object> children = new ArrayList<Object>();
+        AiravataConfigurations airavataConfigurations = new AiravataConfigurations(getRegistry());
+        children.add(airavataConfigurations);
+        HostDescriptions hostDescriptions = new HostDescriptions(getRegistry());
+        children.add(hostDescriptions);
+        ServiceDescriptions serviceDescriptions = new ServiceDescriptions(getRegistry());
+        children.add(serviceDescriptions);
+//        ApplicationDeploymentDescriptions applicationDeploymentDescriptions = new ApplicationDeploymentDescriptions(
+//                getRegistry());
+//        children.add(applicationDeploymentDescriptions);
+        XBayaWorkflowTemplates xBayaWorkflows = new XBayaWorkflowTemplates(getRegistry());
+        children.add(xBayaWorkflows);
+        XBayaWorkflowExperiments xBayaWorkflowExperiments = new XBayaWorkflowExperiments(getRegistry());
+        children.add(xBayaWorkflowExperiments);
+        return getTreeNodeList(children.toArray(), this);
+    }
+
+    public AiravataAPI getRegistry() {
+        return registry;
+    }
+
+    public void setRegistry(AiravataAPI registry) {
+        this.registry = registry;
+    }
+
+    @Override
+    public String getCaption(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        try {
+            return getRegistry().getAiravataManager().getGateway().getGatewayName() + " - " + getRegistry().getAiravataManager().getUser().getUserName();
+        } catch (AiravataAPIInvocationException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public Icon getIcon(boolean selected, boolean expanded, boolean leaf, boolean hasFocus) {
+        return JCRBrowserIcons.REGISTRY_ICON;
+    }
+
+    // @Override
+    // public void refresh() {
+    // List<TreeNode> children = getChildren();
+    // for (TreeNode node : children) {
+    // if (node instanceof AbstractAiravataTreeNode){
+    // ((AbstractAiravataTreeNode)node).refresh();
+    // }
+    // }
+    // }
+    @Override
+    public List<String> getSupportedActions() {
+        return Arrays.asList(RefreshAction.ID);
+    }
+
+    @Override
+    public String getActionCaption(AbstractBrowserActionItem action) {
+        return action.getDefaultCaption();
+    }
+
+    @Override
+    public Icon getActionIcon(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    @Override
+    public String getActionDescription(AbstractBrowserActionItem action) {
+        return null;
+    }
+
+    public XBayaEngine getEngine() {
+        return engine;
+    }
+
+    public void setEngine(XBayaEngine engine) {
+        this.engine = engine;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9c47eec8/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryTreeCellRenderer.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryTreeCellRenderer.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryTreeCellRenderer.java
new file mode 100644
index 0000000..fe3baac
--- /dev/null
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/nodes/RegistryTreeCellRenderer.java
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.registrybrowser.nodes;
+
+import java.awt.Component;
+
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.TreeCellRenderer;
+
+public class RegistryTreeCellRenderer implements TreeCellRenderer {
+
+    @Override
+    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded,
+            boolean leaf, int row, boolean hasFocus) {
+        if (value instanceof AbstractAiravataTreeNode) {
+            AbstractAiravataTreeNode node = (AbstractAiravataTreeNode) value;
+            return node.getNodeComponent(tree, value, selected, expanded, leaf, row, hasFocus);
+        }
+        return new DefaultTreeCellRenderer().getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row,
+                hasFocus);
+    }
+
+}