|
76 | 76 | import org.baderlab.csplugins.enrichmentmap.task.SelectNodesEdgesTask;
|
77 | 77 | import org.baderlab.csplugins.enrichmentmap.task.UpdateAssociatedStyleTask;
|
78 | 78 | import org.baderlab.csplugins.enrichmentmap.task.postanalysis.RemoveSignatureDataSetsTask;
|
| 79 | +import org.baderlab.csplugins.enrichmentmap.util.CoalesceTimer; |
79 | 80 | import org.baderlab.csplugins.enrichmentmap.util.NetworkUtil;
|
80 | 81 | import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
|
81 | 82 | import org.baderlab.csplugins.enrichmentmap.view.control.ControlPanel.AbstractViewControlPanel;
|
|
106 | 107 | import org.cytoscape.model.CyNode;
|
107 | 108 | import org.cytoscape.model.CyRow;
|
108 | 109 | import org.cytoscape.model.CyTable;
|
| 110 | +import org.cytoscape.model.CyTableUtil; |
| 111 | +import org.cytoscape.model.events.RowsSetEvent; |
| 112 | +import org.cytoscape.model.events.RowsSetListener; |
109 | 113 | import org.cytoscape.service.util.CyServiceRegistrar;
|
110 | 114 | import org.cytoscape.util.swing.LookAndFeelUtil;
|
111 | 115 | import org.cytoscape.util.swing.TextIcon;
|
|
122 | 126 | import com.google.inject.Singleton;
|
123 | 127 |
|
124 | 128 | @Singleton
|
125 |
| -public class ControlPanelMediator implements SetCurrentNetworkViewListener, EnrichmentMapAddedListener, EnrichmentMapAboutToBeRemovedListener, AssociatedEnrichmentMapsChangedListener { |
| 129 | +public class ControlPanelMediator implements SetCurrentNetworkViewListener, EnrichmentMapAddedListener, |
| 130 | + EnrichmentMapAboutToBeRemovedListener, AssociatedEnrichmentMapsChangedListener, RowsSetListener { |
126 | 131 |
|
127 | 132 | @Inject private Provider<ControlPanel> controlPanelProvider;
|
128 | 133 | @Inject private Provider<LegendPanelMediator> legendPanelMediatorProvider;
|
@@ -151,6 +156,7 @@ public class ControlPanelMediator implements SetCurrentNetworkViewListener, Enri
|
151 | 156 |
|
152 | 157 | private FilterMode filterMode = FilterMode.HIDE;
|
153 | 158 |
|
| 159 | + private final CoalesceTimer selectionEventTimer = new CoalesceTimer(200, 1); |
154 | 160 | private Map<CyNetworkView, Timer> filterTimers = new HashMap<>();
|
155 | 161 |
|
156 | 162 | private boolean firstTime = true;
|
@@ -369,6 +375,45 @@ public void handleEvent(SetCurrentNetworkViewEvent e) {
|
369 | 375 | updateLegends(viewPanel);
|
370 | 376 | });
|
371 | 377 | }
|
| 378 | + |
| 379 | + @Override |
| 380 | + public void handleEvent(RowsSetEvent e) { |
| 381 | + // TODO Auto-generated method stub |
| 382 | + if(e.containsColumn(CyNetwork.SELECTED)) { |
| 383 | + CyNetworkView networkView = applicationManager.getCurrentNetworkView(); |
| 384 | + if(networkView != null) { |
| 385 | + CyNetwork network = networkView.getModel(); |
| 386 | + // only handle event if it is a selected node |
| 387 | + if(e.getSource() == network.getDefaultEdgeTable() || e.getSource() == network.getDefaultNodeTable()) { |
| 388 | + selectionEventTimer.coalesce(() -> updateFromNodeSelection(networkView)); |
| 389 | + } |
| 390 | + } |
| 391 | + } |
| 392 | + } |
| 393 | + |
| 394 | + private void updateFromNodeSelection(CyNetworkView networkView) { |
| 395 | + if(networkView == null) |
| 396 | + return; |
| 397 | + |
| 398 | + EnrichmentMap map = getCurrentMap(); |
| 399 | + if(map == null) |
| 400 | + return; |
| 401 | + |
| 402 | + EMViewControlPanel controlPanel = getControlPanel().getViewControlPanel(networkView); |
| 403 | + if(controlPanel == null) |
| 404 | + return; |
| 405 | + |
| 406 | + CyNetwork network = networkView.getModel(); |
| 407 | + List<CyNode> selectedNodes = CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, true); |
| 408 | + List<CyEdge> selectedEdges = CyTableUtil.getEdgesInState(network, CyNetwork.SELECTED, true); |
| 409 | + |
| 410 | + List<AbstractDataSet> dataSets = new ArrayList<>(map.getDataSetList()); |
| 411 | + dataSets.addAll(map.getSignatureSetList()); |
| 412 | + |
| 413 | + dataSets = HeatMapMediator.filterDataSetsForSelection(dataSets, map, selectedNodes, selectedEdges); |
| 414 | + |
| 415 | + controlPanel.getDataSetSelector().setHighlightedDataSets(dataSets); |
| 416 | + } |
372 | 417 |
|
373 | 418 | @Override
|
374 | 419 | public void handleEvent(EnrichmentMapAddedEvent e) {
|
|
0 commit comments