/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.bridgedb.cytoscape.internal.task; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import static org.bridgedb.cytoscape.internal.BridgeDbApp.mapSrcAttrIDTypes; import org.bridgedb.cytoscape.internal.IDMapperClientManager; import org.bridgedb.cytoscape.internal.ui.BridgeDbDialog; import org.cytoscape.application.CyApplicationManager; import org.cytoscape.application.swing.CySwingApplication; import org.cytoscape.model.CyNetworkManager; import org.cytoscape.util.swing.FileUtil; import org.cytoscape.util.swing.OpenBrowser; import org.cytoscape.work.AbstractTask; import org.cytoscape.work.ObservableTask; import org.cytoscape.work.TaskManager; import org.cytoscape.work.TaskMonitor; import org.cytoscape.work.Tunable; /** * * @author gaoj */ public class OpenMainDialogTask extends AbstractTask implements ObservableTask { @Tunable(description="Application name (optional) for application-specific ID mapping resources" + " -- do not specify if use the globel resources", context="nogui") public String appName = null; private final CyApplicationManager cyApplicationManager; private final CyNetworkManager cnm; private final CySwingApplication swingApp; private final TaskManager taskManager; private final OpenBrowser openBrowser; private final FileUtil fileUtil; private BridgeDbDialog dialog; private String error; public OpenMainDialogTask(CyApplicationManager cyApplicationManager, CyNetworkManager cnm, CySwingApplication swingApp, TaskManager taskManager, OpenBrowser openBrowser, FileUtil fileUtil) { this.cyApplicationManager = cyApplicationManager; this.cnm = cnm; this.swingApp = swingApp; this.taskManager = taskManager; this.openBrowser = openBrowser; this.fileUtil = fileUtil; this.error = null; } @Override public void cancel() { if (dialog!=null) { dialog.setVisible(false); dialog.dispose(); } } @Override public void run(TaskMonitor taskMonitor) throws Exception { taskMonitor.setTitle("BridgeDb ID Mapping"); try { if (cnm.getNetworkSet().isEmpty()) { error = "No networks in the session."; taskMonitor.showMessage(TaskMonitor.Level.ERROR, error); SwingUtilities.invokeLater(new Runnable() { public void run() { JOptionPane.showMessageDialog(swingApp.getJFrame(), error, "error", JOptionPane.ERROR_MESSAGE); } }); return; } taskMonitor.setStatusMessage("Initializing..."); BridgeDbDialog dialog = new BridgeDbDialog(swingApp.getJFrame(), cyApplicationManager, cnm, taskManager, openBrowser, fileUtil, IDMapperClientManager.getIDMapperClientManager(appName), false); dialog.setLocationRelativeTo(swingApp.getJFrame()); dialog.setMapSrcAttrIDTypes(mapSrcAttrIDTypes); dialog.setVisible(true); mapSrcAttrIDTypes = dialog.getMapSrcAttrIDTypes(); taskMonitor.setProgress(1.00); } catch (Exception e) { taskMonitor.showMessage(TaskMonitor.Level.ERROR, "Failed to open BridgeDb main dialog."); taskMonitor.setProgress(1.00); e.printStackTrace(); } } @Override public String getResults(Class type) { return error; } }