| StringOptionsChoice.java |
1 /**
2 * Distribution License:
3 * JSword is free software; you can redistribute it and/or modify it under
4 * the terms of the GNU Lesser General Public License, version 2.1 as published by
5 * the Free Software Foundation. This program is distributed in the hope
6 * that it will be useful, but WITHOUT ANY WARRANTY; without even the
7 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8 * See the GNU Lesser General Public License for more details.
9 *
10 * The License is available on the internet at:
11 * http://www.gnu.org/copyleft/lgpl.html
12 * or by writing to:
13 * Free Software Foundation, Inc.
14 * 59 Temple Place - Suite 330
15 * Boston, MA 02111-1307, USA
16 *
17 * Copyright: 2005
18 * The copyright to this program is held by it's authors.
19 *
20 * ID: $Id: StringOptionsChoice.java 2099 2011-03-07 17:13:00Z dmsmith $
21 */
22 package org.crosswire.common.config;
23
24 import java.util.ResourceBundle;
25
26 import org.crosswire.jsword.JSOtherMsg;
27 import org.jdom.Element;
28
29 /**
30 * A class to convert between strings and objects of a type.
31 *
32 * @see gnu.lgpl.License for license details.<br>
33 * The copyright to this program is held by it's authors.
34 * @author Joe Walker [joe at eireneh dot com]
35 */
36 public class StringOptionsChoice extends AbstractReflectedChoice implements MultipleChoice {
37 /*
38 * (non-Javadoc)
39 *
40 * @see org.crosswire.common.config.Choice#init(org.jdom.Element)
41 */
42 @Override
43 public void init(Element option, ResourceBundle configResources) throws StartupException {
44 super.init(option, configResources);
45 Element map = option.getChild("map");
46 if (map == null) {
47 throw new StartupException(JSOtherMsg.lookupText("Missing {0} element in config.xml", "map"));
48 }
49
50 String name = map.getAttributeValue("name");
51 array = (String[]) ChoiceFactory.getDataMap().get(name);
52 }
53
54 /*
55 * (non-Javadoc)
56 *
57 * @see org.crosswire.common.config.MultipleChoice#getOptions()
58 */
59 public String[] getOptions() {
60 String[] copy = new String[array.length];
61 System.arraycopy(array, 0, copy, 0, array.length);
62 return copy;
63 }
64
65 /*
66 * (non-Javadoc)
67 *
68 * @see org.crosswire.common.config.Choice#getConvertionClass()
69 */
70 public Class<String> getConversionClass() {
71 return String.class;
72 }
73
74 /*
75 * (non-Javadoc)
76 *
77 * @see
78 * org.crosswire.common.config.AbstractReflectedChoice#convertToString(java
79 * .lang.Object)
80 */
81 @Override
82 public String convertToString(Object orig) {
83 return (String) orig;
84 }
85
86 /*
87 * (non-Javadoc)
88 *
89 * @see
90 * org.crosswire.common.config.AbstractReflectedChoice#convertToObject(java
91 * .lang.String)
92 */
93 @Override
94 public Object convertToObject(String orig) {
95 return orig;
96 }
97
98 /**
99 * The options that we are presenting the user with
100 */
101 private String[] array;
102 }
103