Skip to content

Commit 2f5babd

Browse files
committed
Add option to turn data set sync on/off.
Refs #474
1 parent 34d6889 commit 2f5babd

File tree

6 files changed

+86
-42
lines changed

6 files changed

+86
-42
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/ApplicationModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.baderlab.csplugins.enrichmentmap.task.postanalysis.RemoveSignatureDataSetsTask;
2525
import org.baderlab.csplugins.enrichmentmap.task.string.QueryStringTask;
2626
import org.baderlab.csplugins.enrichmentmap.view.control.DataSetColorSelectorDialog;
27+
import org.baderlab.csplugins.enrichmentmap.view.control.DataSetSelector;
2728
import org.baderlab.csplugins.enrichmentmap.view.creation.DetailDataSetPanel;
2829
import org.baderlab.csplugins.enrichmentmap.view.creation.EMDialogTaskRunner;
2930
import org.baderlab.csplugins.enrichmentmap.view.creation.PathTextField;
@@ -116,6 +117,7 @@ protected void configure() {
116117
installFactory(DataSetColorSelectorDialog.Factory.class);
117118
installFactory(LoadEnrichmentsFromGenemaniaTask.Factory.class);
118119
installFactory(EMDialogTaskRunner.Factory.class);
120+
installFactory(DataSetSelector.Factory.class);
119121
}
120122

121123
private void installFactory(Class<?> factoryInterface) {

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/PropertyManager.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import java.util.Properties;
1111
import java.util.function.Function;
1212

13+
import javax.swing.JCheckBoxMenuItem;
14+
1315
import org.baderlab.csplugins.enrichmentmap.actions.OpenPathwayCommonsTask;
1416
import org.baderlab.csplugins.enrichmentmap.view.creation.genemania.GenemaniaDialogParameters;
1517
import org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogParameters;
@@ -43,6 +45,7 @@ public class PropertyManager implements PropertyUpdatedListener {
4345
public static final Property<Boolean> CREATE_WARN = Property.of("create.warn", true);
4446
public static final Property<Distance> DISTANCE_METRIC = Property.of("default.distanceMetric", Distance.PEARSON, Distance::valueOf);
4547
public static final Property<String> PATHWAY_COMMONS_URL = Property.of("pathway.commons.url", OpenPathwayCommonsTask.DEFAULT_BASE_URL);
48+
public static final Property<Boolean> CONTROL_DATASET_SELECT_SYNC = Property.of("control.dataset.sync", false);
4649

4750
public static final Property<String> STRING_COLUMN_NAME = Property.of("string.column.name", StringDialogParameters.NAME_COLUMN_DEF);
4851
public static final Property<String> STRING_COLUMN_FDR = Property.of("string.column.fdr", StringDialogParameters.FDR_COLUMN_DEF);
@@ -124,6 +127,10 @@ public boolean isTrue(Property<Boolean> property) {
124127
return Boolean.TRUE.equals(getValue(property));
125128
}
126129

130+
public boolean isFalse(Property<Boolean> property) {
131+
return !isTrue(property);
132+
}
133+
127134
@SuppressWarnings("rawtypes")
128135
public static List<Property<?>> getAllProperties() {
129136
List<Property<?>> properties = new ArrayList<>();
@@ -172,4 +179,21 @@ public static Property<Double> of(String key, double defaultValue) {
172179
}
173180
}
174181

182+
183+
public JCheckBoxMenuItem createJCheckBoxMenuItem(Property<Boolean> property, String label) {
184+
JCheckBoxMenuItem checkbox = new JCheckBoxMenuItem(label);
185+
checkbox.setSelected(isTrue(property));
186+
187+
PropertyListener<Boolean> listener = (prop, value) -> checkbox.setSelected(value);
188+
addListener(property, listener);
189+
190+
checkbox.addActionListener(e -> {
191+
removeListener(property, listener);
192+
setValue(property, checkbox.isSelected());
193+
addListener(property, listener);
194+
});
195+
196+
return checkbox;
197+
}
198+
175199
}

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,19 @@
66
import static javax.swing.GroupLayout.Alignment.LEADING;
77
import static javax.swing.GroupLayout.Alignment.TRAILING;
88
import static org.baderlab.csplugins.enrichmentmap.EMBuildProps.HELP_URL_CONTROL;
9-
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.*;
9+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.EM_ICON_COLORS;
10+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.GENEMANIA_ICON;
11+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.GENEMANIA_ICON_COLOR;
12+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.LAYERED_EM_ICON;
13+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.LAYERED_STRING_ICON;
14+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.STRING_ICON_COLORS;
15+
import static org.baderlab.csplugins.enrichmentmap.view.util.IconUtil.getIconFont;
1016
import static org.baderlab.csplugins.enrichmentmap.view.util.SwingUtil.makeSmall;
11-
import static org.cytoscape.util.swing.IconManager.*;
17+
import static org.cytoscape.util.swing.IconManager.ICON_BARS;
18+
import static org.cytoscape.util.swing.IconManager.ICON_FILE;
19+
import static org.cytoscape.util.swing.IconManager.ICON_PLUS;
20+
import static org.cytoscape.util.swing.IconManager.ICON_REFRESH;
21+
import static org.cytoscape.util.swing.IconManager.ICON_STAR;
1222
import static org.cytoscape.util.swing.LookAndFeelUtil.isAquaLAF;
1323

1424
import java.awt.BorderLayout;
@@ -98,6 +108,7 @@ public class ControlPanel extends JPanel implements CytoPanelComponent2, CyDispo
98108
@Inject private CyNetworkViewManager networkViewManager;
99109
@Inject private IconManager iconManager;
100110
@Inject private EnrichmentMapManager emManager;
111+
@Inject private DataSetSelector.Factory dataSetSelectorFactory;
101112

102113
private JPanel ctrlPanelsContainer;
103114
private final CardLayout cardLayout = new CardLayout();
@@ -863,9 +874,8 @@ SliderBarPanel getSimilaritySliderPanel() {
863874

864875
DataSetSelector getDataSetSelector() {
865876
if (dataSetSelector == null) {
866-
dataSetSelector = new DataSetSelector(getEnrichmentMap(), serviceRegistrar);
877+
dataSetSelector = dataSetSelectorFactory.create(getEnrichmentMap());
867878
}
868-
869879
return dataSetSelector;
870880
}
871881

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import javax.swing.Timer;
4141

4242
import org.baderlab.csplugins.enrichmentmap.AfterInjection;
43+
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
4344
import org.baderlab.csplugins.enrichmentmap.actions.ShowAboutDialogAction;
4445
import org.baderlab.csplugins.enrichmentmap.model.AbstractDataSet;
4546
import org.baderlab.csplugins.enrichmentmap.model.AssociatedApp;
@@ -141,6 +142,7 @@ public class ControlPanelMediator implements SetCurrentNetworkViewListener, Enri
141142
@Inject private EnrichmentMapManager emManager;
142143
@Inject private CreationDialogShowAction masterMapDialogAction;
143144
@Inject private VisualMappingManager visualMappingManager;
145+
@Inject private PropertyManager propertyManager;
144146

145147
@Inject private CyServiceRegistrar serviceRegistrar;
146148
@Inject private CyApplicationManager applicationManager;
@@ -378,7 +380,9 @@ public void handleEvent(SetCurrentNetworkViewEvent e) {
378380

379381
@Override
380382
public void handleEvent(RowsSetEvent e) {
381-
// TODO Auto-generated method stub
383+
if(propertyManager.isFalse(PropertyManager.CONTROL_DATASET_SELECT_SYNC))
384+
return;
385+
382386
if(e.containsColumn(CyNetwork.SELECTED)) {
383387
CyNetworkView networkView = applicationManager.getCurrentNetworkView();
384388
if(networkView != null) {

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

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,25 @@
4242
import javax.swing.table.TableCellRenderer;
4343
import javax.swing.table.TableModel;
4444

45+
import org.baderlab.csplugins.enrichmentmap.AfterInjection;
46+
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
4547
import org.baderlab.csplugins.enrichmentmap.model.AbstractDataSet;
4648
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
4749
import org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet;
4850
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
4951
import org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder;
5052
import org.baderlab.csplugins.enrichmentmap.view.postanalysis.PADialogMediator;
51-
import org.cytoscape.service.util.CyServiceRegistrar;
5253
import org.cytoscape.util.swing.IconManager;
5354
import org.cytoscape.util.swing.LookAndFeelUtil;
55+
56+
import com.google.inject.Inject;
57+
import com.google.inject.assistedinject.Assisted;
58+
import com.google.inject.assistedinject.AssistedInject;
5459

5560
@SuppressWarnings("serial")
5661
public class DataSetSelector extends JPanel {
5762

5863
public static final String PROP_CHECKED_DATA_SETS = "checkedData";
59-
60-
6164
private static final String[] HEARDER_NAMES = new String[]{ "", "", "Name", "" };
6265

6366
private static final int SELECTED_COL_IDX = 0;
@@ -67,6 +70,10 @@ public class DataSetSelector extends JPanel {
6770

6871
private static final Border CELL_BORDER = new EmptyBorder(0, 0, 0, 0);
6972

73+
@Inject private PropertyManager propertyManager;
74+
@Inject private IconManager iconManager;
75+
76+
7077
private JTable table;
7178
private JScrollPane tableScrollPane;
7279
private JMenuItem addMenuItem;
@@ -75,23 +82,24 @@ public class DataSetSelector extends JPanel {
7582
private JMenuItem selectNoneMenuItem;
7683
private JMenuItem selectNodesMenuItem;
7784
private JMenuItem deleteSignatureMenuItem;
85+
private JMenuItem syncPropMenuItem;
7886
private JButton optionButton;
7987

8088
private final EnrichmentMap map;
8189

82-
private final Set<AbstractDataSet> items;
83-
private final Map<AbstractDataSet, Boolean> checkedItems;
90+
private final Set<AbstractDataSet> items = new LinkedHashSet<>();
91+
private final Map<AbstractDataSet, Boolean> checkedItems = new HashMap<>();
8492
private List<Integer> previousSelectedRows;
8593

86-
private final CyServiceRegistrar serviceRegistrar;
87-
88-
public DataSetSelector(final EnrichmentMap map, final CyServiceRegistrar serviceRegistrar) {
94+
95+
public static interface Factory {
96+
DataSetSelector create(EnrichmentMap map);
97+
}
98+
99+
@AssistedInject
100+
public DataSetSelector(@Assisted EnrichmentMap map) {
89101
this.map = map;
90-
this.serviceRegistrar = serviceRegistrar;
91-
this.items = new LinkedHashSet<>();
92-
this.checkedItems = new HashMap<>();
93-
94-
init();
102+
// init() called using @AfterInjection
95103
}
96104

97105
public void update() {
@@ -175,6 +183,7 @@ public Set<AbstractDataSet> getSelectedItems() {
175183
return set;
176184
}
177185

186+
@AfterInjection
178187
private void init() {
179188
JLabel titleLabel = new JLabel("Data Sets:");
180189
makeSmall(titleLabel);
@@ -393,6 +402,15 @@ JMenuItem getDeleteSignatureMenuItem() {
393402
return deleteSignatureMenuItem;
394403
}
395404

405+
JMenuItem getSyncPropMenuItem() {
406+
if (syncPropMenuItem == null) {
407+
syncPropMenuItem = propertyManager.createJCheckBoxMenuItem(
408+
PropertyManager.CONTROL_DATASET_SELECT_SYNC,
409+
"Highlight Datasets for Selected Nodes and Edges");
410+
}
411+
return syncPropMenuItem;
412+
}
413+
396414
JButton getOptionsButton() {
397415
if (optionButton == null) {
398416
optionButton = new JButton("Options...");
@@ -417,6 +435,7 @@ private JPopupMenu getOptionsMenu() {
417435
menu.addSeparator();
418436
menu.add(getSelectNodesMenuItem());
419437
menu.add(getDeleteSignatureMenuItem());
438+
menu.add(getSyncPropMenuItem());
420439

421440
getDeleteSignatureMenuItem().setEnabled(isOnlySignatureSelected());
422441

@@ -472,7 +491,6 @@ private class DefaultSelectorTableCellRenderer extends DefaultTableCellRenderer
472491

473492
final Font defFont;
474493
final Font iconFont;
475-
final IconManager iconManager = serviceRegistrar.getService(IconManager.class);
476494

477495
DefaultSelectorTableCellRenderer() {
478496
defFont = getFont().deriveFont(LookAndFeelUtil.getSmallFontSize());

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/heatmap/OptionsPopup.java

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package org.baderlab.csplugins.enrichmentmap.view.heatmap;
22

3+
import static org.baderlab.csplugins.enrichmentmap.PropertyManager.HEATMAP_AUTOFOCUS;
4+
import static org.baderlab.csplugins.enrichmentmap.PropertyManager.HEATMAP_AUTO_SORT;
5+
import static org.baderlab.csplugins.enrichmentmap.PropertyManager.HEATMAP_DATASET_SYNC;
6+
import static org.baderlab.csplugins.enrichmentmap.PropertyManager.HEATMAP_SELECT_SYNC;
7+
38
import java.awt.Color;
49
import java.awt.Component;
510
import java.awt.Font;
@@ -14,8 +19,6 @@
1419

1520
import org.baderlab.csplugins.enrichmentmap.AfterInjection;
1621
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
17-
import org.baderlab.csplugins.enrichmentmap.PropertyManager.Property;
18-
import org.baderlab.csplugins.enrichmentmap.PropertyManager.PropertyListener;
1922
import org.baderlab.csplugins.enrichmentmap.view.heatmap.HeatMapParams.Distance;
2023
import org.baderlab.csplugins.enrichmentmap.view.util.IconUtil;
2124
import org.cytoscape.util.swing.IconManager;
@@ -91,10 +94,10 @@ private void createContents() {
9194
pearsonRadio.addActionListener(pearsonListener = distanceListenerFor(Distance.PEARSON));
9295
distanceMenu.add(pearsonRadio);
9396

94-
JCheckBoxMenuItem autofocusCheck = createPropItem(PropertyManager.HEATMAP_AUTOFOCUS, "Auto-Focus HeatMap");
95-
JCheckBoxMenuItem syncCheck = createPropItem(PropertyManager.HEATMAP_DATASET_SYNC, "Sync Data Sets with Control Panel");
96-
JCheckBoxMenuItem selectedCheck = createPropItem(PropertyManager.HEATMAP_SELECT_SYNC, "Display only selected Data Sets");
97-
JCheckBoxMenuItem autoSortCheck = createPropItem(PropertyManager.HEATMAP_AUTO_SORT, "Auto sort leading edge");
97+
JCheckBoxMenuItem autofocusCheck = propertyManager.createJCheckBoxMenuItem(HEATMAP_AUTOFOCUS, "Auto-Focus HeatMap");
98+
JCheckBoxMenuItem syncCheck = propertyManager.createJCheckBoxMenuItem(HEATMAP_DATASET_SYNC, "Sync Data Sets with Control Panel");
99+
JCheckBoxMenuItem selectedCheck = propertyManager.createJCheckBoxMenuItem(HEATMAP_SELECT_SYNC, "Display only selected Data Sets");
100+
JCheckBoxMenuItem autoSortCheck = propertyManager.createJCheckBoxMenuItem(HEATMAP_AUTO_SORT, "Auto sort leading edge");
98101

99102
add(geneManiaButton);
100103
add(stringButton);
@@ -112,23 +115,6 @@ private void createContents() {
112115
}
113116

114117

115-
private JCheckBoxMenuItem createPropItem(Property<Boolean> property, String label) {
116-
JCheckBoxMenuItem checkbox = new JCheckBoxMenuItem(label);
117-
checkbox.setSelected(propertyManager.isTrue(property));
118-
119-
PropertyListener<Boolean> listener = (prop, value) -> checkbox.setSelected(value);
120-
propertyManager.addListener(property, listener);
121-
122-
checkbox.addActionListener(e -> {
123-
propertyManager.removeListener(property, listener);
124-
propertyManager.setValue(property, checkbox.isSelected());
125-
propertyManager.addListener(property, listener);
126-
});
127-
128-
return checkbox;
129-
}
130-
131-
132118
private <T> ActionListener distanceListenerFor(Distance dm) {
133119
return e -> {
134120
if(distanceConsumer != null) {

0 commit comments

Comments
 (0)