Ignore:
Timestamp:
2013-02-06T13:52:07+01:00 (12 years ago)
Author:
bastik
Message:

add filter option, in order to show only signs with tag info

Location:
applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java

    r29228 r29230  
    2929import javax.swing.BorderFactory;
    3030import javax.swing.Box;
     31import javax.swing.ButtonGroup;
    3132import javax.swing.JButton;
    3233import javax.swing.JCheckBox;
     
    3637import javax.swing.JLabel;
    3738import javax.swing.JPanel;
     39import javax.swing.JRadioButton;
    3840import javax.swing.JScrollPane;
    3941import javax.swing.JTabbedPane;
     
    694696            fireTableDataChanged();
    695697        }
    696 
    697 
    698698    }
    699699
     
    814814        private List<PresetMetaData> presetsData;
    815815        private JComboBox selectionBox;
     816        JRadioButton rbAll, rbUseful;
    816817
    817818        public SettingsPanel(boolean standalone, final Action update) {
     
    831832            this.add(selectionBox, GBC.eol().insets(0, 5, 5, 5));
    832833            if (!standalone) {
     834                String snd = "Hide signs that do not have an OSM tag assigned";
     835
     836                rbAll = new JRadioButton(tr("Show all signs"));
     837                rbUseful = new JRadioButton(tr("Show a selection of the most useful signs"));
     838
     839                ButtonGroup grp = new ButtonGroup();
     840                grp.add(rbAll);
     841                grp.add(rbUseful);
     842
     843                String filterPref = Main.pref.get("plugin.roadsigns.preset.filter");
     844                if (filterPref.equals("useful")) {
     845                    rbUseful.setSelected(true);
     846                } else {
     847                    rbAll.setSelected(true);
     848                }
     849
     850                JPanel pnFilter = new JPanel(new GridBagLayout());
     851                pnFilter.setBorder(BorderFactory.createTitledBorder(tr("Filter")));
     852                pnFilter.add(rbAll, GBC.eop());
     853                pnFilter.add(rbUseful, GBC.eop());
     854
     855                this.add(pnFilter, GBC.eol().insets(5, 0, 5, 5));
     856
    833857                JButton apply = new JButton(new AbstractAction(tr("Apply")) {
    834858                    @Override
     
    848872
    849873        public void apply() throws IOException {
     874            String filter = null;
     875            if (rbAll != null) {
     876                if (rbAll.isSelected()) {
     877                    filter = "all";
     878                } else if (rbUseful.isSelected()) {
     879                    filter = "useful";
     880                }
     881            }
     882            if (filter != null) {
     883                Main.pref.put("plugin.roadsigns.preset.filter", filter);
     884            }
    850885            RoadSignsPlugin.setSelectedPreset(presetsData.get(selectionBox.getSelectedIndex()));
    851886        }
  • applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java

    r29228 r29230  
    183183        List<PresetMetaData> presetsData =  getAvailablePresetsMetaData();
    184184        String code = Main.pref.get("plugin.roadsigns.preset.selection", null);
    185         if (selectedPreset != null && selectedPreset.code.equals(code)) return;
    186185
    187186        for (PresetMetaData data : presetsData) {
  • applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsReader.java

    r23192 r29230  
    2222import org.xml.sax.helpers.DefaultHandler;
    2323
     24import org.openstreetmap.josm.Main;
    2425import org.openstreetmap.josm.io.OsmDataParsingException;
    2526import org.openstreetmap.josm.plugins.roadsigns.Sign.SignParameter;
    2627import org.openstreetmap.josm.plugins.roadsigns.Sign.Tag;
    27 import org.openstreetmap.josm.tools.LanguageInfo;
    28 
    2928import org.openstreetmap.josm.plugins.roadsigns.javacc.ParseException;
    3029import org.openstreetmap.josm.plugins.roadsigns.javacc.TokenMgrError;
     30import org.openstreetmap.josm.tools.LanguageInfo;
    3131
    3232/**
     
    113113
    114114                curSign.help = getLocalized(atts, "help");
     115
     116                String useful = atts.getValue("useful");
     117                if (useful != null) {
     118                    curSign.useful = Boolean.parseBoolean(useful);
     119                }
    115120
    116121            } else if (curSign != null && qname.equals("tag")) {
     
    312317            factory.newSAXParser().parse(inputSource, parser);
    313318            parser.wireSupplements();
    314             return parser.allSigns;
     319            String filterPref = Main.pref.get("plugin.roadsigns.preset.filter");
     320            if (filterPref.equals("useful")) {
     321                List<Sign> filtered = new ArrayList<Sign>();
     322                for (Sign s : parser.allSigns) {
     323                    if (s.isUseful()) {
     324                        filtered.add(s);
     325                    }
     326                }
     327                return filtered;
     328            } else {
     329                return parser.allSigns;
     330            }
    315331        } catch (ParserConfigurationException e) {
    316332            e.printStackTrace(); // broken SAXException chaining
  • applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/Sign.java

    r27675 r29230  
    3434    public String wiki;
    3535    public String help;
     36    public Boolean useful;
    3637
    3738    public JLabel label; // FIXME: don't put gui stuff here
     
    120121    }
    121122
     123    public boolean isUseful() {
     124        if (useful != null) return useful;
     125        return !tags.isEmpty();
     126    }
     127
    122128    @Override
    123129    public String toString() {
Note: See TracChangeset for help on using the changeset viewer.