001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.data.osm;
003
004 import static org.openstreetmap.josm.tools.Utils.equal;
005
006 import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
007 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
008 import org.openstreetmap.josm.data.Preferences.pref;
009 import org.openstreetmap.josm.data.Preferences.writeExplicitly;
010 import org.openstreetmap.josm.tools.Utils;
011
012 /**
013 *
014 * @author Petr_Dlouh??
015 */
016 public class Filter extends SearchSetting {
017 private static final String version = "1";
018
019 public boolean enable = true;
020 public boolean hiding = false;
021 public boolean inverted = false;
022
023 public Filter() {
024 super("", SearchMode.add, false, false, false);
025 }
026 public Filter(String text, SearchMode mode, boolean caseSensitive,
027 boolean regexSearch, boolean allElements) {
028 super(text, mode, caseSensitive, regexSearch, allElements);
029 }
030
031 public Filter(FilterPreferenceEntry e) {
032 super(e.text, SearchMode.add, false, false, false);
033 if (equal(e.mode, "replace")) {
034 mode = SearchMode.replace;
035 } else if (equal(e.mode, "add")) {
036 mode = SearchMode.add;
037 } else if (equal(e.mode, "remove")) {
038 mode = SearchMode.remove;
039 } else if (equal(e.mode, "in_selection")) {
040 mode = SearchMode.in_selection;
041 }
042 caseSensitive = e.case_sensitive;
043 regexSearch = e.regex_search;
044 enable = e.enable;
045 hiding = e.hiding;
046 inverted = e.inverted;
047 }
048
049 public static class FilterPreferenceEntry {
050 @pref @writeExplicitly public String version = "1";
051 @pref public String text = null;
052 @pref @writeExplicitly public String mode = "add";
053 @pref public boolean case_sensitive = false;
054 @pref public boolean regex_search = false;
055 @pref @writeExplicitly public boolean enable = true;
056 @pref @writeExplicitly public boolean hiding = false;
057 @pref @writeExplicitly public boolean inverted = false;
058 }
059
060 public FilterPreferenceEntry getPreferenceEntry() {
061 FilterPreferenceEntry e = new FilterPreferenceEntry();
062 e.version = version;
063 e.text = text;
064 e.mode = mode.toString();
065 e.case_sensitive = caseSensitive;
066 e.regex_search = regexSearch;
067 e.enable = enable;
068 e.hiding = hiding;
069 e.inverted = inverted;
070 return e;
071 }
072 }