Author: paperwing
Date: 2012-04-11 17:01:07 -0700 (Wed, 11 Apr 2012)
New Revision: 28803
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/BundleApp.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/SimpleApp.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/Update.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
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/AppManager.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallNewAppsPanel.java
Log:
Added WebQuerier class used for querying the App Store website for available
apps and searches. A JSON parser library will be needed to parse the
JSON-formatted data returned by the App Store. In process of making App an
abstract class to be extended by subclasses SimpleApp and BundleApp (a form of
polymorphism) in response to code feedback.
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-11 23:52:16 UTC (rev 28802)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/App.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -9,7 +9,7 @@
* This class represents an app, and contains all needed information about the
app such as its name, version,
* authors list, description, and file path (if present).
*/
-public class App {
+public abstract class App {
private String appName;
private String version;
@@ -21,6 +21,8 @@
* The fully-qualified name of the app's class that extends {@link
AbstractCyApp} to be instantiated when the app is loaded.
*/
private String entryClassName;
+
+ private URL appStoreURL;
/**
* A reference to the instance of the app's class that extends {@link
AbstractCyApp}.
@@ -106,6 +108,10 @@
return entryClassName;
}
+ public URL getAppStoreURL() {
+ return appStoreURL;
+ }
+
public AbstractCyApp getAppInstance() {
return appInstance;
}
@@ -150,6 +156,10 @@
this.entryClassName = entryClassName;
}
+ public void setAppStoreURL(URL appStoreURL) {
+ this.appStoreURL = appStoreURL;
+ }
+
public void setAppInstance(AbstractCyApp appInstance) {
this.appInstance = appInstance;
}
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-11 23:52:16 UTC (rev 28802)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -78,7 +78,7 @@
initializeAppsDirectories();
this.appListeners = new HashSet<AppsChangedListener>();
-
+
// Install previously enabled apps
installAppsInDirectory(new File(getInstalledAppsPath()));
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/BundleApp.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/BundleApp.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/BundleApp.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -0,0 +1,5 @@
+package org.cytoscape.app.internal.manager;
+
+public class BundleApp extends App {
+
+}
Property changes on:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/BundleApp.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/SimpleApp.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/SimpleApp.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/SimpleApp.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -0,0 +1,5 @@
+package org.cytoscape.app.internal.manager;
+
+public class SimpleApp extends App {
+
+}
Property changes on:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/SimpleApp.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/Update.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/Update.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/Update.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -0,0 +1,44 @@
+package org.cytoscape.app.internal.net;
+
+import org.cytoscape.app.internal.manager.App;
+
+/**
+ * This class represents a downloadable update for an app.
+ */
+public class Update {
+
+ /** The App object representing the app to be updated by this update */
+ private App app;
+
+ /** Information about the update, such as changes that the update
introduces. */
+ private String updateInformation;
+
+ /** The version of the new updated app */
+ private String updateVersion;
+
+ public App getApp() {
+ return app;
+ }
+
+ public String getUpdateInformation() {
+ return updateInformation;
+ }
+
+ public String getUpdateVersion() {
+ return updateVersion;
+ }
+
+ public void setApp(App app) {
+ this.app = app;
+ }
+
+ public void setUpdateInformation(String updateInformation) {
+ this.updateInformation = updateInformation;
+ }
+
+ public void setUpdateVersion(String updateVersion) {
+ this.updateVersion = updateVersion;
+ }
+
+
+}
Property changes on:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/Update.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -0,0 +1,34 @@
+package org.cytoscape.app.internal.net;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * This class is responsible for querying the Cytoscape App Store web service
to obtain
+ * information about available apps and app updates.
+ */
+public class WebQuerier {
+ private static final String APP_STORE_URL =
"http://nrnb.org/cyappstore/";
+
+ private URL appStoreURL;
+
+ public WebQuerier() {
+
+ // Parse default string URL as an URL object
+ try {
+ appStoreURL = new URL(APP_STORE_URL);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException("Malformed store URL: " +
APP_STORE_URL, e);
+ }
+ }
+
+ public void getAvailableApps() {
+
+ // Open a connection to the app store website
+
+ // Query the app store
+
+ // Obtain the JSON-formatted result from the query
+ String JSONresult;
+ }
+}
Property changes on:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
2012-04-11 23:52:16 UTC (rev 28802)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -1,5 +1,12 @@
package org.cytoscape.app.internal.ui;
+import java.util.Set;
+
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import org.cytoscape.app.internal.manager.App;
+
/**
* This class represents the panel in the App Manager dialog's tab used for
checking for app updates.
* Its UI setup code is generated by the Netbeans 7 GUI builder.
@@ -65,7 +72,10 @@
"App Name", "Version"
}
) {
- boolean[] canEdit = new boolean [] {
+ /** Serial version ID required by the Serializable class */
+ private static final long serialVersionUID =
5428723339522445073L;
+
+ boolean[] canEdit = new boolean [] {
false, false
};
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
2012-04-11 23:52:16 UTC (rev 28802)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -3,6 +3,8 @@
import java.util.HashSet;
import java.util.Set;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import org.cytoscape.app.internal.event.AppsChangedEvent;
@@ -38,11 +40,12 @@
private AppsChangedListener appListener;
public CurrentlyInstalledAppsPanel(AppManager appManager) {
- initComponents();
+ this.appManager = appManager;
+
+ initComponents();
- this.appManager = appManager;
-
setupAppListener();
+ setupDescriptionListener();
populateTable();
}
@@ -290,4 +293,38 @@
appsInstalledCountLabel.setText(String.valueOf(appManager.getInstalledApps().size()));
appsAvailableCountLabel.setText(String.valueOf(appManager.getAvailableApps().size()));
}
+
+ /**
+ * Setup and register a listener to the table to listen for selection
changed events in order to update the
+ * app description box
+ */
+ private void setupDescriptionListener() {
+ appsAvailableTable.getSelectionModel().addListSelectionListener(new
ListSelectionListener() {
+
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ updateDescriptionBox();
+ }
+ });
+ }
+
+ private void updateDescriptionBox() {
+ Set<App> selectedApps = getSelectedApps();
+ int numSelected = selectedApps.size();
+
+ // If no apps are selected, clear the description box
+ if (numSelected == 0) {
+ descriptionTextArea.setText("");
+
+ // If a single app is selected, show its app description
+ } else if (numSelected == 1){
+ App selectedApp = selectedApps.iterator().next();
+
+ String text = "Store URL: " + selectedApp.getAppStoreURL();
+ text += "\n";
+ descriptionTextArea.setText(text);
+ } else {
+ descriptionTextArea.setText("");
+ }
+ }
}
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallNewAppsPanel.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallNewAppsPanel.java
2012-04-11 23:52:16 UTC (rev 28802)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallNewAppsPanel.java
2012-04-12 00:01:07 UTC (rev 28803)
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.table.AbstractTableModel;
@@ -190,6 +191,9 @@
// TODO: Replace System.out.println()
messages with exception or a pop-up message box
System.out.println("Error parsing app:
" + e.getMessage());
+
+ JOptionPane.showMessageDialog(this,
"Error opening app: " + e.getMessage(),
+ "Error", JOptionPane.ERROR_MESSAGE);
} finally {
// Install the app if parsing was
successful
--
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.