Skip to content

Commit 102e9ff

Browse files
committed
Replace DataSetSelector buttons and context menu with an Options menu.
Refs #474
1 parent a94f8b9 commit 102e9ff

File tree

2 files changed

+115
-105
lines changed

2 files changed

+115
-105
lines changed

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

Lines changed: 17 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package org.baderlab.csplugins.enrichmentmap.view.control;
22

3-
import static org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns.*;
3+
import static org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns.EDGE_DATASET_VALUE_COMPOUND;
4+
import static org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns.EDGE_INTERACTION_VALUE_SIG;
5+
import static org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns.NODE_GS_TYPE;
6+
import static org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns.NODE_GS_TYPE_ENRICHMENT;
47
import static org.baderlab.csplugins.enrichmentmap.view.util.SwingUtil.invokeOnEDT;
58

69
import java.awt.BorderLayout;
@@ -10,7 +13,6 @@
1013
import java.awt.event.ActionEvent;
1114
import java.awt.event.ActionListener;
1215
import java.awt.event.ItemEvent;
13-
import java.awt.event.MouseAdapter;
1416
import java.awt.event.MouseEvent;
1517
import java.util.ArrayList;
1618
import java.util.Collection;
@@ -470,7 +472,7 @@ private void addListeners(EMViewControlPanel viewPanel, EnrichmentMap map) {
470472
if (sSliderPanel != null)
471473
sSliderPanel.addChangeListener(e -> updateFilters.run());
472474

473-
viewPanel.getDataSetSelector().addPropertyChangeListener("checkedData", evt -> {
475+
viewPanel.getDataSetSelector().addPropertyChangeListener(DataSetSelector.PROP_CHECKED_DATA_SETS, evt -> {
474476
if (!updating) {
475477
viewPanel.updateChartDataCombo();
476478

@@ -499,11 +501,11 @@ private void addListeners(EMViewControlPanel viewPanel, EnrichmentMap map) {
499501
}
500502
});
501503

502-
viewPanel.getDataSetSelector().getAddButton().addActionListener(evt -> {
504+
viewPanel.getDataSetSelector().getAddMenuItem().addActionListener(evt -> {
503505
paDialogMediatorProvider.get().showDialog(netView);
504506
});
505507

506-
viewPanel.getDataSetSelector().getDataSetColorButton().addActionListener(evt -> {
508+
viewPanel.getDataSetSelector().getDataSetColorMenuItem().addActionListener(evt -> {
507509
boolean colorsChanged = showColorDialog(map);
508510
if(colorsChanged) {
509511
viewPanel.getDataSetSelector().update();
@@ -512,73 +514,38 @@ private void addListeners(EMViewControlPanel viewPanel, EnrichmentMap map) {
512514
}
513515
});
514516

515-
viewPanel.getDataSetSelector().getTable().addMouseListener(new MouseAdapter() {
516-
@Override
517-
public void mousePressed(final MouseEvent e) {
518-
maybeShowContextMenu(e);
519-
}
520-
@Override
521-
public void mouseReleased(final MouseEvent e) {
522-
maybeShowContextMenu(e);
523-
}
524-
private void maybeShowContextMenu(final MouseEvent e) {
525-
if (e.isPopupTrigger()) {
526-
final JPopupMenu contextMenu = new JPopupMenu();
527-
{
528-
JMenuItem mi = new JMenuItem("Select nodes and edges from selected data sets");
529-
mi.addActionListener(evt -> selectNodesEdges(
530-
viewPanel.getNetworkView(),
531-
viewPanel.getDataSetSelector().getSelectedItems(),
532-
map.getParams().getCreateDistinctEdges()
533-
));
534-
contextMenu.add(mi);
535-
}
536-
contextMenu.addSeparator();
537-
{
538-
Set<AbstractDataSet> selected = viewPanel.getDataSetSelector().getSelectedItems();
539-
boolean onlySignatureSelected = !selected.isEmpty();
540-
541-
for (AbstractDataSet ds : selected) {
542-
if (ds instanceof EMSignatureDataSet == false) {
543-
onlySignatureSelected = false;
544-
break;
545-
}
546-
}
547-
548-
JMenuItem mi = new JMenuItem("Remove selected signature gene sets");
549-
mi.addActionListener(evt -> removeSignatureDataSets(map, viewPanel));
550-
mi.setEnabled(onlySignatureSelected);
551-
contextMenu.add(mi);
552-
}
553-
showContextMenu(contextMenu, e);
554-
}
555-
}
517+
viewPanel.getDataSetSelector().getDeleteSignatureMenuItem().addActionListener(evt -> {
518+
removeSignatureDataSets(map, viewPanel);
519+
});
520+
521+
viewPanel.getDataSetSelector().getSelectNodesMenuItem().addActionListener(evt -> {
522+
selectNodesEdges(
523+
viewPanel.getNetworkView(),
524+
viewPanel.getDataSetSelector().getSelectedItems(),
525+
map.getParams().getCreateDistinctEdges()
526+
);
556527
});
557528

558529
viewPanel.getChartDataCombo().addItemListener(evt -> {
559530
if (!updating && evt.getStateChange() == ItemEvent.SELECTED) {
560531
updating = true;
561-
562532
try {
563533
viewPanel.updateChartCombos();
564534
} finally {
565535
updating = false;
566536
}
567-
568537
updateVisualStyle(map, viewPanel, StyleUpdateScope.ONLY_CHARTS);
569538
}
570539
});
571540
viewPanel.getChartTypeCombo().addItemListener(evt -> {
572541
if (!updating && evt.getStateChange() == ItemEvent.SELECTED) {
573542
updating = true;
574-
575543
try {
576544
viewPanel.updateChartColorsCombo();
577545
viewPanel.updateChartLabelsCheck();
578546
} finally {
579547
updating = false;
580548
}
581-
582549
updateVisualStyle(map, viewPanel, StyleUpdateScope.ONLY_CHARTS);
583550
}
584551
});

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

Lines changed: 98 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
import javax.swing.JButton;
2727
import javax.swing.JCheckBox;
2828
import javax.swing.JLabel;
29+
import javax.swing.JMenuItem;
2930
import javax.swing.JPanel;
31+
import javax.swing.JPopupMenu;
3032
import javax.swing.JScrollPane;
3133
import javax.swing.JTable;
3234
import javax.swing.JTextField;
@@ -47,10 +49,13 @@
4749
import org.cytoscape.service.util.CyServiceRegistrar;
4850
import org.cytoscape.util.swing.IconManager;
4951
import org.cytoscape.util.swing.LookAndFeelUtil;
50-
52+
5153
@SuppressWarnings("serial")
5254
public class DataSetSelector extends JPanel {
5355

56+
public static final String PROP_CHECKED_DATA_SETS = "checkedData";
57+
58+
5459
private static final String[] HEARDER_NAMES = new String[]{ "", "", "Name", "" };
5560

5661
private static final int SELECTED_COL_IDX = 0;
@@ -62,10 +67,17 @@ public class DataSetSelector extends JPanel {
6267

6368
private JTable table;
6469
private JScrollPane tableScrollPane;
65-
private JButton addButton;
66-
private JButton colorButton;
67-
private JButton selectAllButton;
68-
private JButton selectNoneButton;
70+
private JMenuItem addMenuItem;
71+
private JMenuItem colorMenuItem;
72+
private JMenuItem selectAllMenuItem;
73+
private JMenuItem selectNoneMenuItem;
74+
private JMenuItem selectNodesMenuItem;
75+
private JMenuItem deleteSignatureMenuItem;
76+
// private JButton addButton;
77+
// private JButton colorButton;
78+
// private JButton selectAllButton;
79+
// private JButton selectNoneButton;
80+
private JButton optionButton;
6981

7082
private final EnrichmentMap map;
7183

@@ -137,7 +149,7 @@ public void setCheckedItems(Set<AbstractDataSet> newValue) {
137149

138150
getTable().repaint();
139151
updateSelectionButtons();
140-
firePropertyChange("checkedData", oldValue, getCheckedItems());
152+
firePropertyChange(PROP_CHECKED_DATA_SETS, oldValue, getCheckedItems());
141153
}
142154

143155
public Set<AbstractDataSet> getSelectedItems() {
@@ -156,8 +168,6 @@ private void init() {
156168
JLabel titleLabel = new JLabel("Data Sets:");
157169
makeSmall(titleLabel);
158170

159-
LookAndFeelUtil.equalizeSize(getSelectAllButton(), getSelectNoneButton());
160-
161171
final int rh = getTable().getRowHeight() + 2;
162172

163173
final GroupLayout layout = new GroupLayout(this);
@@ -168,26 +178,16 @@ private void init() {
168178
layout.setHorizontalGroup(layout.createParallelGroup(CENTER, true)
169179
.addGroup(layout.createSequentialGroup()
170180
.addComponent(titleLabel, DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
171-
.addComponent(getSelectAllButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
172-
.addComponent(getSelectNoneButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
181+
.addComponent(getOptionsButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
173182
)
174183
.addComponent(getTableScrollPane(), DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
175-
.addGroup(layout.createSequentialGroup()
176-
.addComponent(getDataSetColorButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
177-
.addComponent(getAddButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
178-
)
179184
);
180185
layout.setVerticalGroup(layout.createSequentialGroup()
181186
.addGroup(layout.createParallelGroup(CENTER, false)
182187
.addComponent(titleLabel, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
183-
.addComponent(getSelectAllButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
184-
.addComponent(getSelectNoneButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
188+
.addComponent(getOptionsButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
185189
)
186190
.addComponent(getTableScrollPane(), rh * 2, rh * 3, Short.MAX_VALUE)
187-
.addGroup(layout.createParallelGroup(CENTER, false)
188-
.addComponent(getDataSetColorButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
189-
.addComponent(getAddButton(), PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
190-
)
191191
);
192192

193193
if (isAquaLAF())
@@ -243,8 +243,8 @@ private void updateSelectionButtons() {
243243
break;
244244
}
245245

246-
getSelectAllButton().setEnabled(hasUnchecked);
247-
getSelectNoneButton().setEnabled(hasChecked);
246+
getSelectAllMenuItem().setEnabled(hasUnchecked);
247+
getSelectNoneMenuItem().setEnabled(hasChecked);
248248
}
249249

250250
JTable getTable() {
@@ -276,6 +276,7 @@ public TableCellRenderer getCellRenderer(int row, int column) {
276276
previousSelectedRows = Arrays.stream(table.getSelectedRows()).boxed().collect(Collectors.toList());
277277
}
278278
});
279+
279280
table.addMouseListener(new MouseAdapter() {
280281
@Override
281282
public void mousePressed(MouseEvent e) {
@@ -333,52 +334,94 @@ public void mousePressed(MouseEvent e) {
333334
return tableScrollPane;
334335
}
335336

336-
JButton getAddButton() {
337-
if (addButton == null) {
338-
addButton = new JButton(PADialogMediator.NAME);
339-
addButton.setToolTipText("Post Analysis");
340-
makeSmall(addButton);
341-
if (isAquaLAF())
342-
addButton.putClientProperty("JButton.buttonType", "gradient");
337+
JMenuItem getAddMenuItem() {
338+
if (addMenuItem == null) {
339+
addMenuItem = new JMenuItem(PADialogMediator.NAME);
343340
}
344-
return addButton;
341+
return addMenuItem;
345342
}
346343

347-
JButton getDataSetColorButton() {
348-
if (colorButton == null) {
349-
colorButton = new JButton("Change Colors...");
350-
colorButton.setToolTipText("Change data set colors");
351-
makeSmall(colorButton);
352-
if (isAquaLAF())
353-
colorButton.putClientProperty("JButton.buttonType", "gradient");
344+
JMenuItem getDataSetColorMenuItem() {
345+
if (colorMenuItem == null) {
346+
colorMenuItem = new JMenuItem("Change data set colors...");
354347
}
355-
return colorButton;
348+
return colorMenuItem;
356349
}
357350

358-
JButton getSelectAllButton() {
359-
if (selectAllButton == null) {
360-
selectAllButton = new JButton("Select All");
361-
selectAllButton.addActionListener(evt -> {
351+
JMenuItem getSelectAllMenuItem() {
352+
if (selectAllMenuItem == null) {
353+
selectAllMenuItem = new JMenuItem("Select All");
354+
selectAllMenuItem.addActionListener(evt -> {
362355
setCheckedToAllRows(true);
363356
});
364-
makeSmall(selectAllButton);
365-
if (isAquaLAF())
366-
selectAllButton.putClientProperty("JButton.buttonType", "gradient");
367357
}
368-
return selectAllButton;
358+
return selectAllMenuItem;
369359
}
370360

371-
JButton getSelectNoneButton() {
372-
if (selectNoneButton == null) {
373-
selectNoneButton = new JButton("Select None");
374-
selectNoneButton.addActionListener(evt -> {
361+
JMenuItem getSelectNoneMenuItem() {
362+
if (selectNoneMenuItem == null) {
363+
selectNoneMenuItem = new JMenuItem("Select None");
364+
selectNoneMenuItem.addActionListener(evt -> {
375365
setCheckedToAllRows(false);
376366
});
377-
makeSmall(selectNoneButton);
367+
}
368+
return selectNoneMenuItem;
369+
}
370+
371+
JMenuItem getSelectNodesMenuItem() {
372+
if (selectNodesMenuItem == null) {
373+
selectNodesMenuItem = new JMenuItem("Select nodes and edges from selected data sets");
374+
}
375+
return selectNodesMenuItem;
376+
}
377+
378+
JMenuItem getDeleteSignatureMenuItem() {
379+
if (deleteSignatureMenuItem == null) {
380+
deleteSignatureMenuItem = new JMenuItem("Remove selected signature gene sets");
381+
}
382+
return deleteSignatureMenuItem;
383+
}
384+
385+
JButton getOptionsButton() {
386+
if (optionButton == null) {
387+
optionButton = new JButton("Options...");
388+
makeSmall(optionButton);
378389
if (isAquaLAF())
379-
selectNoneButton.putClientProperty("JButton.buttonType", "gradient");
390+
optionButton.putClientProperty("JButton.buttonType", "gradient");
391+
392+
optionButton.addActionListener(e -> {
393+
getOptionsMenu().show(optionButton, 0, optionButton.getHeight());
394+
});
395+
}
396+
return optionButton;
397+
}
398+
399+
private JPopupMenu getOptionsMenu() {
400+
JPopupMenu menu = new JPopupMenu();
401+
menu.add(getAddMenuItem());
402+
menu.add(getDataSetColorMenuItem());
403+
menu.addSeparator();
404+
menu.add(getSelectAllMenuItem());
405+
menu.add(getSelectNoneMenuItem());
406+
menu.addSeparator();
407+
menu.add(getSelectNodesMenuItem());
408+
menu.add(getDeleteSignatureMenuItem());
409+
410+
getDeleteSignatureMenuItem().setEnabled(isOnlySignatureSelected());
411+
412+
return menu;
413+
}
414+
415+
private boolean isOnlySignatureSelected() {
416+
Set<AbstractDataSet> selected = getSelectedItems();
417+
boolean onlySignatureSelected = !selected.isEmpty();
418+
for (AbstractDataSet ds : selected) {
419+
if (ds instanceof EMSignatureDataSet == false) {
420+
onlySignatureSelected = false;
421+
break;
422+
}
380423
}
381-
return selectNoneButton;
424+
return onlySignatureSelected;
382425
}
383426

384427
private void setCheckedToAllRows(final boolean checked) {
@@ -393,7 +436,7 @@ private void setCheckedToAllRows(final boolean checked) {
393436

394437
getTable().repaint();
395438
updateSelectionButtons();
396-
firePropertyChange("checkedData", oldValue, getCheckedItems());
439+
firePropertyChange(PROP_CHECKED_DATA_SETS, oldValue, getCheckedItems());
397440
}
398441

399442
private void toggleChecked(final int row) {
@@ -410,7 +453,7 @@ private void toggleChecked(final int row) {
410453

411454
getTable().repaint();
412455
updateSelectionButtons();
413-
firePropertyChange("checkedData", oldValue, getCheckedItems());
456+
firePropertyChange(PROP_CHECKED_DATA_SETS, oldValue, getCheckedItems());
414457
}
415458
}
416459

0 commit comments

Comments
 (0)