Ticket #18628: 18628.patch

File 18628.patch, 3.7 KB (added by simon04, 7 weeks ago)
  • src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java

    commit 5908bdda0af3ec3f2d718560b50ef6e40cbfdb2a
    Author: Simon Legner <Simon.Legner@gmail.com>
    Date:   2020-01-27 20:51:04 +0100
    
        autofilter
    
    diff --git a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java
    index a3e6d40aa..27c97dd0b 100644
    a b  
    77import java.awt.RenderingHints;
    88import java.awt.event.ActionEvent;
    99
     10import javax.swing.AbstractAction;
    1011import javax.swing.BorderFactory;
    1112import javax.swing.JButton;
    1213
    1314import org.openstreetmap.josm.actions.JosmAction;
     15import org.openstreetmap.josm.actions.PreferencesAction;
    1416import org.openstreetmap.josm.data.preferences.NamedColorProperty;
    1517import org.openstreetmap.josm.gui.MainApplication;
     18import org.openstreetmap.josm.gui.preferences.display.DrawingPreference;
    1619
    1720/**
    1821 * A button associated to an auto filter. If clicked twice, the filter is reset.
    protected void paintComponent(Graphics g) { 
    6265        g.fillRoundRect(0, 0, getWidth(), getHeight(), 3, 3);
    6366        super.paintComponent(g);
    6467    }
     68
     69    static AutoFilterButton forOsmKey(String key) {
     70        final AutoFilterButton button = new AutoFilterButton(new AutoFilter(key, "", null));
     71        button.setAction(new AbstractAction(key) {
     72            @Override
     73            public void actionPerformed(ActionEvent e) {
     74                PreferencesAction.forPreferenceSubTab("", "null", DrawingPreference.class).actionPerformed(e);
     75            }
     76        });
     77        return button;
     78    }
    6579}
  • 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 0b33f328f..5d32de6c7 100644
    a b public boolean match(OsmPrimitive osm) { 
    181181    }
    182182
    183183    private synchronized void addNewButtons(NavigableSet<String> values) {
     184        if (values.isEmpty()) {
     185            return;
     186        }
    184187        int i = 0;
    185188        int maxWidth = 16;
    186         MapView mapView = MainApplication.getMap().mapView;
     189        final AutoFilterButton keyButton = AutoFilterButton.forOsmKey(enabledRule.getKey());
     190        addButton(keyButton, "-999", i++);
    187191        for (final String value : values.descendingSet()) {
    188192            CompiledFilter filter = new CompiledFilter(enabledRule.getKey(), value);
    189193            String label = enabledRule.getValueFormatter().apply(value);
    private synchronized void addNewButtons(NavigableSet<String> values) { 
    192196            if (autoFilter.equals(currentAutoFilter)) {
    193197                button.getModel().setPressed(true);
    194198            }
    195             buttons.put(value, button);
    196199            maxWidth = Math.max(maxWidth, button.getPreferredSize().width);
    197             mapView.add(button).setLocation(3, 60 + 22*i++);
     200            addButton(button, value, i++);
    198201        }
    199202        for (AutoFilterButton b : buttons.values()) {
    200             b.setSize(maxWidth, 20);
     203            b.setSize(b == keyButton ? b.getPreferredSize().width : maxWidth, 20);
    201204        }
    202         mapView.validate();
     205        MainApplication.getMap().mapView.validate();
     206    }
     207
     208    private void addButton(AutoFilterButton button, String value, int i) {
     209        MapView mapView = MainApplication.getMap().mapView;
     210        buttons.put(value, button);
     211        mapView.add(button).setLocation(3, 60 + 22*i);
    203212    }
    204213
    205214    private void removeAllButtons() {