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