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 }