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 }