001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions; 003 004import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting; 005 006public abstract class ActionParameter<T> { 007 008 private final String name; 009 010 public ActionParameter(String name) { 011 this.name = name; 012 } 013 014 public String getName() { 015 return name; 016 } 017 018 public abstract Class<T> getType(); 019 020 public abstract String writeToString(T value); 021 022 public abstract T readFromString(String s); 023 024 public static class StringActionParameter extends ActionParameter<String> { 025 026 public StringActionParameter(String name) { 027 super(name); 028 } 029 030 @Override 031 public Class<String> getType() { 032 return String.class; 033 } 034 035 @Override 036 public String readFromString(String s) { 037 return s; 038 } 039 040 @Override 041 public String writeToString(String value) { 042 return value; 043 } 044 } 045 046 public static class SearchSettingsActionParameter extends ActionParameter<SearchSetting> { 047 048 public SearchSettingsActionParameter(String name) { 049 super(name); 050 } 051 052 @Override 053 public Class<SearchSetting> getType() { 054 return SearchSetting.class; 055 } 056 057 @Override 058 public SearchSetting readFromString(String s) { 059 return SearchSetting.readFromString(s); 060 } 061 062 @Override 063 public String writeToString(SearchSetting value) { 064 if (value == null) 065 return ""; 066 return value.writeToString(); 067 } 068 } 069}