Author: paperwing
Date: 2012-04-04 11:59:12 -0700 (Wed, 04 Apr 2012)
New Revision: 28737

Modified:
   
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
   
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/manager/App.java
   
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
   
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
   
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
Log:
Added automatic installation from local directory on startup, AppManager no 
longer copies an app to the installed apps directory if it was already there; 
the following tests on functionality were passed: automatic installation from 
local apps directory, installing an app from an external directory, 
uninstalling an app and moving it to the uninstalled apps directory. Also 
updated dialog UI to put the "install new apps" tab as the first tab.

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
 2012-04-04 18:34:31 UTC (rev 28736)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
 2012-04-04 18:59:12 UTC (rev 28737)
@@ -117,6 +117,10 @@
                                cyApplicationConfigurationServiceRef);
                StartupMostlyFinished startupMostlyFinished = new 
StartupMostlyFinished(cyEventHelperRef);
                
+               // Attempt to instantiate new manager
+               org.cytoscape.app.internal.manager.AppManager appManager = new 
org.cytoscape.app.internal.manager.AppManager(
+                               cyAppAdapter, 
cyApplicationConfigurationServiceRef);
+               
                registerService(bc,cyAppAdapter,CyAppAdapter.class, new 
Properties());
                
                registerService(bc,appLoaderTaskFactory,TaskFactory.class, new 
Properties());

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-04-04 18:34:31 UTC (rev 28736)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
     2012-04-04 18:59:12 UTC (rev 28737)
@@ -58,6 +58,7 @@
 import org.cytoscape.app.internal.ManagerException;
 import org.cytoscape.app.internal.ManagerUtil;
 import org.cytoscape.app.internal.ui.AppManageDialog;
+import org.cytoscape.app.internal.ui.AppManagerDialog;
 import org.cytoscape.application.CyApplicationConfiguration;
 import org.cytoscape.application.CyVersion;
 import org.cytoscape.application.swing.AbstractCyAction;
@@ -152,6 +153,11 @@
        
        @Override
        public void actionPerformed(ActionEvent e) {
+               
+               AppManagerDialog dialog = new AppManagerDialog();
+               dialog.setVisible(true);
+               
+               /*
                AppManageDialog dlg = new AppManageDialog(desktop.getJFrame(), 
bookmarks, this.bookmarksUtil, 
                                this.dialogTaskManager, 
this.appLoaderTaskFactory);
                
@@ -168,6 +174,7 @@
 
                AppManagerInquireTaskFactory _taskFactory = new 
AppManagerInquireTaskFactory(task);
                
this.dialogTaskManager.execute(_taskFactory.createTaskIterator());
+               */
        }
        
        @Override

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/App.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/App.java
 2012-04-04 18:34:31 UTC (rev 28736)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/App.java
 2012-04-04 18:59:12 UTC (rev 28737)
@@ -4,6 +4,7 @@
 import java.net.URL;
 
 import org.cytoscape.app.AbstractCyApp;
+import org.cytoscape.app.internal.AppVersionUtils;
 
 /**
  * This class represents an app, and contains all needed information about the 
app such as its name, version, 
@@ -156,10 +157,17 @@
                this.status = status;
        }
 
+       @Override
+       public String toString() {
+               String result;
+               
+               result = "App: {name:" + appName + ", authors:" + authors + ", 
version:" + version + "}";
+               
+               return result;
+       }
 
 
 
 
 
-
 }

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
  2012-04-04 18:34:31 UTC (rev 28736)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
  2012-04-04 18:59:12 UTC (rev 28737)
@@ -6,6 +6,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.jar.JarFile;
@@ -14,6 +15,7 @@
 import org.cytoscape.app.AbstractCyApp;
 import org.cytoscape.app.CyAppAdapter;
 import org.cytoscape.app.internal.exception.AppCopyException;
+import org.cytoscape.app.internal.exception.AppParsingException;
 import org.cytoscape.app.internal.manager.App.AppStatus;
 import org.cytoscape.application.CyApplicationConfiguration;
 
@@ -22,16 +24,29 @@
  * also provides functionalities for installing and uninstalling apps.
  */
 public class AppManager {
+       /** Only files with these extensions are checked when looking for apps 
in a given subdirectory.
+        */
+       private static final String[] APP_EXTENSIONS = {"jar"};
+       
        /** Installed apps are copied to this subdirectory under the local app 
storage directory. */
-       private static final String INSTALLED_APPS_DIRECTORY_NAME = "Installed";
+       private static final String INSTALLED_APPS_DIRECTORY_NAME = "installed";
        
        /** Uninstalled apps are copied to this subdirectory under the local 
app storage directory. */
-       private static final String UNINSTALLED_APPS_DIRECTORY_NAME = 
"Uninstalled";
-               
+       private static final String UNINSTALLED_APPS_DIRECTORY_NAME = 
"uninstalled";
+       
+       /** This subdirectory in the local Cytoscape storage directory is used 
to store app data, as 
+        * well as installed and uninstalled apps. */
+       private static final String APPS_DIRECTORY_NAME = "apps";
+       
        private Set<App> installedApps;
        private Set<App> toBeUninstalledApps;
        private Set<App> uninstalledApps;
        
+       /** An {@link AppParser} object used to parse File objects and possibly 
URLs into {@link App} objects
+        * into a format we can more easily work with
+        */
+       private AppParser appParser;
+       
        /**
         * {@link CyApplicationConfiguration} service used to obtain the 
directories used to store the apps.
         */
@@ -49,12 +64,39 @@
                installedApps = new HashSet<App>();
                toBeUninstalledApps = new HashSet<App>();
                uninstalledApps = new HashSet<App>();
+               
+               appParser = new AppParser();
+               
+               initializeAppsDirectories();
+               
+               System.out.println("Installed apps path: " + 
getInstalledAppsPath());
+               System.out.println("Uninstalled apps path: " + 
getUninstalledAppsPath());
+               
+               try {
+                       App app = appParser.parseApp(new 
File(getBaseAppPath().getCanonicalPath() + File.separator + 
"CytoscapeTestSimpleApp.jar"));
+                       installApp(app);
+               } catch (AppParsingException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (AppCopyException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               
+               
+               
+               /*
+               installAppsInDirectory(new File(getInstalledAppsPath()));
+               */
        }
        
        /**
         * Attempts to install an app. Makes a copy of the app file and places 
it in the directory 
-        * used to hold all installed and uninstalled apps. Then, the app is 
created by instancing 
-        * its class that extends {@link AbstractCyApp}.
+        * used to hold all installed and uninstalled apps, if it was not 
already present there. Then, the 
+        * app is created by instancing its class that extends {@link 
AbstractCyApp}.
         * 
         * Before the app is installed, it is checked if it contains valid 
packaging by its isAppValidated() method.
         * Apps that have not been validated are ignored.
@@ -75,13 +117,19 @@
                
                // Attempt to copy the app to the directory for installed apps.
                try {
-                       // Uses Apache Commons library; overwrites files with 
the same name.
-                       FileUtils.copyFileToDirectory(app.getAppFile(), new 
File(getInstalledAppsPath()));
+                       File installedAppsDirectory = new 
File(getInstalledAppsPath());
+                       File appFile = app.getAppFile();
                        
-                       // Update the app's path
-                       String fileName = app.getAppFile().getName();
-                       app.setAppFile(new File(getInstalledAppsPath() + 
File.separator + fileName));
-                       
+                       // Only perform the copy if the app was not already in 
the target directory
+                       if 
(!FileUtils.directoryContains(installedAppsDirectory, appFile)) {
+                               
+                               // Uses Apache Commons library; overwrites 
files with the same name.
+                               FileUtils.copyFileToDirectory(appFile, 
installedAppsDirectory);
+                               
+                               // Update the app's path
+                               String fileName = app.getAppFile().getName();
+                               app.setAppFile(new File(getInstalledAppsPath() 
+ File.separator + fileName));
+                       }
                } catch (IOException e) {
                        throw new AppCopyException("Unable to copy file: " + 
e.getMessage());
                }
@@ -195,8 +243,17 @@
         * @return The path of the root directory containing all installed and 
uninstalled apps.
         */
        private File getBaseAppPath() {
+               File baseAppPath = null;
+               
                // TODO: At time of writing, CyApplicationConfiguration always 
returns the home directory for directory location.
-               return 
applicationConfiguration.getConfigurationDirectoryLocation();
+               try {
+                       baseAppPath = new 
File(applicationConfiguration.getConfigurationDirectoryLocation().getCanonicalPath()
 
+                                       + File.separator + APPS_DIRECTORY_NAME);
+               } catch (IOException e) {
+                       throw new RuntimeException("Unabled to obtain canonical 
path for Cytoscape local storage directory: " + e.getMessage());
+               }
+               
+               return baseAppPath;
        }
        
        /**
@@ -222,4 +279,76 @@
                        throw new RuntimeException("Unable to obtain canonical 
path for uninstalled apps directory: " + e.getMessage());
                }
        }
+       
+       private void installAppsInDirectory(File directory) {
+
+               // Obtain all files in the given directory with supported 
extensions, perform a non-recursive search
+               Collection<File> files = FileUtils.listFiles(directory, 
APP_EXTENSIONS, false); 
+               
+               Set<App> parsedApps = new HashSet<App>();
+               
+               App app;
+               for (File potentialApp : files) {
+                       app = null;
+                       try {
+                               app = appParser.parseApp(potentialApp);
+                       } catch (AppParsingException e) {
+                               System.out.println("Failed to parse " + 
potentialApp + ", error: " + e.getMessage());
+                       } finally {
+                               if (app != null) {
+                                       parsedApps.add(app);
+                                       
+                                       System.out.println("App parsed: " + 
app);
+                               }
+                       }
+               }
+               
+               for (App parsedApp : parsedApps) {
+                       try {
+                               installApp(parsedApp);
+                       } catch (AppCopyException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+               }
+               
+               this.installedApps.addAll(parsedApps);
+               
+               for (App installedApp : this.installedApps) {
+                       try {
+                               uninstallApp(installedApp);
+                       } catch (AppCopyException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+               }
+               
+               System.out.println("Number of apps installed from directory: " 
+ parsedApps.size());
+       }
+       
+       /**
+        * Create app storage directories if they don't already exist.
+        */
+       private void initializeAppsDirectories() {
+               boolean created = true;
+               
+               File appDirectory = getBaseAppPath();
+               if (!appDirectory.exists()) {
+                       created = created && appDirectory.mkdir();
+               }
+               
+               File installedDirectory = new File(getInstalledAppsPath());
+               if (!installedDirectory.exists()) {
+                       created = created && installedDirectory.mkdir();
+               }
+               
+               File uninstalledDirectory = new File(getUninstalledAppsPath());
+               if (!uninstalledDirectory.exists()) {
+                       created = created && uninstalledDirectory.mkdir();
+               }
+               
+               if (!created) {
+                       throw new RuntimeException("Failed to create local app 
storage directories.");
+               }
+       }
 }

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
   2012-04-04 18:34:31 UTC (rev 28736)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
   2012-04-04 18:59:12 UTC (rev 28737)
@@ -23,7 +23,7 @@
                App parsedApp = new App();
                
                if (!file.isFile()) {
-                       throw new AppParsingException("Given file is not a 
file.");
+                       throw new AppParsingException("The given file, " + file 
+ ", is not a file.");
                }
                
                // Attempt to parse the file as a jar file

Modified: 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
 2012-04-04 18:34:31 UTC (rev 28736)
+++ 
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
 2012-04-04 18:59:12 UTC (rev 28737)
@@ -4,6 +4,10 @@
  */
 package org.cytoscape.app.internal.ui;
 
+/**
+ *
+ * @author yuedong
+ */
 public class AppManagerDialog extends javax.swing.JFrame {
 
     /**
@@ -24,6 +28,17 @@
 
         jFrame1 = new javax.swing.JFrame();
         jTabbedPane2 = new javax.swing.JTabbedPane();
+        jPanel1 = new javax.swing.JPanel();
+        installFromFileButton = new javax.swing.JButton();
+        installFromURLButton = new javax.swing.JButton();
+        jSeparator1 = new javax.swing.JSeparator();
+        jLabel9 = new javax.swing.JLabel();
+        storeSearchComboBox = new javax.swing.JComboBox();
+        storeSearchButton = new javax.swing.JButton();
+        jLabel1 = new javax.swing.JLabel();
+        jScrollPane1 = new javax.swing.JScrollPane();
+        storeSearchResultsTable = new javax.swing.JTable();
+        installFromStoreButton = new javax.swing.JButton();
         jPanel2 = new javax.swing.JPanel();
         jScrollPane2 = new javax.swing.JScrollPane();
         jTable2 = new javax.swing.JTable();
@@ -33,7 +48,6 @@
         jLabel5 = new javax.swing.JLabel();
         jButton5 = new javax.swing.JButton();
         jButton6 = new javax.swing.JButton();
-        jButton7 = new javax.swing.JButton();
         jComboBox2 = new javax.swing.JComboBox();
         jLabel6 = new javax.swing.JLabel();
         jPanel3 = new javax.swing.JPanel();
@@ -43,17 +57,8 @@
         jButton9 = new javax.swing.JButton();
         jScrollPane4 = new javax.swing.JScrollPane();
         jTable3 = new javax.swing.JTable();
-        jPanel1 = new javax.swing.JPanel();
-        jButton2 = new javax.swing.JButton();
-        jButton3 = new javax.swing.JButton();
-        jSeparator1 = new javax.swing.JSeparator();
-        jLabel9 = new javax.swing.JLabel();
-        jComboBox3 = new javax.swing.JComboBox();
-        jButton10 = new javax.swing.JButton();
-        jLabel1 = new javax.swing.JLabel();
-        jScrollPane1 = new javax.swing.JScrollPane();
-        jTable1 = new javax.swing.JTable();
-        jButton1 = new javax.swing.JButton();
+        jLabel10 = new javax.swing.JLabel();
+        jLabel11 = new javax.swing.JLabel();
 
         org.jdesktop.layout.GroupLayout jFrame1Layout = new 
org.jdesktop.layout.GroupLayout(jFrame1.getContentPane());
         jFrame1.getContentPane().setLayout(jFrame1Layout);
@@ -68,6 +73,114 @@
 
         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
+        installFromFileButton.setText("Install from External File");
+        installFromFileButton.addActionListener(new 
java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                installFromFileButtonActionPerformed(evt);
+            }
+        });
+
+        installFromURLButton.setText("Install from URL");
+
+        jLabel9.setText("Search for Apps from the Web Store:");
+
+        storeSearchComboBox.setEditable(true);
+        storeSearchComboBox.setModel(new javax.swing.DefaultComboBoxModel(new 
String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+
+        storeSearchButton.setText("Search");
+
+        jLabel1.setText("Search Results:");
+
+        storeSearchResultsTable.setModel(new 
javax.swing.table.DefaultTableModel(
+            new Object [][] {
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null}
+            },
+            new String [] {
+                "Name", "Version", "Author", "Description"
+            }
+        ));
+        jScrollPane1.setViewportView(storeSearchResultsTable);
+
+        installFromStoreButton.setText("Install Selected Apps");
+
+        org.jdesktop.layout.GroupLayout jPanel1Layout = new 
org.jdesktop.layout.GroupLayout(jPanel1);
+        jPanel1.setLayout(jPanel1Layout);
+        jPanel1Layout.setHorizontalGroup(
+            
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jPanel1Layout.createSequentialGroup()
+                .addContainerGap()
+                
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(jSeparator1)
+                    .add(org.jdesktop.layout.GroupLayout.TRAILING, 
jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 743, 
Short.MAX_VALUE)
+                    .add(jPanel1Layout.createSequentialGroup()
+                        
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                            .add(installFromFileButton)
+                            .add(installFromStoreButton)
+                            .add(jLabel1)
+                            .add(installFromURLButton)
+                            .add(jLabel9)
+                            .add(jPanel1Layout.createSequentialGroup()
+                                .add(storeSearchComboBox, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 288, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(storeSearchButton)))
+                        .add(0, 0, Short.MAX_VALUE)))
+                .addContainerGap())
+        );
+        jPanel1Layout.setVerticalGroup(
+            
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jPanel1Layout.createSequentialGroup()
+                .addContainerGap()
+                .add(installFromFileButton)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(installFromURLButton)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jSeparator1, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jLabel9)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(storeSearchComboBox, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(storeSearchButton))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jLabel1)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jScrollPane1, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 311, Short.MAX_VALUE)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(installFromStoreButton)
+                .addContainerGap())
+        );
+
+        jTabbedPane2.addTab("Install Additional Apps", jPanel1);
+
         jTable2.setModel(new javax.swing.table.DefaultTableModel(
             new Object [][] {
                 {null, "", null, null, null},
@@ -123,12 +236,10 @@
 
         jLabel5.setText("0");
 
-        jButton5.setText("Install Selected");
+        jButton5.setText("Enable Selected");
 
-        jButton6.setText("Uninstall Selected");
+        jButton6.setText("Disable Selected");
 
-        jButton7.setText("Delete Selected");
-
         jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] 
{ "All", "Item 2", "Item 3", "Item 4" }));
 
         jLabel6.setText("Show:");
@@ -140,32 +251,27 @@
             .add(jPanel2Layout.createSequentialGroup()
                 .addContainerGap()
                 
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(jScrollPane2, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 743, Short.MAX_VALUE)
                     .add(jPanel2Layout.createSequentialGroup()
                         
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                            .add(jScrollPane2, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 743, Short.MAX_VALUE)
                             .add(jPanel2Layout.createSequentialGroup()
-                                
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                                    .add(jPanel2Layout.createSequentialGroup()
-                                        .add(jLabel3)
-                                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                                        .add(jLabel5))
-                                    .add(jPanel2Layout.createSequentialGroup()
-                                        .add(jLabel2)
-                                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                                        .add(jLabel4))
-                                    .add(jPanel2Layout.createSequentialGroup()
-                                        .add(jLabel6)
-                                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                                        .add(jComboBox2, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 165, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
-                                .add(0, 0, Short.MAX_VALUE)))
-                        .addContainerGap())
-                    .add(jPanel2Layout.createSequentialGroup()
-                        .add(jButton5)
-                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                        .add(jButton6)
-                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                        .add(jButton7)
-                        .add(0, 0, Short.MAX_VALUE))))
+                                .add(jLabel3)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(jLabel5))
+                            .add(jPanel2Layout.createSequentialGroup()
+                                .add(jLabel2)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(jLabel4))
+                            .add(jPanel2Layout.createSequentialGroup()
+                                .add(jLabel6)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(jComboBox2, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 165, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                            .add(jPanel2Layout.createSequentialGroup()
+                                .add(jButton5)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(jButton6)))
+                        .add(0, 0, Short.MAX_VALUE)))
+                .addContainerGap())
         );
         jPanel2Layout.setVerticalGroup(
             
jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
@@ -183,12 +289,11 @@
                     .add(jLabel6)
                     .add(jComboBox2, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jScrollPane2, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE)
+                .add(jScrollPane2, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                 
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                     .add(jButton5)
-                    .add(jButton6)
-                    .add(jButton7))
+                    .add(jButton6))
                 .addContainerGap())
         );
 
@@ -198,9 +303,14 @@
 
         jLabel8.setText("0");
 
-        jButton8.setText("Install Selected Updates");
+        jButton8.setText("Install Selected");
+        jButton8.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton8ActionPerformed(evt);
+            }
+        });
 
-        jButton9.setText("Install All Updates");
+        jButton9.setText("Install All");
 
         jTable3.setModel(new javax.swing.table.DefaultTableModel(
             new Object [][] {
@@ -241,6 +351,10 @@
         ));
         jScrollPane4.setViewportView(jTable3);
 
+        jLabel10.setText("Last check for updates:");
+
+        jLabel11.setText("Today, at 6:00 pm");
+
         org.jdesktop.layout.GroupLayout jPanel3Layout = new 
org.jdesktop.layout.GroupLayout(jPanel3);
         jPanel3.setLayout(jPanel3Layout);
         jPanel3Layout.setHorizontalGroup(
@@ -250,15 +364,21 @@
                 
.add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                     .add(jScrollPane4, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 749, Short.MAX_VALUE)
                     .add(jPanel3Layout.createSequentialGroup()
-                        .add(jButton8)
-                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                        .add(jButton9)
-                        .add(0, 0, Short.MAX_VALUE))
-                    .add(jPanel3Layout.createSequentialGroup()
                         .add(jLabel7)
                         
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                         .add(jLabel8)
-                        .addContainerGap())))
+                        .addContainerGap())
+                    .add(jPanel3Layout.createSequentialGroup()
+                        
.add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                            .add(jPanel3Layout.createSequentialGroup()
+                                .add(jButton8)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(jButton9))
+                            .add(jPanel3Layout.createSequentialGroup()
+                                .add(jLabel10)
+                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(jLabel11)))
+                        .add(0, 0, Short.MAX_VALUE))))
         );
         jPanel3Layout.setVerticalGroup(
             
jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
@@ -268,8 +388,12 @@
                     .add(jLabel7)
                     .add(jLabel8))
                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jScrollPane4, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE)
+                
.add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(jLabel10)
+                    .add(jLabel11))
                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jScrollPane4, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 433, Short.MAX_VALUE)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                 
.add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                     .add(jButton8)
                     .add(jButton9))
@@ -278,113 +402,6 @@
 
         jTabbedPane2.addTab("Check for Updates", jPanel3);
 
-        jButton2.setText("Install from External File..");
-
-        jButton3.setText("Install from URL..");
-
-        jLabel9.setText("Search for Apps from the Web Store:");
-
-        jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] 
{ "Item 1", "Item 2", "Item 3", "Item 4" }));
-
-        jButton10.setText("Search");
-
-        jLabel1.setText("Search Results:");
-
-        jTable1.setModel(new javax.swing.table.DefaultTableModel(
-            new Object [][] {
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null},
-                {null, null, null, null}
-            },
-            new String [] {
-                "Name", "Version", "Author", "Description"
-            }
-        ));
-        jScrollPane1.setViewportView(jTable1);
-
-        jButton1.setText("Install Selected Apps");
-
-        org.jdesktop.layout.GroupLayout jPanel1Layout = new 
org.jdesktop.layout.GroupLayout(jPanel1);
-        jPanel1.setLayout(jPanel1Layout);
-        jPanel1Layout.setHorizontalGroup(
-            
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(jPanel1Layout.createSequentialGroup()
-                .addContainerGap()
-                
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                    .add(jSeparator1)
-                    .add(org.jdesktop.layout.GroupLayout.TRAILING, 
jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 743, 
Short.MAX_VALUE)
-                    .add(jPanel1Layout.createSequentialGroup()
-                        
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                            .add(jPanel1Layout.createSequentialGroup()
-                                .add(jButton2)
-                                
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                                .add(jButton3))
-                            .add(jPanel1Layout.createSequentialGroup()
-                                .add(6, 6, 6)
-                                
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                                    .add(jPanel1Layout.createSequentialGroup()
-                                        .add(jComboBox3, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 288, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                                        
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                                        .add(jButton10))
-                                    .add(jLabel9)
-                                    .add(jLabel1)))
-                            .add(jButton1))
-                        .add(0, 0, Short.MAX_VALUE)))
-                .addContainerGap())
-        );
-        jPanel1Layout.setVerticalGroup(
-            
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(jPanel1Layout.createSequentialGroup()
-                .addContainerGap()
-                
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
-                    .add(jButton2)
-                    .add(jButton3))
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jSeparator1, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jLabel9)
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
-                    .add(jComboBox3, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                    .add(jButton10))
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jLabel1)
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jScrollPane1, 
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 406, Short.MAX_VALUE)
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jButton1)
-                .addContainerGap())
-        );
-
-        jTabbedPane2.addTab("Install Additional Apps", jPanel1);
-
         org.jdesktop.layout.GroupLayout layout = new 
org.jdesktop.layout.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
         layout.setHorizontalGroup(
@@ -393,12 +410,20 @@
         );
         layout.setVerticalGroup(
             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(jTabbedPane2)
+            .add(jTabbedPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 
570, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
         );
 
         pack();
     }// </editor-fold>
 
+    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
+        // TODO add your handling code here:
+    }
+
+    private void 
installFromFileButtonActionPerformed(java.awt.event.ActionEvent evt) {
+        // TODO add your handling code here:
+    }
+
     /**
      * @param args the command line arguments
      */
@@ -441,19 +466,18 @@
         });
     }
     // Variables declaration - do not modify
-    private javax.swing.JButton jButton1;
-    private javax.swing.JButton jButton10;
-    private javax.swing.JButton jButton2;
-    private javax.swing.JButton jButton3;
+    private javax.swing.JButton installFromFileButton;
+    private javax.swing.JButton installFromStoreButton;
+    private javax.swing.JButton installFromURLButton;
     private javax.swing.JButton jButton5;
     private javax.swing.JButton jButton6;
-    private javax.swing.JButton jButton7;
     private javax.swing.JButton jButton8;
     private javax.swing.JButton jButton9;
     private javax.swing.JComboBox jComboBox2;
-    private javax.swing.JComboBox jComboBox3;
     private javax.swing.JFrame jFrame1;
     private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel10;
+    private javax.swing.JLabel jLabel11;
     private javax.swing.JLabel jLabel2;
     private javax.swing.JLabel jLabel3;
     private javax.swing.JLabel jLabel4;
@@ -470,8 +494,10 @@
     private javax.swing.JScrollPane jScrollPane4;
     private javax.swing.JSeparator jSeparator1;
     private javax.swing.JTabbedPane jTabbedPane2;
-    private javax.swing.JTable jTable1;
     private javax.swing.JTable jTable2;
     private javax.swing.JTable jTable3;
+    private javax.swing.JButton storeSearchButton;
+    private javax.swing.JComboBox storeSearchComboBox;
+    private javax.swing.JTable storeSearchResultsTable;
     // End of variables declaration
 }

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