Author: paperwing
Date: 2012-05-22 14:35:35 -0700 (Tue, 22 May 2012)
New Revision: 29322

Modified:
   
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
   
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
Log:
App downloading is now done inside a Task object (on a separate thread) so the 
UI is kept responsive while apps are downloaded and installed

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
     2012-05-22 21:20:34 UTC (rev 29321)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
     2012-05-22 21:35:35 UTC (rev 29322)
@@ -65,7 +65,7 @@
        public void actionPerformed(ActionEvent event) {
                                
                // Create and display the App Manager dialog
-               AppManagerDialog appManagerDialog = new 
AppManagerDialog(appManager, fileUtil, taskManager, 
swingApplication.getJFrame(), true);
+               AppManagerDialog appManagerDialog = new 
AppManagerDialog(appManager, fileUtil, taskManager, 
swingApplication.getJFrame(), false);
        }
 
 }

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
    2012-05-22 21:20:34 UTC (rev 29321)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
    2012-05-22 21:35:35 UTC (rev 29322)
@@ -86,8 +86,8 @@
         this.parent = parent;
        initComponents();
         
-               taskManager.execute(new TaskIterator(new Task(){
-
+               taskManager.execute(new TaskIterator(new Task() {
+                       
                        // Obtain information for all available apps, then 
append tag information
                        @Override
                        public void run(TaskMonitor taskMonitor) throws 
Exception {
@@ -347,35 +347,53 @@
     }
     
     private void 
installSelectedButtonActionPerformed(java.awt.event.ActionEvent evt) {          
                                            
-        Set<WebApp> selectedApps = getSelectedApps();
-        WebQuerier webQuerier = appManager.getWebQuerier();
+        final Set<WebApp> selectedApps = getSelectedApps();
+        final WebQuerier webQuerier = appManager.getWebQuerier();
         
-        for (WebApp webApp : selectedApps) {
-               try {
-                       System.out.println("Download path: " + 
appManager.getDownloadedAppsPath());
+        System.out.println("Download path: " + 
appManager.getDownloadedAppsPath());
+               
+               taskManager.execute(new TaskIterator(new Task() {
+
+                       @Override
+                       public void run(TaskMonitor taskMonitor) throws 
Exception {
+                               taskMonitor.setTitle("Installing App from App 
Store");
                                
-                       // Download app
-                       File appFile = webQuerier.downloadApp(webApp.getName(), 
new File(appManager.getDownloadedAppsPath()));
+                               double progress = 0;
+                               double progressIncrement = 1.0 / 
selectedApps.size();
                                
-                       // Parse app
-                       App parsedApp = 
appManager.getAppParser().parseApp(appFile);
-                       
-                       // Install app
-                               appManager.installApp(parsedApp);
-                       
-                       } catch (AppDownloadException e) {
-                               JOptionPane.showMessageDialog(parent, "Error 
downloading app: " + e.getMessage(),
-                              "Error", JOptionPane.ERROR_MESSAGE);
-                       } catch (AppParsingException e) {
-                               JOptionPane.showMessageDialog(parent, "Error 
parsing app: " + e.getMessage(),
-                              "Error", JOptionPane.ERROR_MESSAGE);
-                       } catch (AppInstallException e) {
-                               JOptionPane.showMessageDialog(parent, "Error 
installing app: " + e.getMessage(),
-                              "Error", JOptionPane.ERROR_MESSAGE);
+                               for (WebApp webApp : selectedApps) {
+                                       
+                                       
taskMonitor.setStatusMessage("Installing app: " + webApp.getFullName());
+                                       
+                                       // Download app
+                               File appFile = 
webQuerier.downloadApp(webApp.getName(), new 
File(appManager.getDownloadedAppsPath()));
+                                       
+                               if (appFile != null) {
+                                       // Parse app
+                                       App parsedApp = 
appManager.getAppParser().parseApp(appFile);
+                                       
+                                       // Install app
+                                               
appManager.installApp(parsedApp);
+                               } else {
+                                       // Log error: no download links were 
found for app
+                                       System.out.println("Unable to find 
download url for: " + webApp.getFullName());
+                               }
+                               
+                               progress += progressIncrement;
+                               taskMonitor.setProgress(progress);
+                               }
+                               
+                               
                        }
-        }
-    }     
 
+                       @Override
+                       public void cancel() {
+                       }
+                       
+               }));
+    }
+ 
+
     private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) {
         // TODO add your handling code here:
     }

-- 
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.

Reply via email to