001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.actions;
003
004 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
005
006 public 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
047 public static class SearchSettingsActionParameter extends ActionParameter<SearchSetting> {
048
049 public SearchSettingsActionParameter(String name) {
050 super(name);
051 }
052
053 @Override
054 public Class<SearchSetting> getType() {
055 return SearchSetting.class;
056 }
057
058 @Override
059 public SearchSetting readFromString(String s) {
060 SearchSetting result = SearchSetting.readFromString(s);
061 return result;
062 }
063
064 @Override
065 public String writeToString(SearchSetting value) {
066 if (value == null)
067 return "";
068 return value.writeToString();
069 }
070
071 }
072 }