Author: ruschein
Date: 2011-01-19 14:19:48 -0800 (Wed, 19 Jan 2011)
New Revision: 23514

Added:
   
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowUpdateService.java
   
core3/model-api/trunk/src/main/java/org/cytoscape/model/events/CyTableRowUpdateMicroListener.java
Removed:
   
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowChangeTracker.java
   
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/MyTableRowChangeTracker.java
Modified:
   core3/model-api/trunk/pom.xml
   
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
   core3/model-impl/trunk/pom.xml
   
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/TableBrowser.java
   
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Turned the table creation/update event aggregation into a service using a micro 
listener approach.

Modified: core3/model-api/trunk/pom.xml
===================================================================
--- core3/model-api/trunk/pom.xml       2011-01-19 18:50:43 UTC (rev 23513)
+++ core3/model-api/trunk/pom.xml       2011-01-19 22:19:48 UTC (rev 23514)
@@ -119,11 +119,6 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.cytoscape</groupId>
-      <artifactId>service-util</artifactId>
-      <version>3.0.0-alpha2-SNAPSHOT</version>
-    </dependency>
     
   </dependencies>
 

Deleted: 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowChangeTracker.java
===================================================================
--- 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowChangeTracker.java
        2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowChangeTracker.java
        2011-01-19 22:19:48 UTC (rev 23514)
@@ -1,163 +0,0 @@
-package org.cytoscape.model;
-
-
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.events.RowsAboutToChangeEvent;
-import org.cytoscape.model.events.RowsAboutToChangeListener;
-import org.cytoscape.model.events.RowsFinishedChangingEvent;
-import org.cytoscape.model.events.RowsFinishedChangingListener;
-import org.cytoscape.model.events.RowCreatedMicroListener;
-import org.cytoscape.model.events.RowSetMicroListener;
-import org.cytoscape.service.util.CyServiceRegistrar;
-
-
-/** This class simplifies tracking of CyRow creation and update events for a 
single CyTable.  In
- *  order to utilise it, you must override the rowCreated() and rowsUpdated() 
methods.
- */
-public abstract class CyTableRowChangeTracker
-       implements RowCreatedMicroListener, RowsAboutToChangeListener, 
RowsFinishedChangingListener
-{
-       public static class RowUpdate {
-               private final CyRow row;
-               private final String columnName;
-               private final Object newValue;
-               private final Object newRawValue;
-
-               RowUpdate(final CyRow row, final String columnName, final 
Object newValue,
-                         final Object newRawValue)
-               {
-                       this.row = row;
-                       this.columnName = columnName;
-                       this.newValue = newValue;
-                       this.newRawValue = newRawValue;
-               }
-
-               public final CyRow getRow() { return row; }
-               public final String getColumnName() { return columnName; }
-               public final Object getNewValue() { return newValue; }
-               public final Object getNewRawValue() { return newRawValue; }
-       }
-
-       private final CyTable table;
-       private final Map<CyRow, RowSetMicroListenerProxy> 
rowToListenerProxyMap;
-       private final CyEventHelper eventHelper;
-       private final CyServiceRegistrar serviceRegistrar;
-       private List<RowUpdate> rowUpdates;
-       private int numConcurrentUpdaters;
-
-       /** @param table        the table whose row updates we're forwarding
-        *  @param eventHelper  used to set up event tracking
-        */
-       public CyTableRowChangeTracker(final CyTable table, final CyEventHelper 
eventHelper,
-                                      final CyServiceRegistrar 
serviceRegistrar)
-       {
-               this.table = table;
-               this.eventHelper = eventHelper;
-               this.serviceRegistrar = serviceRegistrar;
-               this.rowToListenerProxyMap = new HashMap<CyRow, 
RowSetMicroListenerProxy>();
-               this.rowUpdates = new ArrayList<RowUpdate>();
-               this.numConcurrentUpdaters = 0;
-
-               final Dictionary emptyProps = new Hashtable();
-               serviceRegistrar.registerService(this, 
RowsAboutToChangeListener.class, emptyProps);
-               serviceRegistrar.registerService(this, 
RowsFinishedChangingListener.class, emptyProps);
-
-               eventHelper.addMicroListener(this, 
RowCreatedMicroListener.class, table);
-
-               final List<CyRow> rows = table.getAllRows();
-               for (final CyRow row : rows)
-                       rowToListenerProxyMap.put(row, new 
RowSetMicroListenerProxy(this, eventHelper, row));
-       }
-
-       private final synchronized void rowUpdated(final CyRow row, final 
String columnName,
-                                                  final Object newValue, final 
Object newRawValue)
-       {
-               rowUpdates.add(new RowUpdate(row, columnName, newValue, 
newRawValue));
-               if (numConcurrentUpdaters == 0) {
-                       rowsUpdated(rowUpdates);
-                       rowUpdates.clear();
-               }
-       }
-
-       @Override
-       public final void handleRowCreated(final Object key) {
-               final CyRow newRow = table.getRow(key);
-               rowToListenerProxyMap.put(
-                       newRow, new RowSetMicroListenerProxy(this, eventHelper, 
newRow));
-               rowCreated(newRow);
-       }
-
-       @Override
-       public final synchronized void handleEvent(final RowsAboutToChangeEvent 
e) {
-               if (e.getTable() == table)
-                       ++numConcurrentUpdaters;
-       }
-
-       @Override
-       public final synchronized void handleEvent(final 
RowsFinishedChangingEvent e) {
-               if (e.getTable() == table) {
-                       --numConcurrentUpdaters;
-                       if (numConcurrentUpdaters == 0) {
-                               rowsUpdated(rowUpdates);
-                               rowUpdates.clear();
-                       }
-               }
-       }
-
-       /** Override this to be notified of newly created rows.
-        *
-        *  @param newRow  the newly created row
-        */
-       public abstract void rowCreated(CyRow newRow);
-
-       /** Override this to be notified of row updates.
-        *
-        *  @param updates  information about all the recent row changes
-        */
-       public abstract void rowsUpdated(List<RowUpdate> updates);
-
-       /** Unregisters all listeners. */
-       public final void cleanup() {
-               eventHelper.removeMicroListener(this, 
RowCreatedMicroListener.class, table);
-               for (final RowSetMicroListenerProxy proxy : 
rowToListenerProxyMap.values())
-                       proxy.cleanup();
-
-               serviceRegistrar.unregisterService(this, 
RowsFinishedChangingListener.class);
-               serviceRegistrar.unregisterService(this, 
RowsAboutToChangeListener.class);
-       }
-
-
-       private static class RowSetMicroListenerProxy implements 
RowSetMicroListener {
-               private final CyTableRowChangeTracker changeTracker;
-               private final CyEventHelper eventHelper;
-               private final CyRow row;
-
-               RowSetMicroListenerProxy(final CyTableRowChangeTracker 
changeTracker,
-                                        final CyEventHelper eventHelper, final 
CyRow row)
-               {
-                       this.changeTracker = changeTracker;
-                       this.eventHelper = eventHelper;
-                       this.row = row;
-
-                       eventHelper.addMicroListener(this, 
RowSetMicroListener.class, row);
-               }
-
-               @Override
-               public void handleRowSet(final String columnName, final Object 
newValue,
-                                        final Object newRawValue)
-               {
-                       changeTracker.rowUpdated(row, columnName, newValue, 
newRawValue);
-               }
-
-               void cleanup() {
-                       eventHelper.removeMicroListener(this, 
RowSetMicroListener.class, row);
-               }
-       }
-}

Added: 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowUpdateService.java
===================================================================
--- 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowUpdateService.java
                                (rev 0)
+++ 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableRowUpdateService.java
        2011-01-19 22:19:48 UTC (rev 23514)
@@ -0,0 +1,14 @@
+package org.cytoscape.model;
+
+
+import org.cytoscape.model.events.CyTableRowUpdateMicroListener;
+
+
+/** This service provides aggregated row creation/update events.  It 
guarantees that
+ *  the handleRowCreations() methods of the listeners will be called before
+ *  handleRowSets() methods of the listeners will be called.
+ */
+public interface CyTableRowUpdateService {
+       void startTracking(CyTableRowUpdateMicroListener listener, CyTable 
table);
+       void stopTracking(CyTableRowUpdateMicroListener listener, CyTable 
table);
+}
\ No newline at end of file

Added: 
core3/model-api/trunk/src/main/java/org/cytoscape/model/events/CyTableRowUpdateMicroListener.java
===================================================================
--- 
core3/model-api/trunk/src/main/java/org/cytoscape/model/events/CyTableRowUpdateMicroListener.java
                           (rev 0)
+++ 
core3/model-api/trunk/src/main/java/org/cytoscape/model/events/CyTableRowUpdateMicroListener.java
   2011-01-19 22:19:48 UTC (rev 23514)
@@ -0,0 +1,72 @@
+/*
+ Copyright (c) 2008, 2010, The Cytoscape Consortium (www.cytoscape.org)
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications.  In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage.  See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+*/
+package org.cytoscape.model.events;
+
+
+import java.util.List;
+
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyRow;
+import org.cytoscape.event.CyMicroListener;
+
+
+/** Listener for aggregated row updates. */
+public interface CyTableRowUpdateMicroListener extends CyMicroListener {
+       public final static class RowSet {
+               private final CyRow row;
+               private final String column;
+               private final Object value;
+               private final Object rawValue;
+
+               public RowSet(final CyRow row, final String column, final 
Object value,
+                              final Object rawValue)
+               {
+                       this.row      = row;
+                       this.column   = column;
+                       this.value    = value;
+                       this.rawValue = rawValue;
+               }
+
+               public CyRow getRow() { return row; }
+               public String getColumn() { return column; }
+               public Object getValue() { return value; }
+               public Object getRawValue() { return rawValue; }
+       }
+
+       /**
+        * @param table    the table whose updates we would like to track
+        * @param newRows  the list of new rows
+        */
+       void handleRowCreations(final CyTable table, final List<CyRow> newRows);
+
+       /**
+        * @param table    the table whose updates we would like to track
+        * @param rowSets  a list of row updates
+        */
+       void handleRowSets(final CyTable table, final List<RowSet> rowSets);
+}

Modified: 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
      2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
      2011-01-19 22:19:48 UTC (rev 23514)
@@ -5,12 +5,13 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                       http://www.springframework.org/schema/osgi 
http://www.springframework.org/schema/osgi/spring-osgi-1.0.xsd";
        default-lazy-init="false">
-
        
        <osgi:reference id="cyEventHelperServiceRef"
                interface="org.cytoscape.event.CyEventHelper" />
        <osgi:reference id="InterpreterRef"
                interface="org.cytoscape.equations.Interpreter" />
+        <osgi:reference id="cyServiceRegistrarServiceRef"
+               interface="org.cytoscape.service.util.CyServiceRegistrar" />
 
        <!-- Individual Service -->
        <osgi:service id="cyNetworkFactoryService"
@@ -32,4 +33,8 @@
        <osgi:service id="cyNetworkManagerService"
                ref="cyNetworkManager" 
interface="org.cytoscape.model.CyNetworkManager">
        </osgi:service>
+
+       <osgi:service id="cyTableRowUpdateService"
+               ref="tableRowUpdateService" 
interface="org.cytoscape.model.CyTableRowUpdateService">
+       </osgi:service>
 </beans>

Modified: 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
   2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
   2011-01-19 22:19:48 UTC (rev 23514)
@@ -35,5 +35,9 @@
        </bean>
 
        <bean id="cyRootNetworkFactory" 
class="org.cytoscape.model.internal.CyRootNetworkFactoryImpl"/>
-       
+
+       <bean id="tableRowUpdateService" 
class="org.cytoscape.model.internal.CyTableRowUpdateServiceImpl">
+               <constructor-arg ref="cyEventHelperServiceRef" />
+               <constructor-arg ref="cyServiceRegistrarServiceRef" />
+       </bean>
 </beans>

Modified: core3/model-impl/trunk/pom.xml
===================================================================
--- core3/model-impl/trunk/pom.xml      2011-01-19 18:50:43 UTC (rev 23513)
+++ core3/model-impl/trunk/pom.xml      2011-01-19 22:19:48 UTC (rev 23514)
@@ -104,6 +104,12 @@
                        <version>1.0-SNAPSHOT</version>
                        <scope>provided</scope>
                </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>service-util</artifactId>
+                       <version>3.0.0-alpha2-SNAPSHOT</version>
+                       <scope>provided</scope>
+               </dependency>
        </dependencies>
 </project>
 

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
  2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
  2011-01-19 22:19:48 UTC (rev 23514)
@@ -23,37 +23,40 @@
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableRowUpdateService;
 import org.cytoscape.model.events.ColumnCreatedEvent;
 import org.cytoscape.model.events.ColumnCreatedListener;
 import org.cytoscape.model.events.ColumnDeletedEvent;
 import org.cytoscape.model.events.ColumnDeletedListener;
+import org.cytoscape.model.events.CyTableRowUpdateMicroListener;
 import org.cytoscape.service.util.CyServiceRegistrar;
 
 
 public class BrowserTableModel
-       implements TableModel, ColumnCreatedListener, ColumnDeletedListener
+       implements TableModel, ColumnCreatedListener, ColumnDeletedListener, 
CyTableRowUpdateMicroListener
 {
        private static final int EOF = -1;
        private static final int MAX_INITIALLY_VSIBLE_ATTRS = 10;
        private final JTable table;
        private final CyTable attrs;
        private final EqnCompiler compiler;
+       private final CyTableRowUpdateService tableRowUpdateService;
        private boolean tableHasBooleanSelected;
        private List<AttrNameAndVisibility> attrNamesAndVisibilities;
        private final List<TableModelListener> tableModelListeners;
-       private final MyTableRowChangeTracker tableRowChangeTracker;
 
        public BrowserTableModel(final JTable table, final CyEventHelper 
eventHelper,
                                 final CyTable attrs, final EqnCompiler 
compiler,
-                                final CyServiceRegistrar serviceRegistrar)
+                                final CyServiceRegistrar serviceRegistrar,
+                                final CyTableRowUpdateService 
tableRowUpdateService)
        {
                this.table = table;
                this.attrs = attrs;
                this.compiler = compiler;
+               this.tableRowUpdateService = tableRowUpdateService;
                this.tableHasBooleanSelected = 
attrs.getColumnTypeMap().get(CyNetwork.SELECTED) == Boolean.class;
                this.tableModelListeners = new ArrayList<TableModelListener>();
-               this.tableRowChangeTracker =
-                       new MyTableRowChangeTracker(attrs, eventHelper, 
serviceRegistrar, this);
+               tableRowUpdateService.startTracking(this, attrs);
 
                initAttrNamesAndVisibilities();
        }
@@ -276,19 +279,23 @@
                        listener.tableChanged(event);
        }
 
-       void rowCreated(final CyRow row) {
-               final int newRowIndex = mapRowToRowIndex(row);
-               final TableModelEvent event
-                       = new TableModelEvent(this, newRowIndex, newRowIndex,
-                                             TableModelEvent.ALL_COLUMNS, 
TableModelEvent.INSERT);
-               for (final TableModelListener listener : tableModelListeners)
-                       listener.tableChanged(event);
+       @Override
+       public void handleRowCreations(final CyTable table, final List<CyRow> 
newRows) {
+               for (final CyRow row : newRows) {
+                       final int newRowIndex = mapRowToRowIndex(row);
+                       final TableModelEvent event
+                               = new TableModelEvent(this, newRowIndex, 
newRowIndex,
+                                                     
TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT);
+                       for (final TableModelListener listener : 
tableModelListeners)
+                               listener.tableChanged(event);
+               }
        }
 
-       void handleRowUpdate(final CyRow row, final String columnName, final 
Object newValue,
-                            final Object newRawValue)
-       {
-               handleRowValueUpdate(row, columnName, newValue, newRawValue);
+       @Override
+       public void handleRowSets(final CyTable table, final List<RowSet> 
rowSets) {
+               for (final RowSet rowSet : rowSets)
+                       handleRowValueUpdate(rowSet.getRow(), 
rowSet.getColumn(), rowSet.getValue(),
+                                            rowSet.getRawValue());
        }
 
        @Override
@@ -827,7 +834,7 @@
        }
 
        public void cleanup() {
-               tableRowChangeTracker.cleanup();
+               tableRowUpdateService.stopTracking(this, attrs);
        }
 }
 

Deleted: 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/MyTableRowChangeTracker.java
===================================================================
--- 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/MyTableRowChangeTracker.java
    2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/MyTableRowChangeTracker.java
    2011-01-19 22:19:48 UTC (rev 23514)
@@ -1,35 +0,0 @@
-package org.cytoscape.browser.internal;
-
-
-import java.util.List;
-
-import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyRow;
-import org.cytoscape.model.CyTable;
-import org.cytoscape.model.CyTableRowChangeTracker;
-import org.cytoscape.model.CyTableRowChangeTracker.RowUpdate;
-import org.cytoscape.service.util.CyServiceRegistrar;
-
-
-class MyTableRowChangeTracker extends CyTableRowChangeTracker {
-       private final BrowserTableModel browserTableModel;
-
-       MyTableRowChangeTracker(final CyTable table, final CyEventHelper 
eventHelper,
-                               final CyServiceRegistrar serviceRegistrar,
-                               final BrowserTableModel browserTableModel)
-       {
-               super(table, eventHelper, serviceRegistrar);
-               this.browserTableModel = browserTableModel;
-       }
-
-       public final void rowCreated(final CyRow newRow) {
-               browserTableModel.rowCreated(newRow);
-       }
-
-       public final void rowsUpdated(final List<RowUpdate> updates) {
-               for (final RowUpdate update : updates)
-                       browserTableModel.handleRowUpdate(update.getRow(), 
update.getColumnName(),
-                                                         update.getNewValue(),
-                                                         
update.getNewRawValue());
-       }
-}
\ No newline at end of file

Modified: 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
===================================================================
--- 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
       2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
       2011-01-19 22:19:48 UTC (rev 23514)
@@ -19,6 +19,7 @@
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.CyTableRowUpdateService;
 import org.cytoscape.model.events.RowCreatedMicroListener;
 import org.cytoscape.application.swing.CytoPanelComponent;
 import org.cytoscape.application.swing.CytoPanelName;
@@ -37,6 +38,7 @@
        private final CyEventHelper eventHelper;
        private final EqnCompiler compiler;
        private final BrowserTable browserTable;
+       private final CyTableRowUpdateService tableRowUpdateService;
        private final AttributeBrowserToolBar attributeBrowserToolBar;
        private final TableChooser tableChooser;
        private BrowserTableModel browserTableModel;
@@ -44,13 +46,15 @@
 
        TableBrowser(final CyTableManager tableManager, final 
CyServiceRegistrar serviceRegistrar,
                     final CyEventHelper eventHelper, final EqnCompiler 
compiler,
-                    final OpenBrowser openBrowser)
+                    final OpenBrowser openBrowser,
+                    final CyTableRowUpdateService tableRowUpdateService)
        {
                this.tableManager = tableManager;
                this.serviceRegistrar = serviceRegistrar;
                this.eventHelper = eventHelper;
                this.compiler = compiler;
                this.browserTable = new BrowserTable(openBrowser, compiler);
+               this.tableRowUpdateService = tableRowUpdateService;
                this.attributeBrowserToolBar = new 
AttributeBrowserToolBar(serviceRegistrar, compiler);
                this.setLayout(new BorderLayout());
 
@@ -99,7 +103,8 @@
 
                        currentTable = table;
                        browserTableModel = new BrowserTableModel(browserTable, 
eventHelper, table,
-                                                                 compiler, 
serviceRegistrar);
+                                                                 compiler, 
serviceRegistrar,
+                                                                 
tableRowUpdateService);
                        serviceRegistrar.registerAllServices(browserTableModel, 
new Properties());
                        browserTable.setModel(browserTableModel);
                        browserTable.setRowSorter(new 
TableRowSorter(browserTableModel));

Modified: 
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   2011-01-19 22:19:48 UTC (rev 23514)
@@ -11,6 +11,7 @@
         <osgi:reference id="cyEventHelperServiceRef" 
interface="org.cytoscape.event.CyEventHelper" />
        <osgi:reference id="compilerServiceRef" 
interface="org.cytoscape.equations.EqnCompiler" />
        <osgi:reference id="openBrowserServiceRef" 
interface="org.cytoscape.util.swing.OpenBrowser" />
+       <osgi:reference id="cyTableRowUpdateServiceRef" 
interface="org.cytoscape.model.CyTableRowUpdateService" />
 
        <!-- listeners -->
        <osgi:service id="tableBrowserCytoPanelComponentService" 
ref="tableBrowser">

Modified: 
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
        2011-01-19 18:50:43 UTC (rev 23513)
+++ 
core3/table-browser-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
        2011-01-19 22:19:48 UTC (rev 23514)
@@ -31,5 +31,6 @@
                <constructor-arg ref="cyEventHelperServiceRef" />
                <constructor-arg ref="compilerServiceRef" />
                <constructor-arg ref="openBrowserServiceRef" />
+               <constructor-arg ref="cyTableRowUpdateServiceRef" />
        </bean>
 </beans>

-- 
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.

Reply via email to