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
|
| 63 | 63 | implements ZoomChangeListener, MapModeChangeListener, DataSetListener, PreferenceChangedListener, LayerChangeListener { |
| 64 | 64 | |
| 65 | 65 | /** |
| 66 | | * Property to determines if the auto filter feature is enabled. |
| | 66 | * Property to determine if the auto filter feature is enabled. |
| 67 | 67 | */ |
| 68 | 68 | public static final BooleanProperty PROP_AUTO_FILTER_ENABLED = new BooleanProperty("auto.filter.enabled", true); |
| 69 | 69 | |
| | 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 | |
| 70 | 77 | /** |
| 71 | 78 | * Property to determine the current auto filter rule. |
| 72 | 79 | */ |
| … |
… |
implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
|
| 148 | 155 | final AutoFilterRule rule; |
| 149 | 156 | final int value; |
| 150 | 157 | |
| 151 | | CompiledFilter(AutoFilterRule rule, int value) { |
| | 158 | CompiledFilter(AutoFilterRule rule, int value, boolean hiding) { |
| 152 | 159 | this.rule = rule; |
| 153 | 160 | this.value = value; |
| | 161 | this.hiding = hiding; |
| 154 | 162 | this.enable = true; |
| 155 | 163 | this.inverted = true; |
| 156 | 164 | this.text = rule.getKey() + "=" + rule.formatValue(value); |
| … |
… |
implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
|
| 215 | 223 | final AutoFilterButton keyButton = AutoFilterButton.forOsmKey(enabledRule.getKey()); |
| 216 | 224 | addButton(keyButton, Integer.MIN_VALUE, i++); |
| 217 | 225 | 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()); |
| 219 | 227 | String label = enabledRule.formatValue(value); |
| 220 | 228 | AutoFilter autoFilter = new AutoFilter(label, filter.text, filter); |
| 221 | 229 | AutoFilterButton button = new AutoFilterButton(autoFilter); |
| … |
… |
implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
|
| 437 | 445 | enableAutoFilterRule((AutoFilterRule) null); |
| 438 | 446 | resetCurrentAutoFilter(); |
| 439 | 447 | } |
| 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())) { |
| 441 | 450 | enableAutoFilterRule(PROP_AUTO_FILTER_RULE.get()); |
| 442 | 451 | resetCurrentAutoFilter(); |
| 443 | 452 | updateButtons(); |
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 {
|
| 56 | 56 | private final JCheckBox inactive = new JCheckBox(tr("Draw inactive layers in other color")); |
| 57 | 57 | private final JCheckBox discardableKeys = new JCheckBox(tr("Display discardable keys")); |
| 58 | 58 | private final JCheckBox autoFilters = new JCheckBox(tr("Use auto filters")); |
| | 59 | private final JCheckBox autoFiltersHiding = new JCheckBox(tr("Hide auto-filtered elements")); |
| | 60 | |
| 59 | 61 | private final JLabel lblRule = new JLabel(tr("Rule")); |
| 60 | 62 | private final JosmComboBox<AutoFilterRule> autoFilterRules = new JosmComboBox<>( |
| 61 | 63 | AutoFilterManager.getInstance().getAutoFilterRules().toArray(new AutoFilterRule[] {})); |
| … |
… |
public class DrawingPreference extends DefaultTabPreferenceSetting {
|
| 149 | 151 | autoFilters.addActionListener(e -> { |
| 150 | 152 | lblRule.setEnabled(autoFilters.isSelected()); |
| 151 | 153 | autoFilterRules.setEnabled(autoFilters.isSelected()); |
| | 154 | autoFiltersHiding.setEnabled(autoFilters.isSelected()); |
| 152 | 155 | }); |
| 153 | 156 | autoFilterRules.setToolTipText("Rule defining which tag will provide automatic filters, below a certain zoom level"); |
| 154 | 157 | 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()); |
| 155 | 160 | |
| 156 | 161 | JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance")); |
| 157 | 162 | |
| … |
… |
public class DrawingPreference extends DefaultTabPreferenceSetting {
|
| 183 | 188 | panel.add(autoFilters, GBC.eop().insets(20, 0, 0, 0)); |
| 184 | 189 | panel.add(lblRule, GBC.std().insets(40, 0, 0, 0)); |
| 185 | 190 | panel.add(autoFilterRules, GBC.eop().fill(GBC.HORIZONTAL).insets(5, 0, 0, 0)); |
| | 191 | panel.add(autoFiltersHiding, GBC.eop().insets(40, 0, 0, 0)); |
| 186 | 192 | |
| 187 | 193 | ExpertToggleAction.addVisibilitySwitcher(performanceLabel); |
| 188 | 194 | ExpertToggleAction.addVisibilitySwitcher(useAntialiasing); |
| … |
… |
public class DrawingPreference extends DefaultTabPreferenceSetting {
|
| 213 | 219 | Config.getPref().putBoolean("draw.helper-line", drawHelperLine.isSelected()); |
| 214 | 220 | Config.getPref().putBoolean("display.discardable-keys", discardableKeys.isSelected()); |
| 215 | 221 | AutoFilterManager.PROP_AUTO_FILTER_ENABLED.put(autoFilters.isSelected()); |
| | 222 | AutoFilterManager.PROP_AUTO_FILTER_HIDING.put(autoFiltersHiding.isSelected()); |
| 216 | 223 | AutoFilterManager.PROP_AUTO_FILTER_RULE.put(((AutoFilterRule) autoFilterRules.getSelectedItem()).getKey()); |
| 217 | 224 | int vn = Config.getPref().getInt("mappaint.node.virtual-size", 8); |
| 218 | 225 | if (virtualNodes.isSelected()) { |