Author: paperwing
Date: 2012-08-27 15:27:20 -0700 (Mon, 27 Aug 2012)
New Revision: 30280
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSitesManager.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/ManageDownloadSitesDialog.java
Log:
Clicking on the manage sites button now displays the manage sites dialog, added
methods for populating the table with the list of sites, and manipulating the
list of sites
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -14,6 +14,7 @@
import org.cytoscape.app.internal.net.server.ScreenOriginsBeforeResponse;
import
org.cytoscape.app.internal.net.server.AddAccessControlAllowOriginHeaderAfterResponse;
import org.cytoscape.app.internal.net.server.OriginOptionsBeforeResponse;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager;
import org.cytoscape.app.swing.CySwingAppAdapter;
import org.cytoscape.application.CyVersion;
import org.cytoscape.session.CySessionManager;
@@ -369,9 +370,13 @@
registerService(bc, appManager, AppManager.class, new
Properties());
appManager.setFeaturesService(featuresService);
+ final DownloadSitesManager downloadSitesManager = new
DownloadSitesManager(cyPropertyRef);
+
// AbstractCyAction implementation for updated app manager
- AppManagerAction appManagerAction = new
AppManagerAction(appManager, cySwingApplicationRef,
- fileUtilServiceRef, dialogTaskManagerRef,
cyServiceRegistrarRef);
+ AppManagerAction appManagerAction = new AppManagerAction(
+ appManager, downloadSitesManager,
+ cySwingApplicationRef, fileUtilServiceRef,
+ dialogTaskManagerRef, cyServiceRegistrarRef);
registerService(bc, appManagerAction, CyAction.class, new
Properties());
// Start local server that reports app installation status to
the app store when requested,
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/action/AppManagerAction.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -11,6 +11,7 @@
import org.cytoscape.app.internal.net.WebApp;
import org.cytoscape.app.internal.net.WebQuerier;
import org.cytoscape.app.internal.ui.AppManagerDialog;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager;
import org.cytoscape.application.events.CyShutdownEvent;
import org.cytoscape.application.events.CyShutdownListener;
import org.cytoscape.application.swing.AbstractCyAction;
@@ -38,6 +39,11 @@
private AppManager appManager;
/**
+ * A reference to the {@link DownloadSitesManager}
+ */
+ private DownloadSitesManager downloadSitesManager;
+
+ /**
* A reference to the {@link FileUtil} OSGi service used for displaying
a filechooser dialog
*/
private FileUtil fileUtil;
@@ -59,13 +65,18 @@
* Creates and sets up the AbstractCyAction, placing an item into the
menu.
*/
public AppManagerAction(AppManager appManager,
- CySwingApplication swingApplication, FileUtil fileUtil,
TaskManager taskManager, CyServiceRegistrar serviceRegistrar) {
+ DownloadSitesManager downloadSitesManager,
+ CySwingApplication swingApplication,
+ FileUtil fileUtil,
+ TaskManager taskManager,
+ CyServiceRegistrar serviceRegistrar) {
super("App Manager");
setPreferredMenu("Apps");
setMenuGravity(1.0f);
this.appManager = appManager;
+ this.downloadSitesManager = downloadSitesManager;
this.swingApplication = swingApplication;
this.fileUtil = fileUtil;
this.taskManager = taskManager;
@@ -98,7 +109,7 @@
// Create and display the App Manager dialog
if (appManagerDialog == null) {
- appManagerDialog = new AppManagerDialog(appManager,
fileUtil, taskManager, swingApplication.getJFrame(), false);
+ appManagerDialog = new AppManagerDialog(appManager,
downloadSitesManager, fileUtil, taskManager, swingApplication.getJFrame(),
false);
} else {
appManagerDialog.pack();
appManagerDialog.setVisible(true);
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -748,6 +748,9 @@
// TODO: Perhaps modify this method to do the check with a
given app store
// as a parameter, instead of all app stores
+ if (appsByUrl.get(DEFAULT_APP_STORE_URL) == null) {
+ return;
+ }
// Find the set of all available apps
Set<WebApp> allWebApps = new HashSet<WebApp>(
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -3,6 +3,8 @@
import org.cytoscape.app.internal.event.AppsChangedEvent;
import org.cytoscape.app.internal.event.AppsChangedListener;
import org.cytoscape.app.internal.manager.AppManager;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager;
+import org.cytoscape.app.internal.ui.downloadsites.ManageDownloadSitesDialog;
import org.cytoscape.util.swing.FileUtil;
import org.cytoscape.work.TaskManager;
@@ -15,12 +17,20 @@
private CurrentlyInstalledAppsPanel currentlyInstalledAppsPanel1;
private InstallFromStorePanel installNewAppsPanel1;
private javax.swing.JTabbedPane mainTabbedPane;
+
+ private ManageDownloadSitesDialog manageDownloadSitesDialog;
+ private DownloadSitesManager downloadSitesManager;
private AppManager appManager;
private FileUtil fileUtil;
private TaskManager taskManager;
- public AppManagerDialog(AppManager appManager, FileUtil fileUtil,
TaskManager taskManager, java.awt.Frame parent, boolean modal) {
+ public AppManagerDialog(AppManager appManager,
+ DownloadSitesManager downloadSitesManager,
+ FileUtil fileUtil,
+ TaskManager taskManager,
+ java.awt.Frame parent,
+ boolean modal) {
super(parent, modal);
this.appManager = appManager;
@@ -30,13 +40,18 @@
this.setLocationRelativeTo(parent);
this.setVisible(true);
+
+ // Create new manage download sites dialog
+ manageDownloadSitesDialog = new ManageDownloadSitesDialog(
+ parent, false, downloadSitesManager);
+ manageDownloadSitesDialog.setLocationRelativeTo(this);
}
private void initComponents() {
mainTabbedPane = new javax.swing.JTabbedPane();
installNewAppsPanel1 = new InstallFromStorePanel(appManager, fileUtil,
taskManager, this);
currentlyInstalledAppsPanel1 = new
CurrentlyInstalledAppsPanel(appManager);
- checkForUpdatesPanel1 = new CheckForUpdatesPanel(appManager,
taskManager);
+ checkForUpdatesPanel1 = new CheckForUpdatesPanel(appManager,
taskManager, this);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("App Manager");
@@ -68,4 +83,10 @@
public void changeTab(int index) {
mainTabbedPane.setSelectedIndex(index);
}
+
+ public void showManageDownloadSitesDialog() {
+ manageDownloadSitesDialog.setLocationRelativeTo(this);
+ manageDownloadSitesDialog.pack();
+ manageDownloadSitesDialog.setVisible(true);
+ }
}
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -1,5 +1,6 @@
package org.cytoscape.app.internal.ui;
+import java.awt.Container;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.Calendar;
@@ -45,16 +46,20 @@
private javax.swing.JScrollPane updatesScrollPane;
private javax.swing.JTable updatesTable;
+ Container parent;
+
private UpdateManager updateManager;
private AppManager appManager;
private TaskManager taskManager;
- public CheckForUpdatesPanel(AppManager appManager, TaskManager
taskManager) {
+ public CheckForUpdatesPanel(AppManager appManager, TaskManager
taskManager, Container parent) {
this.updateManager = new UpdateManager();
this.appManager = appManager;
this.taskManager = taskManager;
initComponents();
+
+ this.parent = parent;
}
private void initComponents() {
@@ -69,6 +74,7 @@
descriptionLabel = new javax.swing.JLabel();
descriptionScrollPane = new javax.swing.JScrollPane();
descriptionTextArea = new javax.swing.JTextArea();
+ manageUpdateSites = new javax.swing.JButton();
updatesAvailableLabel.setText("0 updates available.");
@@ -118,52 +124,62 @@
descriptionTextArea.setFocusable(false);
descriptionScrollPane.setViewportView(descriptionTextArea);
- org.jdesktop.layout.GroupLayout layout = new
org.jdesktop.layout.GroupLayout(this);
+ manageUpdateSites.setText("Manage Update Sites");
+ manageUpdateSites.addActionListener(new
java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ manageUpdateSitesActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
- layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(layout.createSequentialGroup()
+
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
.addContainerGap()
-
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(layout.createSequentialGroup()
-
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(layout.createSequentialGroup()
- .add(updatesAvailableLabel)
-
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(lastCheckForUpdatesLabel)
-
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(updateCheckTimeLabel)
- .add(0, 0, Short.MAX_VALUE))
- .add(updatesScrollPane,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 652, Short.MAX_VALUE)
- .add(descriptionScrollPane))
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(updatesAvailableLabel)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(lastCheckForUpdatesLabel)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(updateCheckTimeLabel)
+ .addGap(0, 0, Short.MAX_VALUE))
+ .addComponent(updatesScrollPane,
javax.swing.GroupLayout.DEFAULT_SIZE, 652, Short.MAX_VALUE)
+ .addComponent(descriptionScrollPane))
.addContainerGap())
- .add(layout.createSequentialGroup()
-
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(layout.createSequentialGroup()
- .add(installSelectedButton)
-
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(installAllButton))
- .add(descriptionLabel))
- .add(0, 0, Short.MAX_VALUE))))
+ .addGroup(layout.createSequentialGroup()
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(installSelectedButton)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(installAllButton)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(manageUpdateSites))
+ .addComponent(descriptionLabel))
+ .addGap(0, 219, Short.MAX_VALUE))))
);
layout.setVerticalGroup(
- layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(layout.createSequentialGroup()
+
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
.addContainerGap()
-
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
- .add(updatesAvailableLabel)
- .add(lastCheckForUpdatesLabel)
- .add(updateCheckTimeLabel))
- .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(updatesScrollPane,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 327, Short.MAX_VALUE)
- .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(descriptionLabel,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 16,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(descriptionScrollPane,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
- .add(installSelectedButton)
- .add(installAllButton))
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(updatesAvailableLabel)
+ .addComponent(lastCheckForUpdatesLabel)
+ .addComponent(updateCheckTimeLabel))
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(updatesScrollPane,
javax.swing.GroupLayout.DEFAULT_SIZE, 327, Short.MAX_VALUE)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(descriptionLabel,
javax.swing.GroupLayout.PREFERRED_SIZE, 16,
javax.swing.GroupLayout.PREFERRED_SIZE)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(descriptionScrollPane,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(installSelectedButton)
+ .addComponent(installAllButton)
+ .addComponent(manageUpdateSites))
.addContainerGap())
);
@@ -291,6 +307,12 @@
}));
}
+ private void manageUpdateSitesActionPerformed(java.awt.event.ActionEvent
evt) {
+ if (parent instanceof AppManagerDialog) {
+ ((AppManagerDialog) parent).showManageDownloadSitesDialog();
+ }
+ }
+
private void repopulateUpdatesTable() {
SwingUtilities.invokeLater(new Runnable() {
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CurrentlyInstalledAppsPanel.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -1,5 +1,6 @@
package org.cytoscape.app.internal.ui;
+import java.awt.Container;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.HashSet;
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -167,7 +167,6 @@
}
});
-
}
@Override
@@ -295,7 +294,12 @@
}
});
- manageSitesButton.setText("Manage...");
+ manageSitesButton.setText("Manage Sites...");
+ manageSitesButton.addActionListener(new
java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ manageSitesButtonActionPerformed(evt);
+ }
+ });
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
@@ -838,6 +842,8 @@
}
private void manageSitesButtonActionPerformed(java.awt.event.ActionEvent
evt) {
- // TODO add your handling code here:
+ if (parent instanceof AppManagerDialog) {
+ ((AppManagerDialog) parent).showManageDownloadSitesDialog();
+ }
}
}
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSitesManager.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSitesManager.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSitesManager.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -113,6 +113,34 @@
return downloadSites;
}
+ public void
addDownloadSitesChangedListener(DownloadSitesChangedListener listener) {
+ this.downloadSitesChangedListeners.add(listener);
+ }
+
+ public void
removeDownloadSitesChangedListener(DownloadSitesChangedListener listener) {
+ this.downloadSitesChangedListeners.remove(listener);
+ }
+
+ public void addDownloadSite(DownloadSite downloadSite) {
+ this.downloadSites.add(downloadSite);
+
+ notifyDownloadSitesChanged();
+ }
+
+ public void removeDownloadSite(DownloadSite downloadSite) {
+ this.downloadSites.remove(downloadSite);
+
+ notifyDownloadSitesChanged();
+ }
+
+ private void notifyDownloadSitesChanged() {
+ DownloadSitesChangedEvent event = new
DownloadSitesChangedEvent(this);
+
+ for (DownloadSitesChangedListener listener :
this.downloadSitesChangedListeners) {
+ listener.downloadSitesChanged(event);
+ }
+ }
+
public class DownloadSitesChangedEvent {
private DownloadSitesManager source;
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/ManageDownloadSitesDialog.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/ManageDownloadSitesDialog.java
2012-08-27 21:32:38 UTC (rev 30279)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/ManageDownloadSitesDialog.java
2012-08-27 22:27:20 UTC (rev 30280)
@@ -1,8 +1,28 @@
package org.cytoscape.app.internal.ui.downloadsites;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import javax.swing.SwingUtilities;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.DefaultTableModel;
+
+import org.cytoscape.app.internal.manager.App;
+import org.cytoscape.app.internal.net.Update;
+import
org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager.DownloadSitesChangedEvent;
+import
org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager.DownloadSitesChangedListener;
+
public class ManageDownloadSitesDialog extends javax.swing.JDialog {
- private javax.swing.JButton addSiteButton;
+ private static final long serialVersionUID = -5333266960245441850L;
+
+ private javax.swing.JButton addSiteButton;
+ private javax.swing.JButton closeButton;
private javax.swing.JButton editSiteButton;
private javax.swing.JButton removeSiteButton;
private javax.swing.JButton resetToDefaultButton;
@@ -13,24 +33,35 @@
private javax.swing.JScrollPane sitesScrollPane;
private javax.swing.JTable sitesTable;
- /**
- * Creates new form ManageDownloadSitesDialog
- */
- public ManageDownloadSitesDialog(java.awt.Frame parent, boolean modal) {
+ private DownloadSitesManager downloadSitesManager;
+ private DownloadSitesChangedListener downloadSitesChangedListener;
+
+
+ public ManageDownloadSitesDialog(java.awt.Frame parent,
+ boolean modal, DownloadSitesManager downloadSitesManager) {
super(parent, modal);
+
+ this.downloadSitesManager = downloadSitesManager;
+
initComponents();
+
+ this.downloadSitesChangedListener = new DownloadSitesChangedListener()
{
+
+ @Override
+ public void downloadSitesChanged(
+ DownloadSitesChangedEvent
downloadSitesChangedEvent) {
+
+ repopulateTable();
+ }
+ };
+
+ downloadSitesManager.addDownloadSitesChangedListener(
+ downloadSitesChangedListener);
}
- /**
- * This method is called from within the constructor to initialize the
form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
- sitesScrollPane = new javax.swing.JScrollPane();
+ sitesScrollPane = new javax.swing.JScrollPane();
sitesTable = new javax.swing.JTable();
addSiteButton = new javax.swing.JButton();
editSiteButton = new javax.swing.JButton();
@@ -40,9 +71,10 @@
siteUrlLabel = new javax.swing.JLabel();
siteUrlTextField = new javax.swing.JTextField();
resetToDefaultButton = new javax.swing.JButton();
+ closeButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setTitle("Download Sites");
+ setTitle("Manage Download Sites");
sitesTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
@@ -52,7 +84,9 @@
"Name", "URL"
}
) {
- boolean[] canEdit = new boolean [] {
+ private static final long serialVersionUID =
-6222850661401678737L;
+
+ boolean[] canEdit = new boolean [] {
false, false
};
@@ -62,8 +96,8 @@
});
sitesTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
sitesScrollPane.setViewportView(sitesTable);
- sitesTable.getColumnModel().getColumn(0).setPreferredWidth(60);
- sitesTable.getColumnModel().getColumn(1).setPreferredWidth(170);
+ sitesTable.getColumnModel().getColumn(0).setPreferredWidth(50);
+ sitesTable.getColumnModel().getColumn(1).setPreferredWidth(185);
addSiteButton.setText("Add");
addSiteButton.addActionListener(new java.awt.event.ActionListener() {
@@ -96,8 +130,15 @@
}
});
- resetToDefaultButton.setText("Reset All to Default");
+ resetToDefaultButton.setText("Reset to Default");
+ closeButton.setText("Close");
+ closeButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ closeButtonActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
@@ -105,46 +146,48 @@
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(sitesScrollPane)
+ .addComponent(sitesScrollPane,
javax.swing.GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
+ .addGap(0, 0, Short.MAX_VALUE)
+ .addComponent(resetToDefaultButton)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(closeButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(addSiteButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(editSiteButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(removeSiteButton)
-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(resetToDefaultButton))
+ .addGap(0, 0, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
-
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(siteUrlLabel)
-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(siteUrlTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 258,
javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createSequentialGroup()
- .addComponent(siteNameLabel)
-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(siteNameTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 139,
javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addGap(0, 0, Short.MAX_VALUE)))
+ .addComponent(siteNameLabel)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(siteNameTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 119,
javax.swing.GroupLayout.PREFERRED_SIZE)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(siteUrlLabel)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(siteUrlTextField)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addComponent(sitesScrollPane,
javax.swing.GroupLayout.PREFERRED_SIZE, 183,
javax.swing.GroupLayout.PREFERRED_SIZE)
-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(siteNameLabel)
- .addComponent(siteNameTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(siteNameTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(siteUrlLabel)
+ .addComponent(siteUrlTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(siteUrlLabel)
- .addComponent(siteUrlTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE,
false)
- .addComponent(addSiteButton,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
+ .addComponent(addSiteButton)
.addComponent(editSiteButton,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
- .addComponent(removeSiteButton,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
+ .addComponent(removeSiteButton,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(sitesScrollPane,
javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE)
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(closeButton)
.addComponent(resetToDefaultButton))
.addContainerGap())
);
@@ -165,56 +208,110 @@
}
private void siteUrlTextFieldActionPerformed(java.awt.event.ActionEvent
evt) {
- // TODO add your handling code here:
}
+
+ private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {
+ this.dispose();
+ }
+
+ private void repopulateTable() {
+
+ final DefaultTableModel tableModel = new DefaultTableModel(
+ new Object [][] {
+ },
+ new String [] {
+ "Name", "URL"
+ }
+ ) {
+ private static final long serialVersionUID =
-1712121531730828785L;
+
+ boolean[] canEdit = new boolean [] {
+ false, false
+ };
+
+ public boolean isCellEditable(int rowIndex, int
columnIndex) {
+ return canEdit [columnIndex];
+ }
+ };
+
+ List<DownloadSite> downloadSites = new LinkedList<DownloadSite>(
+ downloadSitesManager.getDownloadSites());
+
+ // Sort by name
+ Collections.sort(downloadSites, new Comparator<DownloadSite>() {
+ @Override
+ public int compare(DownloadSite o1, DownloadSite o2) {
+ return
o1.getSiteName().compareTo(o2.getSiteName());
+ }
+ });
+
+ for (DownloadSite downloadSite : downloadSites) {
+ tableModel.addRow(new Object[]{
+ downloadSite,
+ downloadSite.getSiteUrl()
+ });
+ }
+
+ SwingUtilities.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ sitesTable.setModel(tableModel);
+ }
+ });
+ }
+
/**
- * @param args the command line arguments
+ * Setup and register a listener to the table to listen for selection
changed
+ * events in order to update the text fields
*/
- public static void main(String args[]) {
- /*
- * Set the Nimbus look and feel
- */
- //<editor-fold defaultstate="collapsed" desc=" Look and feel setting
code (optional) ">
- /*
- * If Nimbus (introduced in Java SE 6) is not available, stay with the
- * default look and feel. For details see
- *
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
- */
- try {
- for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
-
java.util.logging.Logger.getLogger(ManageDownloadSitesDialog.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
- } catch (InstantiationException ex) {
-
java.util.logging.Logger.getLogger(ManageDownloadSitesDialog.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
- } catch (IllegalAccessException ex) {
-
java.util.logging.Logger.getLogger(ManageDownloadSitesDialog.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
- } catch (javax.swing.UnsupportedLookAndFeelException ex) {
-
java.util.logging.Logger.getLogger(ManageDownloadSitesDialog.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
+ private void setupDescriptionListener() {
+ sitesTable.getSelectionModel().addListSelectionListener(new
ListSelectionListener() {
+
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ if (!e.getValueIsAdjusting()) {
+ updateTextFields();
+ }
+ }
+ });
+ }
+
+ private void updateTextFields() {
+ DownloadSite selectedSite = getSelectedSite();
+
+ if (selectedSite != null) {
+ siteNameTextField.setText(selectedSite.getSiteName());
+ siteUrlTextField.setText(selectedSite.getSiteUrl());
+ }
+
+ }
+
+ private String getEnteredUrl() {
+ return siteUrlTextField.getText();
+ }
+
+ private String getEnteredSiteName() {
+ return siteNameTextField.getText();
+ }
+
+ private DownloadSite getSelectedSite() {
+ Set<DownloadSite> selectedSites = new HashSet<DownloadSite>();
+ int[] selectedRows = sitesTable.getSelectedRows();
+
+ for (int index = 0; index < selectedRows.length; index++) {
+
+ DownloadSite downloadSite = (DownloadSite)
sitesTable.getModel().getValueAt(
+
sitesTable.convertRowIndexToModel(selectedRows[index]), 0);
+
+ selectedSites.add(downloadSite);
}
- //</editor-fold>
-
- /*
- * Create and display the dialog
- */
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- public void run() {
- ManageDownloadSitesDialog dialog = new
ManageDownloadSitesDialog(new javax.swing.JFrame(), true);
- dialog.addWindowListener(new java.awt.event.WindowAdapter() {
-
- @Override
- public void windowClosing(java.awt.event.WindowEvent e) {
- System.exit(0);
- }
- });
- dialog.setVisible(true);
- }
- });
+
+ if (selectedSites.size() > 0) {
+ return selectedSites.iterator().next();
+ } else {
+ return null;
+ }
}
}
\ No newline at end of file
--
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.