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