Author: rozagh
Date: 2012-06-01 17:16:11 -0700 (Fri, 01 Jun 2012)
New Revision: 29430

Added:
   
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedEvent.java
   
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedListener.java
   
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedEvent.java
   
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedListener.java
Modified:
   core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTable.java
   
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
   
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableTest.java
   
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TableTestSupportTest.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyTableProjection.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
Log:
Added setPublic method to cyTable. Added TableTitleChanged and 
TablePrivacyChanged events and listeners. 


Modified: 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTable.java
===================================================================
--- core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTable.java    
2012-06-02 00:11:46 UTC (rev 29429)
+++ core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTable.java    
2012-06-02 00:16:11 UTC (rev 29430)
@@ -88,6 +88,15 @@
         * @return Whether or not this CyTable should be publicly accessible.
         */
        boolean isPublic();
+       
+       /**
+        * Sets the privacy flag for the CyTable. A public CyTable is a table 
that is accessible to the user through the user
+        * interface.  Private or non-public CyTables will not be visible to 
the user from the
+        * normal user interface, although they will be accessible to app 
writers through the API.
+        * This method may fire CyTablePrivacyChangedEvent.
+        * @param isPublic if true, the table will be public and if false, the 
table will be private.
+        */
+       void setPublic (boolean isPublic);
 
        /** The table can be deleted if this returns Mutability.MUTABLE, 
otherwise it cannot be
         *  deleted!

Added: 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedEvent.java
===================================================================
--- 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedEvent.java
                            (rev 0)
+++ 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedEvent.java
    2012-06-02 00:16:11 UTC (rev 29430)
@@ -0,0 +1,24 @@
+package org.cytoscape.model.events;
+
+import org.cytoscape.event.AbstractCyEvent;
+import org.cytoscape.model.CyTable;
+
+/**
+ * This event is fired when a table privacy is changed from public
+ * to private or vice versa.  A public CyTable is a table that is accessible 
to the user through the user
+ * interface.  Private or non-public CyTables will not be visible to the user 
from the
+ * normal user interface, although they will be accessible to app writers 
through the API.
+ * @author rozagh
+ *
+ */
+public final class TablePrivacyChangedEvent extends AbstractCyEvent<CyTable> {
+
+       /**
+        * Constructor method for TablePrivacyChangedEvent.
+        * @param source the CyTable that the privacy is updated for.
+        */
+       public TablePrivacyChangedEvent(CyTable source) {
+               super(source, TablePrivacyChangedListener.class);
+       }
+
+}

Added: 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedListener.java
===================================================================
--- 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedListener.java
                         (rev 0)
+++ 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TablePrivacyChangedListener.java
 2012-06-02 00:16:11 UTC (rev 29430)
@@ -0,0 +1,19 @@
+package org.cytoscape.model.events;
+
+import org.cytoscape.event.CyListener;
+
+/**
+ * Listener interface for handling {@link TablePrivacyChangedEvent}.
+ * This interface can be implemented by the classes effected by setting
+ * a table public or private.
+ * @author rozagh
+ *
+ */
+public interface TablePrivacyChangedListener extends CyListener{
+       
+       /**
+        * Handler method for {@link TablePrivacyChangedListener}.
+        * @param e the fired event of type {@link TablePrivacyChangedEvent}. 
+        */
+       void handleEvent(TablePrivacyChangedEvent e);
+}

Added: 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedEvent.java
===================================================================
--- 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedEvent.java
                              (rev 0)
+++ 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedEvent.java
      2012-06-02 00:16:11 UTC (rev 29430)
@@ -0,0 +1,18 @@
+package org.cytoscape.model.events;
+
+import org.cytoscape.event.AbstractCyEvent;
+import org.cytoscape.model.CyTable;
+
+public final class TableTitleChangedEvent extends AbstractCyEvent<CyTable> {
+
+       private String oldTitle;
+       
+       public TableTitleChangedEvent(CyTable source, String oldTitle) {
+               super(source, TableTitleChangedListener.class);
+               this.oldTitle = oldTitle;
+       }
+
+       public String getOldTitle(){
+               return oldTitle;
+       }
+}

Added: 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedListener.java
===================================================================
--- 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedListener.java
                           (rev 0)
+++ 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/events/TableTitleChangedListener.java
   2012-06-02 00:16:11 UTC (rev 29430)
@@ -0,0 +1,9 @@
+package org.cytoscape.model.events;
+
+import org.cytoscape.event.CyListener;
+
+public interface TableTitleChangedListener extends CyListener{
+       
+       void handleEvent (TableTitleChangedEvent e);
+
+}

Modified: 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
        2012-06-02 00:11:46 UTC (rev 29429)
+++ 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
        2012-06-02 00:16:11 UTC (rev 29430)
@@ -52,6 +52,8 @@
 import org.cytoscape.model.events.RowsSetEvent;
 import org.cytoscape.model.events.TableAddedEvent;
 import org.cytoscape.model.events.TableAddedListener;
+import org.cytoscape.model.events.TablePrivacyChangedEvent;
+import org.cytoscape.model.events.TableTitleChangedEvent;
 
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.HashMultimap;
@@ -119,7 +121,7 @@
                this.eventHelper = eventHelper;
                this.interpreter = interpreter;
                this.savePolicy = savePolicy;
-               this.fireEvents = !pub;
+               this.fireEvents = false;
                this.defaultInitSize = defaultInitSize;
 
                currentlyActiveAttributes = new HashSet<String>();
@@ -258,6 +260,16 @@
        }
 
        @Override
+       public void setPublic(boolean isPublic) {
+
+               if(pub != isPublic){
+                       pub = isPublic;
+                       if( fireEvents)
+                               eventHelper.fireEvent(new 
TablePrivacyChangedEvent(this));
+               }
+       }
+       
+       @Override
        public synchronized CyTable.Mutability getMutability() {
                if (isImmutable)
                        return Mutability.PERMANENTLY_IMMUTABLE;
@@ -274,7 +286,12 @@
 
        @Override
        synchronized public void setTitle(String title) {
-               this.title = title;
+               if(!this.title.equals(title)){
+                       String oldTitle = this.title;
+                       this.title = title;
+                       if(fireEvents)
+                               eventHelper.fireEvent(new 
TableTitleChangedEvent(this, oldTitle));
+               }
        }
 
        @Override

Modified: 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableTest.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableTest.java
 2012-06-02 00:11:46 UTC (rev 29429)
+++ 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableTest.java
 2012-06-02 00:16:11 UTC (rev 29430)
@@ -42,8 +42,12 @@
 import org.cytoscape.event.DummyCyEventHelper;
 import org.cytoscape.model.CyIdentifiable;
 import org.cytoscape.model.CyTable.SavePolicy;
+import org.cytoscape.model.internal.CyNetworkManagerImpl;
+import org.cytoscape.model.internal.CyNetworkTableManagerImpl;
 import org.cytoscape.model.internal.CyTableImpl;
+import org.cytoscape.model.internal.CyTableManagerImpl;
 import org.cytoscape.model.events.RowSetRecord;
+import org.cytoscape.model.events.TableAddedEvent;
 
 import static org.junit.Assert.*;
 import org.junit.After;
@@ -63,6 +67,13 @@
                attrs = table.getRow(1L);
                table2 = new CyTableImpl("marge", CyIdentifiable.SUID, 
Long.class, false, true, SavePolicy.SESSION_FILE,
                                         eventHelper, interpreter, 1000);
+               
+               CyTableManagerImpl tblMgr = new 
CyTableManagerImpl(eventHelper,new CyNetworkTableManagerImpl(), new 
CyNetworkManagerImpl(eventHelper));
+               tblMgr.addTable(table);
+               ((CyTableImpl)table).handleEvent(new TableAddedEvent(tblMgr, 
table));
+               tblMgr.addTable(table2);
+               ((CyTableImpl)table2).handleEvent(new TableAddedEvent(tblMgr, 
table2));
+
        }
 
        @After

Modified: 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TableTestSupportTest.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TableTestSupportTest.java
        2012-06-02 00:11:46 UTC (rev 29429)
+++ 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TableTestSupportTest.java
        2012-06-02 00:16:11 UTC (rev 29430)
@@ -2,6 +2,11 @@
 
 
 import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.events.TableAddedEvent;
+import org.cytoscape.model.internal.CyNetworkManagerImpl;
+import org.cytoscape.model.internal.CyNetworkTableManagerImpl;
+import org.cytoscape.model.internal.CyTableImpl;
+import org.cytoscape.model.internal.CyTableManagerImpl;
 import org.junit.Before;
 import org.junit.After;
 
@@ -29,6 +34,12 @@
                table = factory.createTable(Integer.toString( 
rand.nextInt(10000) ), CyIdentifiable.SUID, Long.class, false, true);
                table2 = factory.createTable(Integer.toString( 
rand.nextInt(10000) ), CyIdentifiable.SUID, Long.class, false, true);
                attrs = table.getRow(1l);
+               CyTableManagerImpl tblMgr = new 
CyTableManagerImpl(eventHelper,new CyNetworkTableManagerImpl(), new 
CyNetworkManagerImpl(eventHelper));
+               tblMgr.addTable(table);
+               ((CyTableImpl)table).handleEvent(new TableAddedEvent(tblMgr, 
table));
+               tblMgr.addTable(table2);
+               ((CyTableImpl)table2).handleEvent(new TableAddedEvent(tblMgr, 
table2));
+
        }
 
        @After

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyTableProjection.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyTableProjection.java
     2012-06-02 00:11:46 UTC (rev 29429)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyTableProjection.java
     2012-06-02 00:16:11 UTC (rev 29430)
@@ -373,4 +373,9 @@
        public void swap(final CyTable otherTable) {
                underlyingTable.swap(otherTable);
        }
+
+       @Override
+       public void setPublic(boolean isPublic) {
+               throw new UnsupportedOperationException("setPublic(boolean 
isPublic) method not supported!");           
+       }
 }

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2012-06-02 00:11:46 UTC (rev 29429)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2012-06-02 00:16:11 UTC (rev 29430)
@@ -17,13 +17,15 @@
 import org.cytoscape.model.events.TableAboutToBeDeletedListener;
 import org.cytoscape.model.events.TableAddedEvent;
 import org.cytoscape.model.events.TableAddedListener;
+import org.cytoscape.model.events.TablePrivacyChangedEvent;
+import org.cytoscape.model.events.TablePrivacyChangedListener;
 import org.cytoscape.service.util.CyServiceRegistrar;
 import org.cytoscape.task.destroy.DeleteTableTaskFactory;
 import org.cytoscape.task.edit.MapGlobalToLocalTableTaskFactory;
 import org.cytoscape.util.swing.OpenBrowser;
 import org.cytoscape.work.swing.DialogTaskManager;
 
-public class GlobalTableBrowser extends AbstractTableBrowser implements 
TableAboutToBeDeletedListener, TableAddedListener {
+public class GlobalTableBrowser extends AbstractTableBrowser implements 
TableAboutToBeDeletedListener, TableAddedListener, TablePrivacyChangedListener {
 
        private static final long serialVersionUID = 2269984225983802421L;
 
@@ -106,5 +108,23 @@
                }
        }
 
+       @Override
+       public void handleEvent(TablePrivacyChangedEvent e) {
+
+               final CyTable table = e.getSource();
+               final GlobalTableComboBoxModel comboBoxModel = 
(GlobalTableComboBoxModel) tableChooser.getModel();
+               if(!table.isPublic()){
+                       comboBoxModel.removeItem(table);
+
+                       if (comboBoxModel.getSize() == 0) {
+                               tableChooser.setEnabled(false);
+                               // The last table is deleted, refresh the 
browser table (this is a special case)
+                               deleteTable(table);
+                       }
+               }else
+                       comboBoxModel.addAndSetSelectedItem(table);
+               
+       }
+
        
 }

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