Author: kono
Date: 2012-07-23 16:34:36 -0700 (Mon, 23 Jul 2012)
New Revision: 29967

Added:
   
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTask.java
   
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTaskFactory.java
Modified:
   
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/CyActivator.java
   
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/CreateNewNetworkPanel.java
   
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/OpenPanel.java
Log:
Added new workflow and updated panel design.

Modified: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/CyActivator.java
 2012-07-23 23:27:28 UTC (rev 29966)
+++ 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/CyActivator.java
 2012-07-23 23:34:36 UTC (rev 29967)
@@ -17,11 +17,13 @@
 import org.cytoscape.io.util.RecentlyOpenedTracker;
 import org.cytoscape.property.CyProperty;
 import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.service.util.CyServiceRegistrar;
 import org.cytoscape.task.analyze.AnalyzeNetworkCollectionTaskFactory;
 import org.cytoscape.task.read.LoadNetworkURLTaskFactory;
 import org.cytoscape.task.read.OpenSessionTaskFactory;
 import org.cytoscape.task.visualize.ApplyPreferredLayoutTaskFactory;
 import org.cytoscape.util.swing.OpenBrowser;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
 import org.cytoscape.view.presentation.property.values.BendFactory;
 import org.cytoscape.view.vizmap.VisualMappingFunctionFactory;
 import org.cytoscape.view.vizmap.VisualMappingManager;
@@ -30,6 +32,7 @@
 import org.cytoscape.welcome.internal.panel.NewsAndLinkPanel;
 import org.cytoscape.welcome.internal.panel.OpenPanel;
 import org.cytoscape.welcome.internal.panel.StatusPanel;
+import org.cytoscape.welcome.internal.task.ApplySelectedLayoutTaskFactory;
 import org.cytoscape.welcome.internal.task.GenerateCustomStyleTaskFactory;
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.swing.DialogTaskManager;
@@ -42,6 +45,7 @@
 
        public void start(BundleContext bc) {
 
+               final CyServiceRegistrar registrar = getService(bc, 
CyServiceRegistrar.class);
                CyApplicationManager applicationManager = getService(bc, 
CyApplicationManager.class);
                CyVersion cyVersion = getService(bc, CyVersion.class);
                final ApplyPreferredLayoutTaskFactory 
applyPreferredLayoutTaskFactory = getService(bc,
@@ -84,7 +88,8 @@
 
                // TODO: implement contents
                final StatusPanel statusPanel = new StatusPanel(cyVersion);
-               final NewsAndLinkPanel helpPanel = new 
NewsAndLinkPanel(statusPanel, openBrowserServiceRef, 
cytoscapePropertiesServiceRef);
+               final NewsAndLinkPanel helpPanel = new 
NewsAndLinkPanel(statusPanel, openBrowserServiceRef,
+                               cytoscapePropertiesServiceRef);
 
                // Show Welcome Screen
                final WelcomeScreenAction welcomeScreenAction = new 
WelcomeScreenAction(createNewNetworkPanel, openPanel,
@@ -112,5 +117,15 @@
 
                // Define listener
                registerServiceListener(bc, createNewNetworkPanel, 
"addTaskFactory", "removeTaskFactory", TaskFactory.class);
+               
+               // Export task
+               CyLayoutAlgorithmManager cyLayoutAlgorithmManager = 
getService(bc, CyLayoutAlgorithmManager.class);
+               final ApplySelectedLayoutTaskFactory 
applySelectedLayoutTaskFactory = new ApplySelectedLayoutTaskFactory(
+                               registrar, applicationManager, 
cyLayoutAlgorithmManager);
+               Properties applySelectedLayoutTaskFactoryProps = new 
Properties();
+               
applySelectedLayoutTaskFactoryProps.setProperty(CreateNewNetworkPanel.WORKFLOW_ID,
 "applySelectedLayoutTaskFactory");
+               
applySelectedLayoutTaskFactoryProps.setProperty(CreateNewNetworkPanel.WORKFLOW_NAME,
 "Apply layout algorithm of your choice");
+               
applySelectedLayoutTaskFactoryProps.setProperty(CreateNewNetworkPanel.WORKFLOW_DESCRIPTION,
 "Apply a layout algorithm to the network.");
+               registerService(bc, applySelectedLayoutTaskFactory, 
TaskFactory.class, applySelectedLayoutTaskFactoryProps );
        }
 }

Modified: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/CreateNewNetworkPanel.java
===================================================================
--- 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/CreateNewNetworkPanel.java
 2012-07-23 23:27:28 UTC (rev 29966)
+++ 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/CreateNewNetworkPanel.java
 2012-07-23 23:34:36 UTC (rev 29967)
@@ -174,7 +174,7 @@
                // Remote access
                final JPanel wsPanel = new JPanel();
                wsPanel.setLayout(new GridLayout(1, 1));
-               wsPanel.setBorder(BorderFactory.createTitledBorder("Access 
Remore Service"));
+               wsPanel.setBorder(BorderFactory.createTitledBorder("Access 
Remote Service"));
                wsPanel.setOpaque(false);
                final Dimension dbPanelSize = new Dimension(300, 60);
                fromWebService.setMaximumSize(dbPanelSize);

Modified: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/OpenPanel.java
===================================================================
--- 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/OpenPanel.java
     2012-07-23 23:27:28 UTC (rev 29966)
+++ 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/panel/OpenPanel.java
     2012-07-23 23:34:36 UTC (rev 29967)
@@ -1,8 +1,7 @@
 package org.cytoscape.welcome.internal.panel;
 
-import java.awt.Color;
 import java.awt.Cursor;
-import java.awt.GridLayout;
+import java.awt.Dimension;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.image.BufferedImage;
@@ -14,10 +13,12 @@
 import java.util.List;
 
 import javax.imageio.ImageIO;
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.SwingConstants;
-import javax.swing.border.LineBorder;
+import javax.swing.border.Border;
 
 import org.cytoscape.io.util.RecentlyOpenedTracker;
 import org.cytoscape.task.read.OpenSessionTaskFactory;
@@ -36,7 +37,8 @@
        private BufferedImage openIconImg;
        private ImageIcon openIcon;
 
-       private static final int MAX_FILES = 5;
+       // Display up to 7 files due to space.
+       private static final int MAX_FILES = 7;
 
        private JLabel open;
 
@@ -62,13 +64,15 @@
                openIcon = new ImageIcon(openIconImg);
 
                final List<URL> recentFiles = 
fileTracker.getRecentlyOpenedURLs();
-               final int fileCount = recentFiles.size();
+               int fileCount = recentFiles.size();
+               if(fileCount>MAX_FILES)
+                       fileCount = MAX_FILES;
 
-               this.setLayout(new GridLayout(MAX_FILES + 1, 1));
+               this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
 
-               final LineBorder padLine = new LineBorder(new Color(0, 0, 0, 
0), 20, false);
+               final Border padLine = BorderFactory.createEmptyBorder(3, 20, 
3, 0);
 
-               for (int i = 0; i < fileCount; i++) {
+               for (int i = 0; i<fileCount; i++) {
                        final URL target = recentFiles.get(i);
 
                        URI fileURI = null;
@@ -80,6 +84,7 @@
                        }
                        final File targetFile = new File(fileURI);
                        final JLabel fileLabel = new JLabel("<html><u>" + 
target.toString() + "</u></html>");
+                       fileLabel.setMaximumSize(new Dimension(300, 18));
                        fileLabel.setForeground(REGULAR_FONT_COLOR);
                        fileLabel.setFont(LINK_FONT);
                        fileLabel.setBorder(padLine);
@@ -96,6 +101,7 @@
 
                        this.add(fileLabel);
                }
+               
                open = new JLabel("Open other file...");
                open.setFont(REGULAR_FONT);
                open.setForeground(REGULAR_FONT_COLOR);

Added: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTask.java
===================================================================
--- 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTask.java
                                (rev 0)
+++ 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTask.java
        2012-07-23 23:34:36 UTC (rev 29967)
@@ -0,0 +1,121 @@
+package org.cytoscape.welcome.internal.task;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.AbstractNetworkViewCollectionTask;
+import org.cytoscape.task.NetworkViewTaskFactory;
+import org.cytoscape.view.layout.AbstractLayoutAlgorithm;
+import org.cytoscape.view.layout.CyLayoutAlgorithm;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.undo.UndoSupport;
+import org.cytoscape.work.util.ListSingleSelection;
+
+public class ApplySelectedLayoutTask extends AbstractNetworkViewCollectionTask 
{
+
+       @Tunable(description = "Which Layout do you want to apply?")
+       public ListSingleSelection<Object> layouts;
+
+       private final CyApplicationManager applicationManager;
+
+       private final CyServiceRegistrar registrar;
+
+       public ApplySelectedLayoutTask(Collection<CyNetworkView> networkViews,
+                       final CyLayoutAlgorithmManager 
cyLayoutAlgorithmManager, final CyApplicationManager applicationManager,
+                       final CyServiceRegistrar registrar) {
+               super(networkViews);
+
+               this.applicationManager = applicationManager;
+               this.registrar = registrar;
+
+               getAllAlgorithms(cyLayoutAlgorithmManager);
+
+       }
+
+       /**
+        * Hack to mix CyLayots and irregular yFiles algorithms
+        * 
+        * @param cyLayoutAlgorithmManager
+        */
+       private final void getAllAlgorithms(final CyLayoutAlgorithmManager 
cyLayoutAlgorithmManager) {
+               // Hand-pick some yFiles algorithms
+               final NetworkViewTaskFactory organic = 
registrar.getService(NetworkViewTaskFactory.class, "(title=Organic)");
+               final NetworkViewTaskFactory orthogonal = 
registrar.getService(NetworkViewTaskFactory.class,
+                               "(title=Orthogonal)");
+               final NetworkViewTaskFactory hierarchic = 
registrar.getService(NetworkViewTaskFactory.class,
+                               "(title=Hierarchic)");
+               final NetworkViewTaskFactory circular = 
registrar.getService(NetworkViewTaskFactory.class, "(title=Circular)");
+
+               final DummyLayoutWrapper wrapped1 = new 
DummyLayoutWrapper(organic, "organic", "yFiles Organic Layout",
+                               registrar.getService(UndoSupport.class));
+               final DummyLayoutWrapper wrapped2 = new 
DummyLayoutWrapper(orthogonal, "orthogonal", "yFiles Orthogonal Layout",
+                               registrar.getService(UndoSupport.class));
+               final DummyLayoutWrapper wrapped3 = new 
DummyLayoutWrapper(hierarchic, "hierarchic", "yFiles Hierarchic Layout",
+                               registrar.getService(UndoSupport.class));
+               final DummyLayoutWrapper wrapped4 = new 
DummyLayoutWrapper(circular, "circular", "yFiles Circular Layout",
+                               registrar.getService(UndoSupport.class));
+
+               final Collection<CyLayoutAlgorithm> availableLayouts = 
cyLayoutAlgorithmManager.getAllLayouts();
+               final List<Object> mixed = new ArrayList<Object>();
+               mixed.add(wrapped1);
+               mixed.add(wrapped2);
+               mixed.add(wrapped3);
+               mixed.add(wrapped4);
+               mixed.addAll(availableLayouts);
+
+               layouts = new ListSingleSelection<Object>(mixed);
+               layouts.setSelectedValue(wrapped1);
+       }
+
+       @Override
+       public void run(TaskMonitor taskMonitor) throws Exception {
+               networkViews.clear();
+               
networkViews.addAll(applicationManager.getSelectedNetworkViews());
+               networkViews.add(applicationManager.getCurrentNetworkView());
+
+               final Object selected = layouts.getSelectedValue();
+
+               if (selected instanceof DummyLayoutWrapper) {
+                       final DummyLayoutWrapper layout = (DummyLayoutWrapper) 
selected;
+                       for (final CyNetworkView view : networkViews)
+                               
insertTasksAfterCurrentTask(layout.createTaskIterator(view, null, null, null));
+
+               } else if (selected instanceof CyLayoutAlgorithm) {
+                       final CyLayoutAlgorithm layout = (CyLayoutAlgorithm) 
selected;
+                       for (final CyNetworkView view : networkViews) {
+                               
insertTasksAfterCurrentTask(layout.createTaskIterator(view, 
layout.getDefaultLayoutContext(),
+                                               
CyLayoutAlgorithm.ALL_NODE_VIEWS, ""));
+                       }
+               }
+       }
+
+       private static final class DummyLayoutWrapper extends 
AbstractLayoutAlgorithm {
+
+               private final NetworkViewTaskFactory tf;
+
+               public DummyLayoutWrapper(final NetworkViewTaskFactory tf, 
String computerName, String humanName,
+                               UndoSupport undoSupport) {
+                       super(computerName, humanName, undoSupport);
+                       this.tf = tf;
+
+               }
+
+               @Override
+               public TaskIterator createTaskIterator(CyNetworkView 
networkView, Object layoutContext,
+                               Set<View<CyNode>> nodesToLayOut, String 
layoutAttribute) {
+                       return tf.createTaskIterator(networkView);
+               }
+
+       }
+
+}


Property changes on: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTask.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTaskFactory.java
===================================================================
--- 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTaskFactory.java
                         (rev 0)
+++ 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTaskFactory.java
 2012-07-23 23:34:36 UTC (rev 29967)
@@ -0,0 +1,33 @@
+package org.cytoscape.welcome.internal.task;
+
+import java.util.HashSet;
+
+import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.work.AbstractTaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class ApplySelectedLayoutTaskFactory extends AbstractTaskFactory {
+
+       private final CyApplicationManager applicationManager;
+       private final CyLayoutAlgorithmManager cyLayoutAlgorithmManager;
+
+       private final CyServiceRegistrar registrar;
+
+       public ApplySelectedLayoutTaskFactory(final CyServiceRegistrar 
registrar,
+                       final CyApplicationManager applicationManager, final 
CyLayoutAlgorithmManager cyLayoutAlgorithmManager) {
+
+               this.applicationManager = applicationManager;
+               this.cyLayoutAlgorithmManager = cyLayoutAlgorithmManager;
+               this.registrar = registrar;
+       }
+
+       @Override
+       public TaskIterator createTaskIterator() {
+               return new TaskIterator(new ApplySelectedLayoutTask(new 
HashSet<CyNetworkView>(), cyLayoutAlgorithmManager,
+                               applicationManager, registrar));
+       }
+
+}


Property changes on: 
core3/impl/trunk/welcome-impl/src/main/java/org/cytoscape/welcome/internal/task/ApplySelectedLayoutTaskFactory.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to