Author: paperwing
Date: 2012-08-31 08:53:59 -0700 (Fri, 31 Aug 2012)
New Revision: 30303
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/net/UpdateManager.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/InstallFromStorePanel.java
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSite.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:
refs #1272 Now has support for saving/loading set of app store sites, choosing
between them, and using them for updates
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -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.DownloadSite;
import org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager;
import org.cytoscape.app.swing.CySwingAppAdapter;
import org.cytoscape.application.CyVersion;
@@ -396,6 +397,12 @@
// Fire event "start up mostly finished". This seems to close
the Cytoscape splash screen and show the actual UI.
cyEventHelperRef.fireEvent(new CyStartEvent(this));
+
+ /*
+ for (DownloadSite site : WebQuerier.DEFAULT_DOWNLOAD_SITES) {
+ System.out.println(site.getSiteName());
+ }
+ */
}
}
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/UpdateManager.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/UpdateManager.java
2012-08-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/UpdateManager.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -39,7 +39,7 @@
this.updatesChangedListeners = new
HashSet<UpdatesChangedListener>();
this.updates = null;
- lastUpdateCheckTime =
Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
+ lastUpdateCheckTime = null;
}
/**
@@ -53,10 +53,10 @@
this.updates = potentialUpdates;
- fireUpdatesChangedEvent();
-
// Update last update check time
lastUpdateCheckTime =
Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
+
+ fireUpdatesChangedEvent();
}
public Set<Update> getUpdates() {
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/net/WebQuerier.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -30,6 +30,7 @@
import org.cytoscape.app.internal.manager.AppParser.ChecksumException;
import org.cytoscape.app.internal.net.WebApp.Release;
import org.cytoscape.app.internal.net.WebQuerier.AppTag;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSite;
import org.cytoscape.app.internal.util.DebugHelper;
import org.cytoscape.io.util.StreamUtil;
import org.json.JSONArray;
@@ -44,6 +45,20 @@
*/
public class WebQuerier {
+ public static final List<DownloadSite> DEFAULT_DOWNLOAD_SITES = new
LinkedList<DownloadSite>();
+
+ static {
+ DownloadSite site = new DownloadSite();
+ site.setSiteName("Cytoscape App Store Beta");
+ site.setSiteUrl("http://apps3.nrnb.org/");
+ DEFAULT_DOWNLOAD_SITES.add(site);
+
+ site = new DownloadSite();
+ site.setSiteName("Cytoscape App Store");
+ site.setSiteUrl("http://apps.cytoscape.org/");
+ DEFAULT_DOWNLOAD_SITES.add(site);
+ }
+
private static final String DEFAULT_APP_STORE_URL =
"http://apps3.nrnb.org/";
private static final String REQUEST_JSON_HEADER_KEY =
"X-Requested-With";
@@ -226,7 +241,6 @@
currentAppStoreUrl = url;
}
-
if (appsByUrl.get(currentAppStoreUrl) == null) {
appsByUrl.put(currentAppStoreUrl, null);
}
@@ -511,7 +525,7 @@
long bytesTransferred;
do {
- bytesTransferred =
fileChannel.transferFrom(readableByteChannel, currentDownloadPosition, 1 << 20);
+ bytesTransferred =
fileChannel.transferFrom(readableByteChannel, currentDownloadPosition, 1 << 24);
// System.out.println("Position: " +
currentDownloadPosition + " new bytes: " + bytesTransferred);
currentDownloadPosition +=
bytesTransferred;
} while (bytesTransferred > 0);
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/AppManagerDialog.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -34,6 +34,7 @@
super(parent, modal);
this.appManager = appManager;
+ this.downloadSitesManager = downloadSitesManager;
this.fileUtil = fileUtil;
this.taskManager = taskManager;
initComponents();
@@ -49,9 +50,9 @@
private void initComponents() {
mainTabbedPane = new javax.swing.JTabbedPane();
- installNewAppsPanel1 = new InstallFromStorePanel(appManager, fileUtil,
taskManager, this);
+ installNewAppsPanel1 = new InstallFromStorePanel(appManager,
downloadSitesManager, fileUtil, taskManager, this);
currentlyInstalledAppsPanel1 = new
CurrentlyInstalledAppsPanel(appManager);
- checkForUpdatesPanel1 = new CheckForUpdatesPanel(appManager,
taskManager, this);
+ checkForUpdatesPanel1 = new CheckForUpdatesPanel(appManager,
downloadSitesManager, taskManager, this);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("App Manager");
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/CheckForUpdatesPanel.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -20,6 +20,11 @@
import org.cytoscape.app.internal.manager.AppManager;
import org.cytoscape.app.internal.net.Update;
import org.cytoscape.app.internal.net.UpdateManager;
+import org.cytoscape.app.internal.net.WebApp;
+import org.cytoscape.app.internal.net.WebQuerier;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSite;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager;
+import org.cytoscape.app.internal.ui.downloadsites.ManageDownloadSitesDialog;
import org.cytoscape.work.Task;
import org.cytoscape.work.TaskIterator;
import org.cytoscape.work.TaskManager;
@@ -50,11 +55,16 @@
private UpdateManager updateManager;
private AppManager appManager;
+ private DownloadSitesManager downloadSitesManager;
private TaskManager taskManager;
- public CheckForUpdatesPanel(AppManager appManager, TaskManager
taskManager, Container parent) {
+ public CheckForUpdatesPanel(AppManager appManager,
+ DownloadSitesManager downloadSitesManager,
+ TaskManager taskManager, Container parent) {
+
this.updateManager = new UpdateManager();
this.appManager = appManager;
+ this.downloadSitesManager = downloadSitesManager;
this.taskManager = taskManager;
initComponents();
@@ -221,7 +231,7 @@
@Override
public void componentShown(ComponentEvent e) {
- Set<App> appsToCheckUpdates = new HashSet<App>();
+ final Set<App> appsToCheckUpdates = new HashSet<App>();
for (App app : appManager.getApps()) {
if (app.getStatus() == AppStatus.INSTALLED
@@ -230,11 +240,55 @@
}
}
-
updateManager.checkForUpdates(appManager.getWebQuerier(),
- appsToCheckUpdates,
- appManager);
+ taskManager.execute(new TaskIterator(new Task() {
+
+ @Override
+ public void run(TaskMonitor
taskMonitor) throws Exception {
+
+ taskMonitor.setTitle("Checking
for updates");
+
+ WebQuerier webQuerier =
appManager.getWebQuerier();
+
+ String siteName, siteUrl;
+
+ double progress = 0.0;
+
+// System.out.println("dlsite mgr:
" + downloadSitesManager);
+// System.out.println("dlsite
mgr's sites: " + downloadSitesManager.getDownloadSites());
+
+ // Obtain apps listing from
each site if not done so
+ for (DownloadSite downloadSite
: downloadSitesManager.getDownloadSites()) {
+
+ siteName =
downloadSite.getSiteName();
+ siteUrl =
downloadSite.getSiteUrl();
+
+
taskMonitor.setStatusMessage("Obtaining apps listing from "
+ +
siteName + "(" + siteUrl + ") ...");
+
taskMonitor.setProgress(progress);
+
+ progress += 1.0 /
(downloadSitesManager.getDownloadSites().size() + 1);
+
+
webQuerier.setCurrentAppStoreUrl(siteUrl);
+ Set<WebApp> webApps =
webQuerier.getAllApps();
+ }
+
+
taskMonitor.setStatusMessage("Reading listings for new versions");
+ taskMonitor.setProgress(0.98);
// We're 98% done.
+
+
updateManager.checkForUpdates(appManager.getWebQuerier(),
+ appsToCheckUpdates,
+ appManager);
+ }
+
+ @Override
+ public void cancel() {
+ // TODO Auto-generated method
stub
+
+ }
+ }));
- }
+
+ }
});
setupDescriptionListener();
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/InstallFromStorePanel.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -20,6 +20,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import java.util.Vector;
import javax.swing.ComboBoxEditor;
import javax.swing.DefaultComboBoxModel;
@@ -49,6 +50,10 @@
import org.cytoscape.app.internal.net.WebApp;
import org.cytoscape.app.internal.net.WebQuerier;
import org.cytoscape.app.internal.net.WebQuerier.AppTag;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSite;
+import org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager;
+import
org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager.DownloadSitesChangedEvent;
+import
org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager.DownloadSitesChangedListener;
import org.cytoscape.app.internal.util.DebugHelper;
import org.cytoscape.util.swing.FileChooserFilter;
import org.cytoscape.util.swing.FileUtil;
@@ -88,6 +93,7 @@
private JFileChooser fileChooser;
private AppManager appManager;
+ private DownloadSitesManager downloadSitesManager;
private FileUtil fileUtil;
private TaskManager taskManager;
private Container parent;
@@ -97,8 +103,11 @@
private Set<WebApp> resultsTreeApps;
- public InstallFromStorePanel(final AppManager appManager, FileUtil
fileUtil, TaskManager taskManager, Container parent) {
+ public InstallFromStorePanel(final AppManager appManager,
+ DownloadSitesManager downloadSitesManager,
+ FileUtil fileUtil, TaskManager taskManager, Container parent) {
this.appManager = appManager;
+ this.downloadSitesManager = downloadSitesManager;
this.fileUtil = fileUtil;
this.taskManager = taskManager;
this.parent = parent;
@@ -122,6 +131,7 @@
});
setupTextFieldListener();
+ setupDownloadSitesChangedListener();
queryForApps();
@@ -140,6 +150,29 @@
});
}
+ private void setupDownloadSitesChangedListener() {
+
+ downloadSitesManager.addDownloadSitesChangedListener(new
DownloadSitesChangedListener() {
+
+ @Override
+ public void downloadSitesChanged(
+ DownloadSitesChangedEvent
downloadSitesChangedEvent) {
+
+ final DefaultComboBoxModel defaultComboBoxModel
= new DefaultComboBoxModel(
+ new
Vector<DownloadSite>(downloadSitesManager.getDownloadSites()));
+
+ SwingUtilities.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+
downloadSiteComboBox.setModel(defaultComboBoxModel);
+ }
+ });
+
+ }
+ });
+ }
+
// Queries the currently set app store url for available apps.
private void queryForApps() {
taskManager.execute(new TaskIterator(new Task() {
@@ -150,7 +183,8 @@
WebQuerier webQuerier =
appManager.getWebQuerier();
taskMonitor.setTitle("Getting available apps");
- taskMonitor.setStatusMessage("Obtaining apps
from: " + webQuerier.getCurrentAppStoreUrl());
+ taskMonitor.setStatusMessage("Obtaining apps
from: "
+ +
webQuerier.getCurrentAppStoreUrl());
Set<WebApp> availableApps =
webQuerier.getAllApps();
@@ -269,7 +303,6 @@
downloadSiteLabel.setText("Download Site:");
- downloadSiteComboBox.setEditable(true);
downloadSiteComboBox.setModel(new javax.swing.DefaultComboBoxModel(new
String[] { "http://apps3.nrnb.org/", "http://apps.cytoscape.org/" }));
downloadSiteComboBox.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(java.awt.event.ItemEvent evt) {
Modified:
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSite.java
===================================================================
---
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSite.java
2012-08-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSite.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -12,7 +12,7 @@
/** The site's url.
*/
- private String siteUrl;
+ private String siteUrl;
public DownloadSite() {
this.siteName = "";
@@ -39,4 +39,18 @@
public String toString() {
return this.siteName;
}
+
+ /**
+ * Returns true if the given site has same name and Url.
+ * @param downloadSite Other site
+ * @return <code>true</code> if other site has same name and Url,
<code>false</code> otherwise.
+ */
+ public boolean sameSiteAs(DownloadSite downloadSite) {
+ if (downloadSite.siteName.equals(this.siteName)
+ && downloadSite.siteUrl.equals(this.siteUrl)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
}
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/DownloadSitesManager.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -1,6 +1,7 @@
package org.cytoscape.app.internal.ui.downloadsites;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
@@ -75,6 +76,42 @@
}
}
+ // Remove extra entries
+ boolean isExtraKey;
+
+ Set<Object> keysToRemove = new HashSet<Object>();
+
+ for (Object key : cyProperty.getProperties().keySet()) {
+
+ if (key instanceof String) {
+ String keyString = (String) key;
+
+ siteNumber = 0;
+ isExtraKey = false;
+
+ try {
+ if
(keyString.startsWith(DOWNLOAD_SITE_NAME_KEY_PREFIX)) {
+ siteNumber =
Integer.parseInt(keyString.substring(DOWNLOAD_SITE_NAME_KEY_PREFIX.length()).trim());
+ }
+
+ if
(keyString.startsWith(DOWNLOAD_SITE_URL_KEY_PREFIX)) {
+ siteNumber =
Integer.parseInt(keyString.substring(DOWNLOAD_SITE_URL_KEY_PREFIX.length()).trim());
+ }
+ } catch (NumberFormatException e) {
+ siteNumber = 0;
+ }
+
+ if (siteNumber >= downloadSiteCount +
1) {
+ isExtraKey = true;
+ keysToRemove.add(key);
+ }
+ }
+ }
+
+ for (Object keyToRemove : keysToRemove) {
+ cyProperty.getProperties().remove(keyToRemove);
+ }
+
this.downloadSites = newDownloadSites;
return true;
@@ -139,6 +176,7 @@
* Notify listeners that a site has been added, removed, or has its
fields changed
*/
public void notifyDownloadSitesChanged() {
+
DownloadSitesChangedEvent event = new
DownloadSitesChangedEvent(this);
for (DownloadSitesChangedListener listener :
this.downloadSitesChangedListeners) {
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-31 00:35:10 UTC (rev 30302)
+++
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/ui/downloadsites/ManageDownloadSitesDialog.java
2012-08-31 15:53:59 UTC (rev 30303)
@@ -15,6 +15,7 @@
import org.cytoscape.app.internal.manager.App;
import org.cytoscape.app.internal.net.Update;
+import org.cytoscape.app.internal.net.WebQuerier;
import
org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager.DownloadSitesChangedEvent;
import
org.cytoscape.app.internal.ui.downloadsites.DownloadSitesManager.DownloadSitesChangedListener;
@@ -59,9 +60,6 @@
}
};
- downloadSitesManager.addDownloadSitesChangedListener(
- downloadSitesChangedListener);
-
DownloadSite site1 = new DownloadSite();
site1.setSiteName("site1");
site1.setSiteUrl("url1");
@@ -74,6 +72,23 @@
site3.setSiteName("site3");
site3.setSiteUrl("url3");
+ downloadSitesManager.loadDownloadSites();
+
+ // System.out.println("Sites loaded, count: " +
downloadSitesManager.getDownloadSites().size());
+ if (downloadSitesManager.getDownloadSites().size() == 0) {
+ for (DownloadSite downloadSite :
WebQuerier.DEFAULT_DOWNLOAD_SITES) {
+ downloadSitesManager.addDownloadSite(downloadSite);
+ }
+
+ // System.out.println("Sites added, count: " +
downloadSitesManager.getDownloadSites().size());
+ downloadSitesManager.saveDownloadSites();
+ }
+
+ downloadSitesManager.addDownloadSitesChangedListener(
+ downloadSitesChangedListener);
+
+ repopulateTable();
+
/*
downloadSitesManager.addDownloadSite(site1);
downloadSitesManager.addDownloadSite(site2);
@@ -242,7 +257,9 @@
}
downloadSitesManager.addDownloadSite(downloadSite);
-
+
+ downloadSitesManager.saveDownloadSites();
+
if (sitesTable.getModel() instanceof DefaultTableModel) {
// Make the added site selected
@@ -293,12 +310,17 @@
if (downloadSite == null) {
JOptionPane.showMessageDialog(this, "Select a site to edit it");
- } else {
+ } else if (isLastCopyOfDefaultSite(downloadSite)) {
+ JOptionPane.showMessageDialog(this, "That is a default site,
cannot edit");
+
+ } else {
downloadSite.setSiteName(getEnteredSiteName());
downloadSite.setSiteUrl(getEnteredUrl());
// Tell the manager one of its sites changed
downloadSitesManager.notifyDownloadSitesChanged();
+
+ downloadSitesManager.saveDownloadSites();
}
}
@@ -307,6 +329,11 @@
if (downloadSite == null) {
JOptionPane.showMessageDialog(this, "Select a site to remove
it");
+
+ // If it is the last copy of a default download site, don't allow
removing it
+ } else if (isLastCopyOfDefaultSite(downloadSite)) {
+ JOptionPane.showMessageDialog(this, "That is a default site,
cannot remove");
+
} else {
final int selectionIndex = sitesTable.getSelectedRow();
@@ -322,6 +349,8 @@
if (siteToRemove != null) {
downloadSitesManager.removeDownloadSite(siteToRemove);
+
+ downloadSitesManager.saveDownloadSites();
SwingUtilities.invokeLater(new Runnable() {
@@ -339,10 +368,41 @@
}
}
});
+
}
}
}
+ /**
+ * Checks if a download site corresponds to the last copy of a default site
+ * in the {@link DownloadSitesManager}.
+ * @param downloadSite The site used to perform the check
+ * @return Whether the site corresponds to the last copy of a default site
+ * in the {@link DownloadSitesManager}
+ */
+ private boolean isLastCopyOfDefaultSite(DownloadSite downloadSite) {
+ boolean isDefaultSite = false;
+ int copiesOfSite = 0;
+
+ // Don't allow editing if it's one of default sites, and it's
the last
+ // copy of that default site
+ for (DownloadSite defaultSite :
WebQuerier.DEFAULT_DOWNLOAD_SITES) {
+ if (downloadSite.sameSiteAs(defaultSite)) {
+ isDefaultSite = true;
+ }
+ }
+
+ if (isDefaultSite) {
+ for (DownloadSite registeredSite :
downloadSitesManager.getDownloadSites()) {
+ if (registeredSite.sameSiteAs(downloadSite)) {
+ copiesOfSite++;
+ }
+ }
+ }
+
+ return (isDefaultSite && copiesOfSite <= 1);
+ }
+
private void siteUrlTextFieldActionPerformed(java.awt.event.ActionEvent
evt) {
}
@@ -395,7 +455,7 @@
public void run() {
sitesTable.setModel(tableModel);
-
sitesTable.getColumnModel().getColumn(0).setPreferredWidth(80);
+
sitesTable.getColumnModel().getColumn(0).setPreferredWidth(140);
sitesTable.getColumnModel().getColumn(1).setPreferredWidth(285);
listedSitesLabel.setText("Listed sites: " +
downloadSites.size());
--
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.