Author: pwang
Date: 2010-10-07 13:34:13 -0700 (Thu, 07 Oct 2010)
New Revision: 22182
Added:
cytoscape/trunk/application/src/main/java/cytoscape/actions/ApplyForcedDirectedLayoutMouseAdapter.java
Log:
run force-directed layout as a task
Added:
cytoscape/trunk/application/src/main/java/cytoscape/actions/ApplyForcedDirectedLayoutMouseAdapter.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/actions/ApplyForcedDirectedLayoutMouseAdapter.java
(rev 0)
+++
cytoscape/trunk/application/src/main/java/cytoscape/actions/ApplyForcedDirectedLayoutMouseAdapter.java
2010-10-07 20:34:13 UTC (rev 22182)
@@ -0,0 +1,105 @@
+package cytoscape.actions;
+
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import cytoscape.Cytoscape;
+import cytoscape.layout.CyLayoutAlgorithm;
+import cytoscape.layout.CyLayouts;
+import cytoscape.task.Task;
+import cytoscape.task.TaskMonitor;
+import cytoscape.task.ui.JTaskConfig;
+import cytoscape.task.util.TaskManager;
+import cytoscape.view.CyNetworkView;
+
+import javax.swing.JButton;
+
+public class ApplyForcedDirectedLayoutMouseAdapter extends MouseAdapter {
+ private JButton forceDirectLayoutButton;
+ public ApplyForcedDirectedLayoutMouseAdapter(JButton button){
+ forceDirectLayoutButton = button;
+ }
+
+ public void mouseClicked(MouseEvent e) {
+ //Apply force-directed layout
+
+ // Create Task
+ ApplyForceDirectedLayoutTask task = new
ApplyForceDirectedLayoutTask();
+
+ // Configure JTask Dialog Pop-Up Box
+ JTaskConfig jTaskConfig = new JTaskConfig();
+ jTaskConfig.setOwner(Cytoscape.getDesktop());
+ jTaskConfig.displayCloseButton(true);
+ jTaskConfig.displayStatus(true);
+ jTaskConfig.displayCancelButton(false);
+ jTaskConfig.setAutoDispose(true);
+
+ // Execute Task in New Thread; pop open JTask Dialog Box.
+ TaskManager.executeTask(task, jTaskConfig);
+ }
+
+ public void mousePressed(MouseEvent e) {
+ forceDirectLayoutButton.setSelected(true);
+ }
+ public void mouseReleased(MouseEvent e) {
+ forceDirectLayoutButton.setSelected(false);
+ }
+
+ class ApplyForceDirectedLayoutTask implements Task {
+ private TaskMonitor taskMonitor;
+
+ /**
+ * Constructor.
+ */
+ public ApplyForceDirectedLayoutTask() {
+ }
+
+ /**
+ * Executes Task
+ */
+ public void run() {
+ taskMonitor.setStatus("Applying force-directed
layout...");
+ taskMonitor.setPercentCompleted(-1);
+
+ CyLayoutAlgorithm fd =
CyLayouts.getLayout("force-directed");
+ fd.setSelectedOnly(false);
+ fd.getSettings().updateValues();
+ fd.updateSettings();
+ CyNetworkView view = Cytoscape.getCurrentNetworkView();
+ if (view != null){
+ view.applyLayout(fd);
+ view.redrawGraph(true, true);
+ }
+
+ taskMonitor.setPercentCompleted(100);
+ taskMonitor.setStatus("Done!");
+ }
+
+ /**
+ * Halts the Task: Not Currently Implemented.
+ */
+ public void halt() {
+ // Task can not currently be halted.
+ }
+
+ /**
+ * Sets the Task Monitor.
+ *
+ * @param taskMonitor
+ * TaskMonitor Object.
+ */
+ public void setTaskMonitor(TaskMonitor taskMonitor) throws
IllegalThreadStateException {
+ this.taskMonitor = taskMonitor;
+ }
+
+ /**
+ * Gets the Task Title.
+ *
+ * @return Task Title.
+ */
+ public String getTitle() {
+ return new String("Apply force-directed layout");
+ }
+ }
+
+}
--
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.