Ticket #24482: autofilter_02_hiding.patch

File autofilter_02_hiding.patch, 6.1 KB (added by tordanik, 6 months ago)
  • src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java

    diff --git a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
    index 3a7ccb67a2..44f503ed0d 100644
    a b public final class AutoFilterManager  
    6363implements ZoomChangeListener, MapModeChangeListener, DataSetListener, PreferenceChangedListener, LayerChangeListener {
    6464
    6565    /**
    66      * Property to determines if the auto filter feature is enabled.
     66     * Property to determine if the auto filter feature is enabled.
    6767     */
    6868    public static final BooleanProperty PROP_AUTO_FILTER_ENABLED = new BooleanProperty("auto.filter.enabled", true);
    6969
     70    /**
     71     * Property to determine if the auto filter feature completely hides elements instead of just disabling them.
     72     * Equivalent to {@link Filter#hiding}
     73     */
     74    public static final BooleanProperty PROP_AUTO_FILTER_HIDING = new BooleanProperty("auto.filter.hiding", false);
     75
     76
    7077    /**
    7178     * Property to determine the current auto filter rule.
    7279     */
    implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc  
    148155        final AutoFilterRule rule;
    149156        final int value;
    150157
    151         CompiledFilter(AutoFilterRule rule, int value) {
     158        CompiledFilter(AutoFilterRule rule, int value, boolean hiding) {
    152159            this.rule = rule;
    153160            this.value = value;
     161            this.hiding = hiding;
    154162            this.enable = true;
    155163            this.inverted = true;
    156164            this.text = rule.getKey() + "=" + rule.formatValue(value);
    implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc  
    215223        final AutoFilterButton keyButton = AutoFilterButton.forOsmKey(enabledRule.getKey());
    216224        addButton(keyButton, Integer.MIN_VALUE, i++);
    217225        for (final Integer value : values.descendingSet()) {
    218             CompiledFilter filter = new CompiledFilter(enabledRule, value);
     226            CompiledFilter filter = new CompiledFilter(enabledRule, value, PROP_AUTO_FILTER_HIDING.get());
    219227            String label = enabledRule.formatValue(value);
    220228            AutoFilter autoFilter = new AutoFilter(label, filter.text, filter);
    221229            AutoFilterButton button = new AutoFilterButton(autoFilter);
    implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc  
    437445                enableAutoFilterRule((AutoFilterRule) null);
    438446                resetCurrentAutoFilter();
    439447            }
    440         } else if (e.getKey().equals(PROP_AUTO_FILTER_RULE.getKey())) {
     448        } else if (e.getKey().equals(PROP_AUTO_FILTER_RULE.getKey())
     449                || e.getKey().equals(PROP_AUTO_FILTER_HIDING.getKey())) {
    441450            enableAutoFilterRule(PROP_AUTO_FILTER_RULE.get());
    442451            resetCurrentAutoFilter();
    443452            updateButtons();
  • src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
    index c75c5fcfe9..f9dd0bf99d 100644
    a b public class DrawingPreference extends DefaultTabPreferenceSetting {  
    5656    private final JCheckBox inactive = new JCheckBox(tr("Draw inactive layers in other color"));
    5757    private final JCheckBox discardableKeys = new JCheckBox(tr("Display discardable keys"));
    5858    private final JCheckBox autoFilters = new JCheckBox(tr("Use auto filters"));
     59    private final JCheckBox autoFiltersHiding = new JCheckBox(tr("Hide auto-filtered elements"));
     60
    5961    private final JLabel lblRule = new JLabel(tr("Rule"));
    6062    private final JosmComboBox<AutoFilterRule> autoFilterRules = new JosmComboBox<>(
    6163            AutoFilterManager.getInstance().getAutoFilterRules().toArray(new AutoFilterRule[] {}));
    public class DrawingPreference extends DefaultTabPreferenceSetting {  
    149151        autoFilters.addActionListener(e -> {
    150152            lblRule.setEnabled(autoFilters.isSelected());
    151153            autoFilterRules.setEnabled(autoFilters.isSelected());
     154            autoFiltersHiding.setEnabled(autoFilters.isSelected());
    152155        });
    153156        autoFilterRules.setToolTipText("Rule defining which tag will provide automatic filters, below a certain zoom level");
    154157        autoFilterRules.setSelectedItem(AutoFilterManager.getInstance().getAutoFilterRule(AutoFilterManager.PROP_AUTO_FILTER_RULE.get()));
     158        autoFiltersHiding.setToolTipText(tr("Completely hide elements which do not match the automatic filter instead of merely disabling them"));
     159        autoFiltersHiding.setSelected(AutoFilterManager.PROP_AUTO_FILTER_HIDING.get());
    155160
    156161        JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance"));
    157162
    public class DrawingPreference extends DefaultTabPreferenceSetting {  
    183188        panel.add(autoFilters, GBC.eop().insets(20, 0, 0, 0));
    184189        panel.add(lblRule, GBC.std().insets(40, 0, 0, 0));
    185190        panel.add(autoFilterRules, GBC.eop().fill(GBC.HORIZONTAL).insets(5, 0, 0, 0));
     191        panel.add(autoFiltersHiding, GBC.eop().insets(40, 0, 0, 0));
    186192
    187193        ExpertToggleAction.addVisibilitySwitcher(performanceLabel);
    188194        ExpertToggleAction.addVisibilitySwitcher(useAntialiasing);
    public class DrawingPreference extends DefaultTabPreferenceSetting {  
    213219        Config.getPref().putBoolean("draw.helper-line", drawHelperLine.isSelected());
    214220        Config.getPref().putBoolean("display.discardable-keys", discardableKeys.isSelected());
    215221        AutoFilterManager.PROP_AUTO_FILTER_ENABLED.put(autoFilters.isSelected());
     222        AutoFilterManager.PROP_AUTO_FILTER_HIDING.put(autoFiltersHiding.isSelected());
    216223        AutoFilterManager.PROP_AUTO_FILTER_RULE.put(((AutoFilterRule) autoFilterRules.getSelectedItem()).getKey());
    217224        int vn = Config.getPref().getInt("mappaint.node.virtual-size", 8);
    218225        if (virtualNodes.isSelected()) {