2017-08-04 2 views
0

Je développe une application sur Cytoscape qui est un programme de visualisation de données. J'ai besoin de faire quelque chose quand j'ai cliqué sur un bouton avec l'utilisation de la fabrique de tâches. J'ai implémenté ma classe de tâches et mes classes de tâches. Je l'ai enregistré dans la partie actionperformed mais cela n'a pas fonctionné. Quand je cours le code sur la console il n'y avait aucun message d'erreur.Comment utiliser l'approche Tâche Factory avec un bouton

Comment puis-je enregistrer la fabrique de tâches sur un bouton?

Voici la partie de mon code qui est lié avec ceci:

En classe MyControlPanel:

this.provoImportButton.setText("Import"); 
    this.provoImportButton.setVerticalAlignment(1); 
    this.provoImportButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      provoImportCore.importFile(); 
     } 
    }); 

En classe provoImportCore:

public void importFile(){ 
    String path = getWholePath(); 
    ExtractEdgesNodesTaskFactory extractEdgesNodesTaskFactory = new ExtractEdgesNodesTaskFactory(adapter,path); 
    adapter.getCyServiceRegistrar().registerService(extractEdgesNodesTaskFactory,TaskFactory.class,new Properties()); 
} 

classe ExtractEdgesNodesTaskFactory:

public class ExtractEdgesNodesTaskFactory extends AbstractTaskFactory { 

private CySwingAppAdapter adapter; 
private String path; 

public ExtractEdgesNodesTaskFactory(CySwingAppAdapter adapter, String path) { 
    this.path = path; 
    this.adapter = adapter; 
} 

public TaskIterator createTaskIterator() { 
    return new TaskIterator(new ExtractEdgesNodesTask(adapter,path)); 
} 

}

classe ExtractEdgesNodesTask:

public class ExtractEdgesNodesTask extends AbstractTask{ 
private CySwingAppAdapter adapter; 
private String path; 

public ExtractEdgesNodesTask(CySwingAppAdapter adapter, String path){ 
    super(); 
    this.path =path; 
    this.adapter = adapter; 
} 

public void run(TaskMonitor taskMonitor) { 
    taskMonitor.setStatusMessage("Extracting Edges and Nodes ..."); 
    try { 
     Process process = Runtime.getRuntime().exec(path); 
    } catch (Exception es) { 
     JOptionPane.showMessageDialog(this.adapter.getCySwingApplication().getJFrame(), 
       "The file that you choosed are not valid." , 
       "Error!", JOptionPane.INFORMATION_MESSAGE); 
     es.printStackTrace(System.err); 
    } 
} 

public String getPath() { 
    return path; 
} 

public void setPath(String path) { 
    this.path = path; 
} 

}

Répondre