Skip to content

Commit 074bde9

Browse files
committed
Add Find Clusters button
1 parent 875b0c8 commit 074bde9

File tree

2 files changed

+54
-12
lines changed

2 files changed

+54
-12
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/control/ControlPanel.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import org.baderlab.csplugins.enrichmentmap.style.ColorScheme;
6666
import org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder;
6767
import org.baderlab.csplugins.enrichmentmap.util.NetworkUtil;
68-
import org.baderlab.csplugins.enrichmentmap.view.creation.DependencyChecker;
6968
import org.baderlab.csplugins.enrichmentmap.view.util.ComboItem;
7069
import org.baderlab.csplugins.enrichmentmap.view.util.Labels;
7170
import org.baderlab.csplugins.enrichmentmap.view.util.SliderBarPanel;
@@ -75,7 +74,6 @@
7574
import org.cytoscape.model.CyDisposable;
7675
import org.cytoscape.model.CyNetwork;
7776
import org.cytoscape.model.CyNetworkManager;
78-
import org.cytoscape.service.util.CyServiceRegistrar;
7977
import org.cytoscape.util.swing.IconManager;
8078
import org.cytoscape.util.swing.LookAndFeelUtil;
8179
import org.cytoscape.util.swing.TextIcon;
@@ -94,13 +92,11 @@ public class ControlPanel extends JPanel implements CytoPanelComponent2, CyDispo
9492

9593
private static final String BORDER_COLOR_KEY = "Separator.foreground";
9694

97-
@Inject private CyServiceRegistrar serviceRegistrar;
9895
@Inject private CyNetworkManager networkManager;
9996
@Inject private CyNetworkViewManager networkViewManager;
10097
@Inject private IconManager iconManager;
10198
@Inject private EnrichmentMapManager emManager;
10299
@Inject private DataSetSelector.Factory dataSetSelectorFactory;
103-
@Inject private DependencyChecker dependencyChecker;
104100

105101
private JPanel ctrlPanelsContainer;
106102
private final CardLayout cardLayout = new CardLayout();
@@ -488,6 +484,7 @@ class EMViewControlPanel extends AbstractViewControlPanel {
488484
private DataSetSelector dataSetSelector;
489485
private JCheckBox publicationReadyCheck;
490486
private JButton showLegendButton;
487+
private JButton findClustersButton;
491488

492489
private JComboBox<ChartData> chartDataCombo;
493490
private JComboBox<ChartType> chartTypeCombo;
@@ -708,7 +705,7 @@ private JPanel createFilterPanel() {
708705
private JPanel createStylePanel() {
709706
makeSmall(chartDataLabel, chartTypeLabel, chartColorsLabel);
710707
makeSmall(getChartDataCombo(), getChartTypeCombo(), getChartColorsCombo(), getShowChartLabelsCheck());
711-
makeSmall(getPublicationReadyCheck(), getShowLegendButton(), getResetStyleButton());
708+
makeSmall(getPublicationReadyCheck(), getFindClustersButton(), getShowLegendButton(), getResetStyleButton());
712709

713710
final JPanel panel = new JPanel();
714711
panel.setBorder(LookAndFeelUtil.createTitledBorder("Style"));
@@ -735,6 +732,8 @@ private JPanel createStylePanel() {
735732
)
736733
)
737734
.addGroup(layout.createSequentialGroup()
735+
.addComponent(getFindClustersButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
736+
.addPreferredGap(ComponentPlacement.UNRELATED)
738737
.addComponent(getShowLegendButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
739738
.addPreferredGap(ComponentPlacement.UNRELATED)
740739
.addComponent(getResetStyleButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
@@ -758,6 +757,7 @@ private JPanel createStylePanel() {
758757
.addComponent(getPublicationReadyCheck(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
759758
.addPreferredGap(ComponentPlacement.UNRELATED)
760759
.addGroup(layout.createParallelGroup(CENTER, false)
760+
.addComponent(getFindClustersButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
761761
.addComponent(getShowLegendButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
762762
.addComponent(getResetStyleButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
763763
)
@@ -1004,6 +1004,15 @@ JButton getShowLegendButton() {
10041004
return showLegendButton;
10051005
}
10061006

1007+
JButton getFindClustersButton() {
1008+
if (findClustersButton == null) {
1009+
findClustersButton = new JButton("Find Clusters...");
1010+
if (isAquaLAF())
1011+
findClustersButton.putClientProperty("JButton.buttonType", "gradient");
1012+
}
1013+
return findClustersButton;
1014+
}
1015+
10071016
void updateFilterPanel() {
10081017
if (nodeCutoffGroup.getSelection() != null) {
10091018
boolean isQValue = nodeCutoffGroup.getSelection().equals(getQValueRadio().getModel());

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/control/ControlPanelMediator.java

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import org.baderlab.csplugins.enrichmentmap.style.EMStyleOptions;
7474
import org.baderlab.csplugins.enrichmentmap.style.WidthFunction;
7575
import org.baderlab.csplugins.enrichmentmap.task.ApplyEMStyleTask;
76+
import org.baderlab.csplugins.enrichmentmap.task.AutoAnnotateInitTask;
7677
import org.baderlab.csplugins.enrichmentmap.task.AutoAnnotateOpenTask;
7778
import org.baderlab.csplugins.enrichmentmap.task.AutoAnnotateRedrawTask;
7879
import org.baderlab.csplugins.enrichmentmap.task.FilterNodesEdgesTask;
@@ -89,6 +90,7 @@
8990
import org.baderlab.csplugins.enrichmentmap.view.control.io.ViewParams;
9091
import org.baderlab.csplugins.enrichmentmap.view.control.io.ViewParams.CutoffParam;
9192
import org.baderlab.csplugins.enrichmentmap.view.creation.CreationDialogShowAction;
93+
import org.baderlab.csplugins.enrichmentmap.view.creation.DependencyChecker;
9294
import org.baderlab.csplugins.enrichmentmap.view.creation.genemania.GenemaniaDialogShowAction;
9395
import org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction;
9496
import org.baderlab.csplugins.enrichmentmap.view.heatmap.HeatMapMediator;
@@ -148,8 +150,11 @@ public class ControlPanelMediator implements SetCurrentNetworkViewListener, Enri
148150
@Inject private CreationDialogShowAction masterMapDialogAction;
149151
@Inject private VisualMappingManager visualMappingManager;
150152
@Inject private PropertyManager propertyManager;
153+
154+
@Inject private DependencyChecker dependencyChecker;
151155
@Inject private Provider<AutoAnnotateOpenTask> autoAnnotateOpenTaskProvider;
152156
@Inject private Provider<AutoAnnotateRedrawTask> autoAnnotateRedrawTaskProvider;
157+
@Inject private AutoAnnotateInitTask.Factory autoAnnotateInitTaskFactory;
153158

154159
@Inject private CyServiceRegistrar serviceRegistrar;
155160
@Inject private CyApplicationManager applicationManager;
@@ -622,10 +627,12 @@ private void addListeners(EMViewControlPanel viewPanel, EnrichmentMap map) {
622627
updateVisualStyle(map, viewPanel, StyleUpdateScope.PUBLICATION_READY);
623628
});
624629

625-
// MKTODO we should have a warning dialog when resetting the entire style
626630
viewPanel.getResetStyleButton().addActionListener(evt -> resetStyle(map, viewPanel));
627-
// viewPanel.getSetEdgeWidthButton().addActionListener(evt -> showEdgeWidthDialog());
628631
viewPanel.getShowLegendButton().addActionListener(evt -> showLegendDialog());
632+
viewPanel.getFindClustersButton().addActionListener(evt -> {
633+
var button = viewPanel.getFindClustersButton();
634+
getClusterMenu().show(button, 0, button.getHeight());
635+
});
629636

630637
viewPanel.updateChartDataCombo();
631638
}
@@ -703,12 +710,11 @@ private void init() {
703710
});
704711

705712
ctrlPanel.getOptionsButton().addActionListener(evt -> {
706-
getOptionsMenu().show(ctrlPanel.getOptionsButton(), 0, ctrlPanel.getOptionsButton().getHeight());
713+
var button = ctrlPanel.getOptionsButton();
714+
getOptionsMenu().show(button, 0, button.getHeight());
707715
});
708716

709-
ctrlPanel.getClosePanelButton().addActionListener(evt -> {
710-
closeControlPanel();
711-
});
717+
ctrlPanel.getClosePanelButton().addActionListener(evt -> closeControlPanel());
712718

713719
ctrlPanel.update(applicationManager.getCurrentNetworkView());
714720

@@ -965,7 +971,7 @@ private void showLegendDialog() {
965971
}
966972

967973
private JPopupMenu getOptionsMenu() {
968-
final JPopupMenu menu = new JPopupMenu();
974+
JPopupMenu menu = new JPopupMenu();
969975

970976
{
971977
JMenuItem showLegendItem = new JCheckBoxMenuItem("Show Legend");
@@ -1016,6 +1022,33 @@ private JPopupMenu getOptionsMenu() {
10161022
}
10171023

10181024

1025+
private JPopupMenu getClusterMenu() {
1026+
JPopupMenu menu = new JPopupMenu();
1027+
1028+
JMenuItem openAAItem = new JMenuItem("Use AutoAnnotate to find clusters of similar nodes");
1029+
openAAItem.setEnabled(dependencyChecker.isCommandAvailable("autoannotate", "open"));
1030+
openAAItem.addActionListener(e -> {
1031+
var task = autoAnnotateOpenTaskProvider.get();
1032+
syncTaskManager.execute(new TaskIterator(task));
1033+
});
1034+
menu.add(openAAItem);
1035+
1036+
JMenuItem emInitItem = new JMenuItem("Highlight significant nodes");
1037+
emInitItem.setEnabled(dependencyChecker.isCommandAvailable("autoannotate", "eminit"));
1038+
emInitItem.addActionListener(e -> {
1039+
var dataSetList = getCurrentMap().getDataSetList();
1040+
if(!dataSetList.isEmpty()) { // can this even happen?
1041+
var dataSet = dataSetList.get(0);
1042+
var task = autoAnnotateInitTaskFactory.create(dataSet.getName());
1043+
syncTaskManager.execute(new TaskIterator(task));
1044+
}
1045+
});
1046+
menu.add(emInitItem);
1047+
1048+
return menu;
1049+
}
1050+
1051+
10191052
private void showCreationParamsDialog(CyNetworkView netView) {
10201053
JDialog d = new JDialog(swingApplication.getJFrame(), "EnrichmentMap Creation Parameters", ModalityType.APPLICATION_MODAL);
10211054
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

0 commit comments

Comments
 (0)