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.