Author: paperwing
Date: 2012-04-09 12:31:49 -0700 (Mon, 09 Apr 2012)
New Revision: 28769
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppEvent.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppListener.java
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/AppManagerAction.java
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/CyAppAdapterImpl.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/swing/main/AppManagerDialog.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CheckForUpdatesPanel.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CurrentlyInstalledAppsPanel.java
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/InstallNewAppsPanel.java
Log:
Installed apps now show up in the table on the "currently installed apps" tab,
updated CyAppAdapterImpl to reflect recent Cytoscape refactoring involving
vizmapper, added event classes so that the panels containing the tables can
listen for app events in order to update and populate their tables
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/AppManagerAction.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/AppManagerAction.java
2012-04-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/AppManagerAction.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -5,6 +5,7 @@
import org.cytoscape.app.internal.swing.main.AppManagerDialog;
import org.cytoscape.application.swing.AbstractCyAction;
import org.cytoscape.application.swing.CySwingApplication;
+import org.cytoscape.app.internal.manager.AppManager;
public class AppManagerAction extends AbstractCyAction {
@@ -16,18 +17,23 @@
*/
private CySwingApplication swingApplication;
- public AppManagerAction(CySwingApplication swingApplication) {
+ private AppManager appManager;
+
+ public AppManagerAction(AppManager appManager, CySwingApplication
swingApplication) {
super("App Manager2");
setPreferredMenu("Apps");
setMenuGravity(1.0f);
+ this.appManager = appManager;
this.swingApplication = swingApplication;
+
+ System.out.println("AppManager instance: " + appManager);
}
@Override
public void actionPerformed(ActionEvent event) {
- AppManagerDialog appManagerDialog = new AppManagerDialog(null,
swingApplication.getJFrame(), true);
+ AppManagerDialog appManagerDialog = new
AppManagerDialog(appManager, swingApplication.getJFrame(), true);
}
}
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-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -121,19 +121,20 @@
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());
registerAllServices(bc,appManagerAction, new Properties());
+ // Attempt to instantiate new manager
+ org.cytoscape.app.internal.manager.AppManager appManager = new
org.cytoscape.app.internal.manager.AppManager(
+ cyAppAdapter,
cyApplicationConfigurationServiceRef);
+ registerService(bc, appManager,
org.cytoscape.app.internal.manager.AppManager.class, new Properties());
+
// AbstractCyAction implementation for updated app manager
- org.cytoscape.app.internal.AppManagerAction appManagerAction2 =
new org.cytoscape.app.internal.AppManagerAction(cySwingApplicationRef);
- //registerService(bc, appManagerAction2,
AbstractCyAction.class, new Properties());
- //registerService(bc, appManagerAction2, AbstractAction.class,
new Properties());
+ org.cytoscape.app.internal.AppManagerAction appManagerAction2 =
new org.cytoscape.app.internal.AppManagerAction(appManager,
cySwingApplicationRef);;
registerService(bc, appManagerAction2, CyAction.class, new
Properties());
}
}
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyAppAdapterImpl.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyAppAdapterImpl.java
2012-04-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/CyAppAdapterImpl.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -3,6 +3,8 @@
import java.util.Properties;
+import org.cytoscape.app.AbstractCyApp;
+import org.cytoscape.app.CyAppAdapter;
import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.application.CyVersion;
import org.cytoscape.application.swing.CyAction;
@@ -32,10 +34,8 @@
import org.cytoscape.model.CyTableManager;
import org.cytoscape.model.events.AboutToRemoveEdgesEvent;
import org.cytoscape.model.subnetwork.CyRootNetworkManager;
-import org.cytoscape.app.AbstractCyApp;
-import org.cytoscape.app.CyAppAdapter;
-import org.cytoscape.property.SimpleCyProperty;
import org.cytoscape.property.CyProperty;
+import org.cytoscape.property.SimpleCyProperty;
import org.cytoscape.property.bookmark.BookmarksUtil;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.session.CySessionManager;
@@ -54,7 +54,6 @@
import org.cytoscape.view.vizmap.VisualMappingManager;
import org.cytoscape.view.vizmap.VisualStyleFactory;
import org.cytoscape.view.vizmap.events.VisualStyleAboutToBeRemovedEvent;
-import org.cytoscape.view.vizmap.gui.AbstractVisualPropertyDependency;
import org.cytoscape.view.vizmap.gui.editor.AbstractVisualPropertyEditor;
import org.cytoscape.view.vizmap.gui.event.LexiconStateChangedEvent;
import org.cytoscape.work.Task;
@@ -143,7 +142,6 @@
private AbstractGUITunableHandler abstractGUITunableHandler;
private AbstractLayoutAlgorithm abstractLayout;
private AbstractFunction abstractFunction;
- private AbstractVisualPropertyDependency
abstractVisualPropertyDependency;
private AbstractVisualPropertyEditor abstractVisualPropertyEditor;
private LexiconStateChangedEvent lexiconStateChangedEvent;
private NetworkImportWebServiceClient networkImportWebServiceClient;
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppEvent.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppEvent.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppEvent.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -0,0 +1,24 @@
+package org.cytoscape.app.internal.event;
+
+import org.cytoscape.app.internal.manager.App;
+import org.cytoscape.app.internal.manager.AppManager;
+import org.cytoscape.event.AbstractCyEvent;
+
+public final class AppEvent {
+
+ private AppManager source;
+ private App app;
+
+ public AppEvent(AppManager source, App app) {
+ this.source = source;
+ this.app = app;
+ }
+
+ public AppManager getSource() {
+ return source;
+ }
+
+ public App getApp() {
+ return app;
+ }
+}
Property changes on:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppEvent.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppListener.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppListener.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppListener.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -0,0 +1,8 @@
+package org.cytoscape.app.internal.event;
+
+public interface AppListener {
+
+ public void appInstalled(AppEvent event);
+
+ public void appUninstalled(AppEvent event);
+}
Property changes on:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/event/AppListener.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
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-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/App.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -44,14 +44,31 @@
*/
private boolean officialNameObtained;
+ /**
+ * Whether or not the app is a simple app as opposed to an OSGi
bundle-based app.
+ */
+ private boolean isSimpleApp;
+
private AppStatus status;
/**
* An enumeration that indicates the status of a given app, such as
whether it is installed or uninstalled.
*/
public enum AppStatus{
- INSTALLED,
- TO_BE_UNINSTALLED,
+ INSTALLED("Installed"),
+ TO_BE_UNINSTALLED("Uninstall on Restart"),
+ UNINSTALLED("Uninstalled");
+
+ String readableStatus;
+
+ private AppStatus(String readableStatus) {
+ this.readableStatus = readableStatus;
+ }
+
+ @Override
+ public String toString() {
+ return readableStatus;
+ }
}
public App() {
@@ -109,6 +126,10 @@
return officialNameObtained;
}
+ public boolean isSimpleApp() {
+ return isSimpleApp;
+ }
+
public AppStatus getStatus() {
return status;
}
@@ -153,6 +174,10 @@
this.officialNameObtained = officialNameObtained;
}
+ public void setSimpleApp(boolean isSimpleApp) {
+ this.isSimpleApp = isSimpleApp;
+ }
+
public void setStatus(AppStatus status) {
this.status = status;
}
@@ -170,4 +195,6 @@
+
+
}
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-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -14,6 +14,8 @@
import org.apache.commons.io.FileUtils;
import org.cytoscape.app.AbstractCyApp;
import org.cytoscape.app.CyAppAdapter;
+import org.cytoscape.app.internal.event.AppEvent;
+import org.cytoscape.app.internal.event.AppListener;
import org.cytoscape.app.internal.exception.AppCopyException;
import org.cytoscape.app.internal.exception.AppParsingException;
import org.cytoscape.app.internal.manager.App.AppStatus;
@@ -42,6 +44,8 @@
private Set<App> toBeUninstalledApps;
private Set<App> uninstalledApps;
+ private Set<AppListener> appListeners;
+
/** 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
*/
@@ -72,6 +76,7 @@
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);
@@ -85,14 +90,17 @@
// TODO Auto-generated catch block
e.printStackTrace();
}
+ */
+ this.appListeners = new HashSet<AppListener>();
-
- /*
installAppsInDirectory(new File(getInstalledAppsPath()));
- */
}
+ public AppParser getAppParser() {
+ return appParser;
+ }
+
/**
* 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, if it was not
already present there. Then, the
@@ -178,6 +186,12 @@
app.setStatus(AppStatus.INSTALLED);
installedApps.add(app);
+
+ // Let the listeners know that an app has been installed
+ for (AppListener appListener : appListeners) {
+ AppEvent appEvent = new AppEvent(this, app);
+ appListener.appInstalled(appEvent);
+ }
}
/**
@@ -224,6 +238,12 @@
installedApps.remove(app);
toBeUninstalledApps.add(app);
+
+ // Let the listeners know that an app has been
uninstalled
+ for (AppListener appListener : appListeners) {
+ AppEvent appEvent = new AppEvent(this,
app);
+ appListener.appUninstalled(appEvent);
+ }
}
} catch (IOException e) {
throw new RuntimeException("Unable to obtain path: " +
e.getMessage());
@@ -314,15 +334,6 @@
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());
}
@@ -351,4 +362,16 @@
throw new RuntimeException("Failed to create local app
storage directories.");
}
}
+
+ public void addAppListener(AppListener appListener) {
+ appListeners.add(appListener);
+ }
+
+ public void removeAppListener(AppListener appListener) {
+ appListeners.remove(appListener);
+ }
+
+ public void installAppsFromDirectory() {
+ installAppsInDirectory(new File(getInstalledAppsPath()));
+ }
}
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-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -63,6 +63,7 @@
parsedApp.setEntryClassName(entryClassName);
parsedApp.setJarURL(jarURL);
parsedApp.setAppValidated(true);
+ parsedApp.setSimpleApp(true);
return parsedApp;
}
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/AppManagerDialog.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/AppManagerDialog.java
2012-04-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/AppManagerDialog.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -5,18 +5,18 @@
public class AppManagerDialog extends javax.swing.JDialog {
- private CheckForUpdatesPanel checkForUpdatesPanel1;
- private CurrentlyInstalledAppsPanel currentlyInstalledAppsPanel1;
- private InstallNewAppsPanel installNewAppsPanel1;
+ private CheckForUpdatesPanel checkForUpdatesPanel;
+ private CurrentlyInstalledAppsPanel currentlyInstalledAppsPanel;
+ private InstallNewAppsPanel installNewAppsPanel;
private javax.swing.JTabbedPane mainTabbedPane;
private AppManager appManager;
public AppManagerDialog(AppManager appManager, java.awt.Frame parent,
boolean modal) {
super(parent, modal);
- initComponents();
this.appManager = appManager;
+ initComponents();
this.setLocationRelativeTo(parent);
this.setVisible(true);
@@ -28,15 +28,15 @@
private void initComponents() {
mainTabbedPane = new javax.swing.JTabbedPane();
- installNewAppsPanel1 = new InstallNewAppsPanel();
- currentlyInstalledAppsPanel1 = new CurrentlyInstalledAppsPanel();
- checkForUpdatesPanel1 = new CheckForUpdatesPanel();
+ installNewAppsPanel = new InstallNewAppsPanel();
+ currentlyInstalledAppsPanel = new
CurrentlyInstalledAppsPanel(appManager);
+ checkForUpdatesPanel = new CheckForUpdatesPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- mainTabbedPane.addTab("Install New Apps", installNewAppsPanel1);
- mainTabbedPane.addTab("Currently Installed",
currentlyInstalledAppsPanel1);
- mainTabbedPane.addTab("Check for Updates", checkForUpdatesPanel1);
+ mainTabbedPane.addTab("Install New Apps", installNewAppsPanel);
+ mainTabbedPane.addTab("Currently Installed",
currentlyInstalledAppsPanel);
+ mainTabbedPane.addTab("Check for Updates", checkForUpdatesPanel);
org.jdesktop.layout.GroupLayout layout = new
org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CheckForUpdatesPanel.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CheckForUpdatesPanel.java
2012-04-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CheckForUpdatesPanel.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -45,42 +45,20 @@
});
updatesTable.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}
- },
+ new Object [][] {},
new String [] {
"App Name", "Version", "Update Description"
}
- ));
+ ) {
+ boolean[] canEdit = new boolean [] {
+ false, false, false
+ };
+
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return canEdit [columnIndex];
+ }
+ });
+
updatesScrollPane.setViewportView(updatesTable);
lastCheckForUpdatesLabel.setText("Last check for updates:");
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CurrentlyInstalledAppsPanel.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CurrentlyInstalledAppsPanel.java
2012-04-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/CurrentlyInstalledAppsPanel.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -1,5 +1,12 @@
package org.cytoscape.app.internal.swing.main;
+import javax.swing.table.DefaultTableModel;
+
+import org.cytoscape.app.internal.event.AppEvent;
+import org.cytoscape.app.internal.event.AppListener;
+import org.cytoscape.app.internal.manager.App;
+import org.cytoscape.app.internal.manager.AppManager;
+
public class CurrentlyInstalledAppsPanel extends javax.swing.JPanel {
private javax.swing.JLabel appsAvailableCountLabel;
@@ -13,8 +20,16 @@
private javax.swing.JComboBox showTypeComboxBox;
private javax.swing.JLabel showTypeLabel;
- public CurrentlyInstalledAppsPanel() {
+ private AppManager appManager;
+ private AppListener appListener;
+
+ public CurrentlyInstalledAppsPanel(AppManager appManager) {
initComponents();
+
+ this.appManager = appManager;
+
+ setupAppListener();
+ populateTable();
}
private void initComponents() {
@@ -31,50 +46,19 @@
showTypeLabel = new javax.swing.JLabel();
appsAvailableTable.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, null, null, null, null},
- {null, 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 Object [][] {},
new String [] {
- "Name", "Version", "Author", "Description", "Status"
+ "App", "Name", "Version", "Author", "Description", "Status"
}
) {
- boolean[] canEdit = new boolean [] {
- false, false, false, false, false
- };
+ private static final long serialVersionUID =
572679933790969414L;
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return canEdit [columnIndex];
+ public boolean isCellEditable(int rowIndex, int
columnIndex) {
+ return false;
}
});
+ appsAvailableTable.removeColumn(appsAvailableTable.getColumn("App"));
+
jScrollPane2.setViewportView(appsAvailableTable);
appsInstalledLabel.setText("Number of Apps Installed:");
@@ -99,7 +83,7 @@
}
});
- showTypeComboxBox.setModel(new javax.swing.DefaultComboBoxModel(new
String[] { "All", "Item 2", "Item 3", "Item 4" }));
+ showTypeComboxBox.setModel(new javax.swing.DefaultComboBoxModel(new
String[] { "All", "Installed", "Uninstalled"}));
showTypeComboxBox.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
showTypeComboxBoxActionPerformed(evt);
@@ -173,4 +157,73 @@
private void showTypeComboxBoxActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
}
+
+ private void setupAppListener() {
+ appListener = new AppListener() {
+
+ @Override
+ public void appInstalled(AppEvent event) {
+
+ // Prepare to add a new row containing the
app's data to the table
+ DefaultTableModel tableModel =
(DefaultTableModel) appsAvailableTable.getModel();
+
+ App app = event.getApp();
+ tableModel.addRow(new Object[]{
+ app,
+ app.getAppName(),
+ app.getVersion(),
+ app.getAuthors(),
+ app.getDescription(),
+ app.getStatus()
+ });
+
+ updateLabels();
+ }
+
+ @Override
+ public void appUninstalled(AppEvent event) {
+
+ // Prepare to remove the row containing the app
from the table
+ DefaultTableModel tableModel =
(DefaultTableModel) appsAvailableTable.getModel();
+
+ App app = event.getApp();
+ int rowToBeRemoved = -1;
+ for (int rowIndex = 0; rowIndex <
tableModel.getRowCount(); rowIndex++) {
+ if (tableModel.getValueAt(rowIndex, 0)
== app) {
+ rowToBeRemoved = rowIndex;
+ }
+ }
+
+ tableModel.removeRow(rowToBeRemoved);
+
+ updateLabels();
+ }
+ };
+
+ appManager.addAppListener(appListener);
+ }
+
+ private void populateTable() {
+ System.out.println("populateTable() call, installed apps: " +
appManager.getInstalledApps().size());
+
+ for (App app : appManager.getInstalledApps()) {
+ DefaultTableModel tableModel = (DefaultTableModel)
appsAvailableTable.getModel();
+
+ tableModel.addRow(new Object[]{
+ app,
+ app.getAppName(),
+ app.getVersion(),
+ app.getAuthors(),
+ app.getDescription(),
+ app.getStatus()
+ });
+ }
+
+ updateLabels();
+ }
+
+ private void updateLabels() {
+
appsInstalledCountLabel.setText(String.valueOf(appManager.getInstalledApps().size()));
+
appsAvailableCountLabel.setText(String.valueOf(appManager.getInstalledApps().size()));
+ }
}
Modified:
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/InstallNewAppsPanel.java
===================================================================
---
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/InstallNewAppsPanel.java
2012-04-09 18:53:44 UTC (rev 28768)
+++
csplugins/trunk/toronto/yuedong/app_manager/impl/app-impl/src/main/java/org/cytoscape/app/internal/swing/main/InstallNewAppsPanel.java
2012-04-09 19:31:49 UTC (rev 28769)
@@ -127,42 +127,20 @@
};
resultsTable.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 Object [][] {},
new String [] {
"Name", "Version", "Author", "Description"
}
- ));
+ ) {
+ boolean[] canEdit = new boolean [] {
+ false, false, false, false
+ };
+
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return canEdit [columnIndex];
+ }
+ });
+
resultsScrollPane.setViewportView(resultsTable);
installSelectedButton.setText("Install Selected Apps");
--
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.