Author: clopes
Date: 2012-10-12 13:02:17 -0700 (Fri, 12 Oct 2012)
New Revision: 30663
Modified:
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
Log:
Fixes #1518
- If setting the current network also changes the network selection,
SetSelectedNetworksEvent is now fired (before SetCurrentNetworkEvent).
- Similarly, if setting the current network view changes the view selection,
SetSelectedNetworkViewsEvent is fired before SetCurrentNetworkViewEvent.
Modified:
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
===================================================================
---
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
2012-10-12 16:06:49 UTC (rev 30662)
+++
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
2012-10-12 20:02:17 UTC (rev 30663)
@@ -30,8 +30,8 @@
package org.cytoscape.application.internal;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
@@ -154,15 +154,15 @@
currentNetwork = network;
if (network != null) {
- // set new current network view?
+ // If the new current network is not
selected, reset the selection and select the current one only
+ if
(!getSelectedNetworks().contains(network))
+
setSelectedNetworks(Collections.singletonList(network));
+
+ // Set new current network view, unless
the current view's model is already the new current network
final Collection<CyNetworkView> views =
networkViewManager.getNetworkViews(network);
- final CyNetworkView nv =
views.isEmpty() ? null : views.iterator().next();
- if (nv != currentNetworkView)
- setCurrentNetworkView(nv);
-
- // reset selected networks
- selectNetworks(Arrays.asList(new
CyNetwork[]{ network }));
+ if (!views.contains(currentNetworkView))
+
setCurrentNetworkView(views.isEmpty() ? null : views.iterator().next());
} else {
if (currentNetworkView != null)
setCurrentNetworkView(null);
@@ -195,11 +195,11 @@
if (changed) {
currentNetworkView = view;
- // reset selected network views
- selectedNetworkViews.clear();
if (view != null) {
- selectedNetworkViews.add(view);
+ // If the new current view is not
selected, reset selected views and select the current one only
+ if
(!selectedNetworkViews.contains(view))
+
setSelectedNetworkViews(Collections.singletonList(view));
if
(!view.getModel().equals(currentNetwork))
setCurrentNetwork(view.getModel());
@@ -226,11 +226,8 @@
if (networkViews != null)
selectedNetworkViews.addAll(networkViews);
- CyNetworkView cv = getCurrentNetworkView();
-
- if (cv != null && !selectedNetworkViews.contains(cv)) {
- selectedNetworkViews.add(cv);
- }
+ if (currentNetworkView != null &&
!selectedNetworkViews.contains(currentNetworkView))
+ selectedNetworkViews.add(currentNetworkView);
}
cyEventHelper.fireEvent(new SetSelectedNetworkViewsEvent(this,
Modified:
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
===================================================================
---
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
2012-10-12 16:06:49 UTC (rev 30662)
+++
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
2012-10-12 20:02:17 UTC (rev 30663)
@@ -6,20 +6,16 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.cytoscape.ding.NetworkViewTestSupport;
import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyIdentifiable;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkManager;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTable;
-import org.cytoscape.model.CyEdge.Type;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.presentation.RenderingEngine;
@@ -69,8 +65,9 @@
@Test
public void testSetNullCurrentNetwork() {
- appMgr.setCurrentNetwork(newNetwork());
- appMgr.setCurrentNetworkView(newNetworkView());
+ final CyNetworkView view = newNetworkView();
+ appMgr.setCurrentNetwork(view.getModel());
+ appMgr.setCurrentNetworkView(view);
appMgr.setCurrentNetwork(null);
assertNull(appMgr.getCurrentNetwork());
assertNull(appMgr.getCurrentNetworkView());
@@ -142,6 +139,33 @@
}
@Test
+ public void testSetUnselectedCurrentNetworkChangesNetworkSelection() {
+ // Setting a current network that is not selected changes the
network selection
+ CyNetwork n1 = newNetwork();
+ CyNetwork n2 = newNetwork();
+ CyNetwork n3 = newNetwork();
+ appMgr.setSelectedNetworks(Arrays.asList(new CyNetwork[]{ n1,
n2 }));
+ appMgr.setCurrentNetwork(n3);
+
+ assertEquals(n3, appMgr.getCurrentNetwork());
+ assertEquals(1, appMgr.getSelectedNetworks().size());
+ assertTrue(appMgr.getSelectedNetworks().contains(n3));
+ }
+
+ @Test
+ public void
testSetSelectedCurrentNetworkDoesNotChangeNetworkSelection() {
+ // Setting a current network that is already selected does NOT
change the network selection state
+ CyNetwork n1 = newNetwork();
+ CyNetwork n2 = newNetwork();
+ CyNetwork n3 = newNetwork();
+ appMgr.setSelectedNetworks(Arrays.asList(new CyNetwork[]{ n1,
n2, n3 }));
+ appMgr.setCurrentNetwork(n3);
+
+ assertEquals(n3, appMgr.getCurrentNetwork());
+ assertEquals(3, appMgr.getSelectedNetworks().size());
+ }
+
+ @Test
public void testSetCurrentNetworkView() {
CyNetworkView view = newNetworkView();
appMgr.setCurrentNetworkView(view);
@@ -158,6 +182,33 @@
}
@Test
+ public void testSetUnselectedCurrentNetworkViewChangesViewSelection() {
+ // Setting a current view that is not selected changes the
network view selection
+ CyNetworkView v1 = newNetworkView();
+ CyNetworkView v2 = newNetworkView();
+ CyNetworkView v3 = newNetworkView();
+ appMgr.setSelectedNetworkViews(Arrays.asList(new
CyNetworkView[]{ v1, v2 }));
+ appMgr.setCurrentNetworkView(v3);
+
+ assertEquals(v3, appMgr.getCurrentNetworkView());
+ assertEquals(1, appMgr.getSelectedNetworkViews().size());
+ assertTrue(appMgr.getSelectedNetworkViews().contains(v3));
+ }
+
+ @Test
+ public void
testSetSelectedCurrentNetworkViewDoesNotChangeViewSelection() {
+ // Setting a current view that is already selected does NOT
change the network view selection state
+ CyNetworkView v1 = newNetworkView();
+ CyNetworkView v2 = newNetworkView();
+ CyNetworkView v3 = newNetworkView();
+ appMgr.setSelectedNetworkViews(Arrays.asList(new
CyNetworkView[]{ v1, v2, v3 }));
+ appMgr.setCurrentNetworkView(v3);
+
+ assertEquals(v3, appMgr.getCurrentNetworkView());
+ assertEquals(3, appMgr.getSelectedNetworkViews().size());
+ }
+
+ @Test
public void testSetSelectedNetworks() {
final CyNetworkView v1 = newNetworkView();
final CyNetworkView v2 = newNetworkView();
@@ -196,21 +247,23 @@
@Test
public void testSetSelectedNetworkViews() {
+ final List<CyNetwork> nets =
Collections.singletonList(newNetwork());
+ appMgr.setSelectedNetworks(nets);
+
final CyNetworkView v1 = newNetworkView();
final CyNetworkView v2 = newNetworkView();
- final CyNetworkView v3 = newNetworkView();
- final List<CyNetworkView> views = Arrays.asList(new
CyNetworkView[]{v1, v3});
+ final List<CyNetworkView> views = Arrays.asList(new
CyNetworkView[]{v1, v2});
+ appMgr.setSelectedNetworkViews(views);
- appMgr.setSelectedNetworkViews(views);
+ final List<CyNetworkView> selectedViews =
appMgr.getSelectedNetworkViews();
final List<CyNetwork> selectedNets =
appMgr.getSelectedNetworks();
- final List<CyNetworkView> selectedViews =
appMgr.getSelectedNetworkViews();
assertEquals(2, selectedViews.size());
assertTrue(selectedViews.containsAll(views));
-// assertEquals(2, selectedNets.size()); // Selecting views also
selects their models!
-// assertTrue(selectedNets.containsAll(Arrays.asList(new
CyNetwork[]{v1.getModel(), v3.getModel()})));
+ assertEquals(1, selectedNets.size()); // Selected networks
didn't change
+ assertTrue(selectedNets.containsAll(nets));
assertNull(appMgr.getCurrentNetwork()); // Shouldn't change the
current network
- assertNull(appMgr.getCurrentNetworkView());
+ assertNull(appMgr.getCurrentNetworkView()); // Shouldn't change
the current network view
}
@Test
--
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.