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.