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.