source: josm/trunk/src/org/openstreetmap/josm/data/osm/Filter.java@ 4153

Last change on this file since 4153 was 3908, checked in by bastiK, 13 years ago

new preference type (list of structs). Should be more flexible when preference options are added and dropped for a list like features. (Not sure how far we get with this key=value approach, maybe it's time for xml preferences.) Fixes #5850 - Filter entries are mixed up

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.osm;
3
4import static org.openstreetmap.josm.tools.Utils.equal;
5
6import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
7import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
8import org.openstreetmap.josm.data.Preferences.pref;
9import org.openstreetmap.josm.data.Preferences.writeExplicitly;
10import org.openstreetmap.josm.tools.Utils;
11
12/**
13 *
14 * @author Petr_Dlouhý
15 */
16public class Filter extends SearchSetting {
17 private static final String version = "1";
18
19 public boolean enable = true;
20 public boolean hiding = false;
21 public boolean inverted = false;
22
23 public Filter() {
24 super("", SearchMode.add, false, false, false);
25 }
26 public Filter(String text, SearchMode mode, boolean caseSensitive,
27 boolean regexSearch, boolean allElements) {
28 super(text, mode, caseSensitive, regexSearch, allElements);
29 }
30
31 @Deprecated
32 public Filter(String prefText) {
33 super("", SearchMode.add, false, false, false);
34 String[] prfs = prefText.split(";");
35 if(prfs.length != 10 && !prfs[0].equals(version))
36 throw new Error("Incompatible filter preferences");
37 text = prfs[1];
38 if(prfs[2].equals("replace")) {
39 mode = SearchMode.replace;
40 }
41 if(prfs[2].equals("add")) {
42 mode = SearchMode.add;
43 }
44 if(prfs[2].equals("remove")) {
45 mode = SearchMode.remove;
46 }
47 if(prfs[2].equals("in_selection")) {
48 mode = SearchMode.in_selection;
49 }
50 caseSensitive = Boolean.parseBoolean(prfs[3]);
51 regexSearch = Boolean.parseBoolean(prfs[4]);
52 enable = Boolean.parseBoolean(prfs[6]);
53 hiding = Boolean.parseBoolean(prfs[7]);
54 inverted = Boolean.parseBoolean(prfs[8]);
55 }
56
57 public Filter(FilterPreferenceEntry e) {
58 super(e.text, SearchMode.add, false, false, false);
59 if (equal(e.mode, "replace")) {
60 mode = SearchMode.replace;
61 } else if (equal(e.mode, "add")) {
62 mode = SearchMode.add;
63 } else if (equal(e.mode, "remove")) {
64 mode = SearchMode.remove;
65 } else if (equal(e.mode, "in_selection")) {
66 mode = SearchMode.in_selection;
67 }
68 caseSensitive = e.case_sensitive;
69 regexSearch = e.regex_search;
70 enable = e.enable;
71 hiding = e.hiding;
72 inverted = e.inverted;
73 }
74
75 public static class FilterPreferenceEntry {
76 @pref @writeExplicitly public String version = "1";
77 @pref public String text = null;
78 @pref @writeExplicitly public String mode = "add";
79 @pref public boolean case_sensitive = false;
80 @pref public boolean regex_search = false;
81 @pref @writeExplicitly public boolean enable = true;
82 @pref @writeExplicitly public boolean hiding = false;
83 @pref @writeExplicitly public boolean inverted = false;
84 }
85
86 public FilterPreferenceEntry getPreferenceEntry() {
87 FilterPreferenceEntry e = new FilterPreferenceEntry();
88 e.version = version;
89 e.text = text;
90 e.mode = mode.toString();
91 e.case_sensitive = caseSensitive;
92 e.regex_search = regexSearch;
93 e.enable = enable;
94 e.hiding = hiding;
95 e.inverted = inverted;
96 return e;
97 }
98}
Note: See TracBrowser for help on using the repository browser.