Changeset 15818 in josm


Ignore:
Timestamp:
2020-02-05T22:19:42+01:00 (4 months ago)
Author:
simon04
Message:

fix #18628 - Autofilter: display active rule/key

Location:
trunk/src/org/openstreetmap/josm/gui/autofilter
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java

    r14206 r15818  
    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/**
     
    6366        super.paintComponent(g);
    6467    }
     68
     69    static AutoFilterButton forOsmKey(String key) {
     70        final String name = key + ":";
     71        final AutoFilterButton button = new AutoFilterButton(new AutoFilter(key, "", null));
     72        button.setAction(new AbstractAction(name) {
     73            @Override
     74            public void actionPerformed(ActionEvent e) {
     75                PreferencesAction.forPreferenceSubTab("", "null", DrawingPreference.class).actionPerformed(e);
     76            }
     77        });
     78        return button;
     79    }
    6580}
  • trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java

    r15817 r15818  
    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, Integer.toString(Integer.MIN_VALUE), i++);
    187191        for (final String value : values.descendingSet()) {
    188192            CompiledFilter filter = new CompiledFilter(enabledRule.getKey(), value);
     
    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);
    201         }
    202         mapView.validate();
     203            b.setSize(b == keyButton ? b.getPreferredSize().width : maxWidth, 20);
     204        }
     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
Note: See TracChangeset for help on using the changeset viewer.