Skip to content

Commit fc43d9e

Browse files
committed
Synchronize advanced cutoff panel with slider. Fixes #213.
1 parent 4cd0dba commit fc43d9e

File tree

2 files changed

+39
-19
lines changed

2 files changed

+39
-19
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/CutoffPropertiesPanel.java

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,13 @@ private JPanel createFilterEdgesPanel() {
233233
cardPanel.add(advancedPanel, "advanced");
234234
cardPanel.setOpaque(false);
235235

236+
// Link the two panels together
237+
similaritySlider.getSlider().addChangeListener(e -> {
238+
SimilarityMetric metric = similaritySlider.getSimilarityMetric();
239+
double cutoff = similaritySlider.getCutoff();
240+
cutoffMetricCombo.setSelectedItem(ComboItem.of(metric));
241+
similarityCutoffText.setText(String.valueOf(cutoff));
242+
});
236243

237244
final GroupLayout layout = new GroupLayout(panel);
238245
panel.setLayout(layout);
@@ -342,9 +349,10 @@ private JPanel createFilterEdgesPanel_Advanced() {
342349
SwingUtil.makeSmall(similarityCutoffText, cutoffMetricCombo);
343350

344351
ActionListener sliderUpdate = e -> {
345-
SimilarityMetric type = getSimilarityMetric();
352+
SimilarityMetric type = getCutoffMetricComboValue();
346353
similarityCutoffText.setValue(cutoffValues.get(type));
347-
combinedConstantSlider.setVisible(type == SimilarityMetric.COMBINED);
354+
// Don't make the slider visible unless the advanced panel is also visible or else it throws off the layout.
355+
combinedConstantSlider.setVisible(advancedCheckBox.isSelected() && type == SimilarityMetric.COMBINED);
348356
};
349357

350358
double combinedConstant = propertyManager.getCombinedConstant();
@@ -360,7 +368,7 @@ private JPanel createFilterEdgesPanel_Advanced() {
360368

361369
similarityCutoffText.addPropertyChangeListener("value", e -> {
362370
double value = ((Number)e.getNewValue()).doubleValue();
363-
cutoffValues.put(getSimilarityMetric(), value);
371+
cutoffValues.put(getCutoffMetricComboValue(), value);
364372
});
365373

366374
final GroupLayout layout = new GroupLayout(panel);
@@ -426,18 +434,22 @@ public void reset() {
426434
}
427435

428436

429-
private void showAdvancedOptions(boolean show) {
430-
pvalueLabel.setVisible(show);
431-
pvalueText.setVisible(show);
432-
nesFilterLabel.setVisible(show);
433-
nesFilterCombo.setVisible(show);
434-
minExperimentsLabel.setVisible(show);
435-
minExperimentsText.setVisible(show);
436-
shouldFilterMinLabel.setVisible(show);
437-
shouldFilterMinCheckbox.setVisible(show);
437+
private void showAdvancedOptions(boolean showAdvanced) {
438+
pvalueLabel.setVisible(showAdvanced);
439+
pvalueText.setVisible(showAdvanced);
440+
nesFilterLabel.setVisible(showAdvanced);
441+
nesFilterCombo.setVisible(showAdvanced);
442+
minExperimentsLabel.setVisible(showAdvanced);
443+
minExperimentsText.setVisible(showAdvanced);
444+
shouldFilterMinLabel.setVisible(showAdvanced);
445+
shouldFilterMinCheckbox.setVisible(showAdvanced);
438446

439447
CardLayout cardLayout = (CardLayout)cardPanel.getLayout();
440-
cardLayout.show(cardPanel, show ? "advanced" : "simple");
448+
cardLayout.show(cardPanel, showAdvanced ? "advanced" : "simple");
449+
450+
// If we are switching to the advanced panel make sure the combined slider is visible if it needs to be.
451+
boolean showCombinedSlider = showAdvanced && getCutoffMetricComboValue() == SimilarityMetric.COMBINED;
452+
combinedConstantSlider.setVisible(showCombinedSlider);
441453
}
442454

443455

@@ -458,7 +470,7 @@ public AbstractFormatter getFormatter(JFormattedTextField tf) {
458470

459471
public double getPValue() {
460472
return pvalueText.isVisible()
461-
? getValue(pvalueText)
473+
? getTextFieldDoubleValue(pvalueText)
462474
: propertyManager.getPvalue();
463475
}
464476

@@ -479,7 +491,7 @@ public Optional<Integer> getMinimumExperiments() {
479491
}
480492

481493
public double getQValue() {
482-
return getValue(qvalueText);
494+
return getTextFieldDoubleValue(qvalueText);
483495
}
484496

485497
public double getCombinedConstant() {
@@ -491,14 +503,18 @@ public double getCombinedConstant() {
491503

492504
public double getCutoff() {
493505
if(advancedCheckBox.isSelected())
494-
return getValue(similarityCutoffText);
506+
return getTextFieldDoubleValue(similarityCutoffText);
495507
else
496508
return similaritySlider.getCutoff();
497509
}
498510

511+
private SimilarityMetric getCutoffMetricComboValue() {
512+
return cutoffMetricCombo.getItemAt(cutoffMetricCombo.getSelectedIndex()).getValue();
513+
}
514+
499515
public SimilarityMetric getSimilarityMetric() {
500516
if(advancedCheckBox.isSelected())
501-
return cutoffMetricCombo.getItemAt(cutoffMetricCombo.getSelectedIndex()).getValue();
517+
return getCutoffMetricComboValue();
502518
else
503519
return similaritySlider.getSimilarityMetric();
504520
}
@@ -507,7 +523,7 @@ public EdgeStrategy getEdgeStrategy() {
507523
return edgeStrategyCombo.getItemAt(edgeStrategyCombo.getSelectedIndex()).getValue();
508524
}
509525

510-
private static double getValue(JFormattedTextField textField) {
526+
private static double getTextFieldDoubleValue(JFormattedTextField textField) {
511527
return ((Number)textField.getValue()).doubleValue();
512528
}
513529

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/SimilaritySlider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
public class SimilaritySlider extends JPanel {
1515

1616
private JSlider slider;
17-
private final int defaultValue = 3;
17+
private final int defaultValue = 4;
1818

1919
public SimilaritySlider() {
2020
slider = new JSlider(1, 5, defaultValue);
@@ -63,4 +63,8 @@ public void reset() {
6363
slider.setValue(defaultValue);
6464
}
6565

66+
public JSlider getSlider() {
67+
return slider;
68+
}
69+
6670
}

0 commit comments

Comments
 (0)