Skip to content

Commit

Permalink
CYTOSCAPE-12464 #comment StartupConfig now waits for the AppsFinished…
Browse files Browse the repository at this point in the history
…StartingEvent before loading a session.
  • Loading branch information
chrtannus committed Oct 31, 2018
1 parent d18c17d commit 8741a23
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,10 @@ public void handleEvent(SessionAboutToBeLoadedEvent evt) {
@Override
public void handleEvent(SessionLoadedEvent evt) {
loadingSession = false;

if (mainPanel == null)
return;

mainPanel.clearAnnotationButtonSelection();

final Set<CyNetworkView> allViews = serviceRegistrar.getService(CyNetworkViewManager.class).getNetworkViewSet();
Expand Down
4 changes: 4 additions & 0 deletions gui-cmdline-parser-impl/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@
<groupId>org.cytoscape</groupId>
<artifactId>core-task-api</artifactId>
</dependency>
<dependency>
<groupId>org.cytoscape</groupId>
<artifactId>app-api</artifactId>
</dependency>
</dependencies>


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.cytoscape.cmdline.gui.internal;


import org.cytoscape.app.event.AppsFinishedStartingListener;
/*
* #%L
* Cytoscape GUI Command Line Parser Impl (gui-cmdline-parser-impl)
Expand Down Expand Up @@ -54,13 +56,13 @@ public void start(BundleContext bc) {
LoadNetworkFileTaskFactory networkFileLoader = getService(bc, LoadNetworkFileTaskFactory.class);
LoadNetworkURLTaskFactory networkURLLoader = getService(bc, LoadNetworkURLTaskFactory.class);
LoadVizmapFileTaskFactory visualStylesLoader = getService(bc, LoadVizmapFileTaskFactory.class);
TaskManager <?,?> taskManager = getService(bc, TaskManager.class);
CyServiceRegistrar registrar = getService(bc, CyServiceRegistrar.class);

CyProperty<Properties> props = (CyProperty<Properties>)getService(bc, CyProperty.class, "(cyPropertyName=cytoscape3.props)");

StartupConfig sc = new StartupConfig(props.getProperties(),streamUtil, loadSession, networkFileLoader, networkURLLoader, visualStylesLoader, taskManager, registrar);
CyProperty<Properties> props = (CyProperty<Properties>) getService(bc, CyProperty.class, "(cyPropertyName=cytoscape3.props)");

StartupConfig sc = new StartupConfig(props.getProperties(), streamUtil, loadSession, networkFileLoader,
networkURLLoader, visualStylesLoader, registrar);
registerService(bc, sc, AppsFinishedStartingListener.class);

Parser p = new Parser(args.getArgs(), cyShutdown, cyVersion, sc,props.getProperties());
sc.start();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.cytoscape.app.event.AppsFinishedStartingEvent;
import org.cytoscape.app.event.AppsFinishedStartingListener;
import org.cytoscape.application.CyUserLog;
import org.cytoscape.io.util.StreamUtil;
import org.cytoscape.property.CyProperty;
Expand Down Expand Up @@ -50,7 +52,7 @@
* #L%
*/

public class StartupConfig {
public class StartupConfig implements AppsFinishedStartingListener {

private static final Logger logger = LoggerFactory.getLogger(CyUserLog.NAME);

Expand All @@ -62,14 +64,14 @@ public class StartupConfig {
private LoadNetworkFileTaskFactory networkFileLoader;
private LoadNetworkURLTaskFactory networkURLLoader;
private LoadVizmapFileTaskFactory visualStylesLoader;
private final TaskManager taskManager;

private final CyServiceRegistrar registrar;

private File sessionName;
private ArrayList<File> networkFiles;
private ArrayList<URL> networkURLs;
private ArrayList<File> vizmapFiles;
private ArrayList<TaskIterator> taskIteratorList;

public StartupConfig(
Properties globalProps,
Expand All @@ -78,7 +80,6 @@ public StartupConfig(
LoadNetworkFileTaskFactory networkFileLoader,
LoadNetworkURLTaskFactory networkURLLoader,
LoadVizmapFileTaskFactory visualStylesLoader,
TaskManager taskManager,
CyServiceRegistrar registrar
) {
this.globalProps = globalProps;
Expand All @@ -87,14 +88,32 @@ public StartupConfig(
this.networkFileLoader = networkFileLoader;
this.networkURLLoader = networkURLLoader;
this.visualStylesLoader = visualStylesLoader;
this.taskManager = taskManager;

this.registrar = registrar;
networkFiles= new ArrayList<>();
networkURLs = new ArrayList<>();
vizmapFiles = new ArrayList<>();
taskIteratorList = new ArrayList<>();
}

@Override
public void handleEvent(AppsFinishedStartingEvent evt) {
// We should only load sessions after Cytoscape and apps have been initialized!
if (!taskIteratorList.isEmpty()) {
Task initTask = new DummyTask();
TaskIterator taskIterator = new TaskIterator(taskIteratorList.size(), initTask);

for (int i = taskIteratorList.size() - 1; i >= 0; i--) {
TaskIterator ti = taskIteratorList.get(i);
taskIterator.insertTasksAfter(initTask, ti);
}

taskIteratorList.clear();

TaskManager <?,?> taskManager = registrar.getService(TaskManager.class);
taskManager.execute(taskIterator);
}
}

public void setProperties(String[] potentialProps) {
Properties argProps = new Properties();

Expand Down Expand Up @@ -222,11 +241,8 @@ public void start() {
return;

// Since we've set command line args we presumably
// don't want to see the welcome screen, so we
// disable it here.
globalProps.setProperty("tempHideWelcomeScreen","true");

ArrayList<TaskIterator> taskIteratorList = new ArrayList<>();
// don't want to see the welcome screen, so we disable it here.
globalProps.setProperty("tempHideWelcomeScreen", "true");

if (sessionName != null) {
taskIteratorList.add(loadSession.createTaskIterator(sessionName));
Expand All @@ -239,16 +255,6 @@ public void start() {
for (File vizmap : vizmapFiles)
taskIteratorList.add(visualStylesLoader.createTaskIterator(vizmap));
}

Task initTask = new DummyTask();
TaskIterator taskIterator = new TaskIterator(taskIteratorList.size(), initTask);
for (int i= taskIteratorList.size()-1; i>= 0 ; i--){
TaskIterator ti = taskIteratorList.get(i);
taskIterator.insertTasksAfter(initTask, ti);
}

taskManager.execute(taskIterator);

}

private class DummyTask extends AbstractTask{
Expand Down

0 comments on commit 8741a23

Please sign in to comment.