Author: kono
Date: 2012-03-01 16:49:41 -0800 (Thu, 01 Mar 2012)
New Revision: 28411
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTask.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTaskFactory.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/OpenSessionTaskFactory.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionAsTask.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTask.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTaskFactory.java
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskFactoryTest.java
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskTest.java
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
Log:
fixes #709 Now both "Save" and "Save As" menu items work. Also, correct
session file name will be set via SesseionSavedEvent.
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTask.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTask.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTask.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -30,8 +30,7 @@
package org.cytoscape.task.internal.session;
-import org.cytoscape.session.CySessionManager;
-
+import org.cytoscape.session.CySessionManager;
import org.cytoscape.work.AbstractTask;
import org.cytoscape.work.ProvidesTitle;
import org.cytoscape.work.TaskMonitor;
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTaskFactory.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTaskFactory.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/NewSessionTaskFactory.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -30,8 +30,7 @@
package org.cytoscape.task.internal.session;
-import org.cytoscape.session.CySessionManager;
-
+import org.cytoscape.session.CySessionManager;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.TaskIterator;
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/OpenSessionTaskFactory.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/OpenSessionTaskFactory.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/OpenSessionTaskFactory.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -31,14 +31,11 @@
import java.io.File;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.io.read.CySessionReaderManager;
import org.cytoscape.io.util.RecentlyOpenedTracker;
-import org.cytoscape.model.CyNetwork;
import org.cytoscape.session.CySession;
import org.cytoscape.session.CySessionManager;
import org.cytoscape.task.creation.LoadSession;
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionAsTask.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionAsTask.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionAsTask.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -71,6 +71,7 @@
public void run(TaskMonitor taskMonitor) throws Exception {
taskMonitor.setProgress(0.05);
+
final CySession session = sessionMgr.getCurrentSession();
insertTasksAfterCurrentTask(new CySessionWriter(writerMgr,
session, file));
taskMonitor.setProgress(1.0);
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTask.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTask.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTask.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -31,59 +31,51 @@
import java.io.File;
-import org.cytoscape.event.CyEventHelper;
import org.cytoscape.io.util.RecentlyOpenedTracker;
import org.cytoscape.io.write.CySessionWriter;
import org.cytoscape.io.write.CySessionWriterManager;
import org.cytoscape.session.CySession;
-import org.cytoscape.session.CySessionManager;
import org.cytoscape.work.AbstractTask;
import org.cytoscape.work.TaskMonitor;
public class SaveSessionTask extends AbstractTask {
private final CySessionWriterManager writerMgr;
- private final CySessionManager sessionMgr;
private final RecentlyOpenedTracker tracker;
- private final CyEventHelper cyEventHelper;
+
+ private final CySession session;
+ private final String fileName;
/**
* setAcceleratorCombo(KeyEvent.VK_S, ActionEvent.CTRL_MASK);
*/
- public SaveSessionTask(final CySessionWriterManager writerMgr, final
CySessionManager sessionMgr,
- final RecentlyOpenedTracker tracker, final
CyEventHelper cyEventHelper) {
+ public SaveSessionTask(final CySessionWriterManager writerMgr,
+ final CySession session, final String fileName, final
RecentlyOpenedTracker tracker) {
super();
if (writerMgr == null)
throw new NullPointerException("CySessionWriterManager
is null.");
- if (sessionMgr == null)
- throw new NullPointerException("CySessionManager is
null.");
-
+ if (fileName == null)
+ throw new NullPointerException("Session file name is
null.");
+ if (session == null)
+ throw new NullPointerException("CySession is null.");
+
this.writerMgr = writerMgr;
- this.sessionMgr = sessionMgr;
this.tracker = tracker;
- this.cyEventHelper = cyEventHelper;
+ this.session = session;
+ this.fileName = fileName;
}
@Override
public void run(TaskMonitor taskMonitor) throws Exception {
taskMonitor.setProgress(0.0);
- final CySession session = sessionMgr.getCurrentSession();
- if (session == null)
- throw new NullPointerException("Could not find current
session.");
-
- final String sessionFileName =
sessionMgr.getCurrentSessionFileName();
- taskMonitor.setProgress(0.3);
- if (sessionFileName == null) {
- // Could not find session file. Save as new file.
- insertTasksAfterCurrentTask(new
SaveSessionAsTask(writerMgr, sessionMgr, tracker, cyEventHelper));
- } else {
- final File file = new File(sessionFileName);
- insertTasksAfterCurrentTask(new
CySessionWriter(writerMgr, session, file));
- // Add this session file URL as the most recent file.
- tracker.add(file.toURI().toURL());
- }
+ final File file = new File(fileName);
+ insertTasksAfterCurrentTask(new CySessionWriter(writerMgr,
session, file));
+
+ // Add this session file URL as the most recent file.
+ tracker.add(file.toURI().toURL());
+
taskMonitor.setProgress(1.0);
}
}
\ No newline at end of file
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTaskFactory.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTaskFactory.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/session/SaveSessionTaskFactory.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -32,6 +32,7 @@
import org.cytoscape.event.CyEventHelper;
import org.cytoscape.io.util.RecentlyOpenedTracker;
import org.cytoscape.io.write.CySessionWriterManager;
+import org.cytoscape.session.CySession;
import org.cytoscape.session.CySessionManager;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.TaskIterator;
@@ -52,6 +53,17 @@
}
public TaskIterator createTaskIterator() {
- return new TaskIterator(2, new SaveSessionTask(writerMgr,
sessionMgr, tracker, cyEventHelper));
+ final CySession session = sessionMgr.getCurrentSession();
+ if (session == null)
+ throw new NullPointerException("Could not find current
session.");
+
+ // Check session file name is set or not.
+ final String sessionFileName =
sessionMgr.getCurrentSessionFileName();
+
+ // If there is no file name, use Save As task. Otherwise,
overwrite the current session.
+ if (sessionFileName == null)
+ return new TaskIterator(new
SaveSessionAsTask(writerMgr, sessionMgr, tracker, cyEventHelper));
+ else
+ return new TaskIterator(new SaveSessionTask(writerMgr,
session, sessionFileName, tracker));
}
}
Modified:
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskFactoryTest.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskFactoryTest.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskFactoryTest.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -1,20 +1,17 @@
package org.cytoscape.task.internal.session;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import org.cytoscape.event.CyEventHelper;
import org.cytoscape.io.util.RecentlyOpenedTracker;
import org.cytoscape.io.write.CySessionWriterManager;
import org.cytoscape.session.CySessionManager;
-import org.cytoscape.work.Task;
import org.cytoscape.work.TaskIterator;
import org.junit.Test;
public class SaveSessionTaskFactoryTest {
- @Test
+ @Test(expected=NullPointerException.class)
public void testRun() throws Exception {
CySessionManager mgr = mock(CySessionManager.class);;
@@ -22,13 +19,14 @@
RecentlyOpenedTracker tracker =
mock(RecentlyOpenedTracker.class);
CyEventHelper cyEventHelper = mock(CyEventHelper.class);
+
SaveSessionTaskFactory factory = new
SaveSessionTaskFactory(wmgr,mgr,tracker, cyEventHelper);
TaskIterator ti = factory.createTaskIterator();
- assertNotNull(ti);
-
- assertTrue( ti.hasNext() );
- Task t = ti.next();
- assertNotNull( t );
+// assertNotNull(ti);
+//
+// assertTrue( ti.hasNext() );
+// Task t = ti.next();
+// assertNotNull( t );
}
}
Modified:
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskTest.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskTest.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/session/SaveSessionTaskTest.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -1,9 +1,8 @@
package org.cytoscape.task.internal.session;
-import org.cytoscape.event.CyEventHelper;
import org.cytoscape.io.util.RecentlyOpenedTracker;
import org.cytoscape.io.write.CySessionWriterManager;
-import org.cytoscape.session.CySessionManager;
+import org.cytoscape.session.CySession;
import org.cytoscape.work.TaskIterator;
import org.cytoscape.work.TaskMonitor;
import org.junit.Before;
@@ -15,10 +14,11 @@
public class SaveSessionTaskTest {
@Mock private TaskMonitor tm;
- @Mock private CySessionManager mgr;
+
+ private CySession session;
+ private String fileNameString = "testFile";
@Mock private CySessionWriterManager writerMgr;
@Mock private RecentlyOpenedTracker tracker;
- @Mock private CyEventHelper cyEventHelper;
@Before
@@ -29,7 +29,7 @@
@Test(expected=NullPointerException.class)
public void testSaveSessionTask() throws Exception {
- final SaveSessionTask t = new SaveSessionTask(writerMgr,
mgr,tracker, cyEventHelper);
+ final SaveSessionTask t = new SaveSessionTask(writerMgr,
session, fileNameString, tracker);
t.setTaskIterator(new TaskIterator(t));
t.run(tm);
Modified:
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CyActivator.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -11,37 +11,38 @@
import org.cytoscape.service.util.AbstractCyActivator;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.session.CyNetworkNaming;
-import org.cytoscape.session.CySessionManager;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.vizmap.VisualMappingManager;
import org.cytoscape.work.undo.UndoSupport;
import org.osgi.framework.BundleContext;
+public class CyActivator extends AbstractCyActivator {
-public class CyActivator extends AbstractCyActivator {
-
public CyActivator() {
super();
}
@Override
public void start(BundleContext bc) {
- CyEventHelper cyEventHelperServiceRef =
getService(bc,CyEventHelper.class);
- CyNetworkManager cyNetworkManagerServiceRef =
getService(bc,CyNetworkManager.class);
- CyTableManager cyTableManagerServiceRef =
getService(bc,CyTableManager.class);
- VisualMappingManager visualMappingManagerServiceRef =
getService(bc,VisualMappingManager.class);
- CyNetworkViewManager cyNetworkViewManagerServiceRef =
getService(bc,CyNetworkViewManager.class);
- CyNetworkTableManager cyNetworkTableManagerServiceRef =
getService(bc,CyNetworkTableManager.class);
- CyRootNetworkManager cyRootNetworkManagerServiceRef =
getService(bc,CyRootNetworkManager.class);
- CyServiceRegistrar cyServiceRegistrarServiceRef =
getService(bc,CyServiceRegistrar.class);
- UndoSupport undo = getService(bc,UndoSupport.class);
+ CyEventHelper cyEventHelperServiceRef = getService(bc,
CyEventHelper.class);
+ CyNetworkManager cyNetworkManagerServiceRef = getService(bc,
CyNetworkManager.class);
+ CyTableManager cyTableManagerServiceRef = getService(bc,
CyTableManager.class);
+ VisualMappingManager visualMappingManagerServiceRef =
getService(bc, VisualMappingManager.class);
+ CyNetworkViewManager cyNetworkViewManagerServiceRef =
getService(bc, CyNetworkViewManager.class);
+ CyNetworkTableManager cyNetworkTableManagerServiceRef =
getService(bc, CyNetworkTableManager.class);
+ CyRootNetworkManager cyRootNetworkManagerServiceRef =
getService(bc, CyRootNetworkManager.class);
+ CyServiceRegistrar cyServiceRegistrarServiceRef =
getService(bc, CyServiceRegistrar.class);
+ UndoSupport undo = getService(bc, UndoSupport.class);
CyNetworkNamingImpl cyNetworkNaming = new
CyNetworkNamingImpl(cyNetworkManagerServiceRef);
- CySessionManagerImpl cySessionManager = new
CySessionManagerImpl(cyEventHelperServiceRef,cyNetworkManagerServiceRef,cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,visualMappingManagerServiceRef,cyNetworkViewManagerServiceRef,cyRootNetworkManagerServiceRef,cyServiceRegistrarServiceRef,
undo);
-
- registerService(bc,cyNetworkNaming,CyNetworkNaming.class, new
Properties());
- registerService(bc,cySessionManager,CySessionManager.class, new
Properties());
+ CySessionManagerImpl cySessionManager = new
CySessionManagerImpl(cyEventHelperServiceRef,
+ cyNetworkManagerServiceRef,
cyTableManagerServiceRef, cyNetworkTableManagerServiceRef,
+ visualMappingManagerServiceRef,
cyNetworkViewManagerServiceRef, cyRootNetworkManagerServiceRef,
+ cyServiceRegistrarServiceRef, undo);
-
registerServiceListener(bc,cySessionManager,"addCyProperty","removeCyProperty",CyProperty.class);
+ registerService(bc, cyNetworkNaming, CyNetworkNaming.class, new
Properties());
+
+ registerAllServices(bc, cySessionManager, new Properties());
+
+ registerServiceListener(bc, cySessionManager, "addCyProperty",
"removeCyProperty", CyProperty.class);
}
}
-
Modified:
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
===================================================================
---
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
2012-03-01 22:54:07 UTC (rev 28410)
+++
core3/impl/trunk/session-impl/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
2012-03-02 00:49:41 UTC (rev 28411)
@@ -63,6 +63,8 @@
import org.cytoscape.session.CySessionManager;
import org.cytoscape.session.events.SessionAboutToBeSavedEvent;
import org.cytoscape.session.events.SessionLoadedEvent;
+import org.cytoscape.session.events.SessionSavedEvent;
+import org.cytoscape.session.events.SessionSavedListener;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.vizmap.VisualMappingManager;
@@ -76,7 +78,7 @@
*
* @author Christian Lopes
*/
-public class CySessionManagerImpl implements CySessionManager {
+public class CySessionManagerImpl implements CySessionManager,
SessionSavedListener {
private String currentFileName;
private CySession currentSession;
@@ -231,8 +233,14 @@
}
@Override
- public void setCurrentSession(CySession sess, String fileName) {
+ public void setCurrentSession(CySession sess, final String fileName) {
+ // Only update session file name
+ if(fileName != null && sess == null) {
+ currentFileName = fileName;
+ return;
+ }
+
boolean emptySession = sess == null;
// Always remove the current session first
@@ -420,4 +428,17 @@
// Clear undo stack
undo.reset();
}
+
+ /**
+ * Update current session session object when session is saved.
+ */
+ @Override
+ public void handleEvent(SessionSavedEvent e) {
+
+ if(currentSession != e.getSavedSession())
+ currentSession = e.getSavedSession();
+
+ if(currentFileName != e.getSavedFileName())
+ currentFileName = e.getSavedFileName();
+ }
}
--
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.