Author: ruschein
Date: 2011-01-03 06:57:46 -0800 (Mon, 03 Jan 2011)
New Revision: 23286
Modified:
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
Log:
Work in progress.
Modified:
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
===================================================================
---
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
2010-12-31 06:26:19 UTC (rev 23285)
+++
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
2011-01-03 14:57:46 UTC (rev 23286)
@@ -31,12 +31,14 @@
implements ColumnCreatedListener, ColumnDeletedListener,
RowCreatedMicroListener
{
private static final int EOF = -1;
+ private static final int MAX_INITIALLY_VSIBLE_ATTRS = 10;
private final JTable table;
private final CyEventHelper eventHelper;
private final CyTable attrs;
private final EqnCompiler compiler;
private boolean tableHasBooleanSelected;
private Map<CyRow, RowSetMicroListenerProxy> rowToListenerProxyMap;
+ private List<AttrNameAndVisibility> attrNamesAndVisibilities;
public BrowserTableModel(final JTable table, final CyEventHelper
eventHelper,
final CyTable attrs, final EqnCompiler
compiler)
@@ -53,8 +55,26 @@
final List<CyRow> rows = attrs.getAllRows();
for (final CyRow row : rows)
rowToListenerProxyMap.put(row, new
RowSetMicroListenerProxy(this, eventHelper, row));
+
+ initAttrNamesAndVisibilities();
}
+ private void initAttrNamesAndVisibilities() {
+ attrNamesAndVisibilities = new
ArrayList<AttrNameAndVisibility>(attrs.getColumnTypeMap().size());
+ final String primaryKey = attrs.getPrimaryKey();
+ attrNamesAndVisibilities.add(new
AttrNameAndVisibility(primaryKey, true));
+ int visibleColumnCount = 1;
+ boolean isVisible = true;
+ for (final String columnName :
attrs.getColumnTypeMap().keySet()) {
+ if (columnName.equals(primaryKey))
+ continue;
+
+ attrNamesAndVisibilities.add(new
AttrNameAndVisibility(columnName, isVisible));
+ if (++visibleColumnCount == MAX_INITIALLY_VSIBLE_ATTRS)
+ isVisible = false;
+ }
+ }
+
@Override
public int getRowCount() {
final Map<String, Class<?>> columnNameToTypeMap =
attrs.getColumnTypeMap();
@@ -165,11 +185,13 @@
@Override
public void handleEvent(final ColumnCreatedEvent e) {
+ attrNamesAndVisibilities.add(new
AttrNameAndVisibility(e.getColumnName(), true));
fireTableStructureChanged();
}
@Override
public void handleEvent(final ColumnDeletedEvent e) {
+// XXX
fireTableStructureChanged();
}
@@ -191,13 +213,15 @@
return 0;
final Map<String, Class<?>> columnNameToTypeMap =
attrs.getColumnTypeMap();
- int index = 1;
- for (final String name : columnNameToTypeMap.keySet()) {
- if (name.equals(columnName))
+ int index = attrNamesAndVisibilities.get(0).isVisible() ? 1 : 0;
+ for (final AttrNameAndVisibility nameAndVisibility :
attrNamesAndVisibilities) {
+ if (!nameAndVisibility.isVisible() ||
nameAndVisibility.getName().equals(primaryKey))
+ continue;
+
+ if (nameAndVisibility.getName().equals(columnName))
return index;
- if (!name.equals(primaryKey))
- ++index;
+ ++index;
}
throw new IllegalStateException("We should *never* get here!");
@@ -205,18 +229,18 @@
private String mapColumnIndexToColumnName(final int index) {
final String primaryKey = attrs.getPrimaryKey();
- if (index == 0)
+ final boolean primaryKeyIsVisible =
attrNamesAndVisibilities.get(0).isVisible();
+ if (index == 0 && primaryKeyIsVisible)
return primaryKey;
-
final Map<String, Class<?>> columnNameToTypeMap =
attrs.getColumnTypeMap();
- int i = 1;
- for (final String name : columnNameToTypeMap.keySet()) {
- if (name.equals(primaryKey))
+ int i = primaryKeyIsVisible ? 1 : 0;
+ for (final AttrNameAndVisibility nameAndVisibility :
attrNamesAndVisibilities) {
+ if (!nameAndVisibility.isVisible() ||
nameAndVisibility.getName().equals(primaryKey))
continue;
if (index == i)
- return name;
+ return nameAndVisibility.getName();
++i;
}
@@ -692,3 +716,26 @@
eventHelper.removeMicroListener(this,
RowSetMicroListener.class, row);
}
}
+
+
+class AttrNameAndVisibility {
+ private final String attrName;
+ private boolean isVisible;
+
+ AttrNameAndVisibility(final String attrName, final boolean isVisible) {
+ this.attrName = attrName;
+ this.isVisible = isVisible;
+ }
+
+ String getName() {
+ return attrName;
+ }
+
+ void setVisibility(final boolean isVisible) {
+ this.isVisible = isVisible;
+ }
+
+ boolean isVisible() {
+ return isVisible;
+ }
+}
\ 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.