1 /* 2 * $HeadURL: $ 3 * $Date: $ 4 * $Revision: $ 5 * $Author: $ 6 * 7 * Copyright (c) 2005 MindTree Consulting Ltd. 8 * 9 * This file is part of Insight. 10 * 11 * Insight is free software: you can redistribute it and/or modify it under the 12 * terms of the GNU General Public License as published by the Free Software 13 * Foundation, either version 3 of the License, or (at your option) any later 14 * version. 15 * 16 * Insight is distributed in the hope that it will be useful, but 17 * WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 19 * Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License along with 22 * Insight. If not, see <http://www.gnu.org/licenses/>. 23 */ 24 25 package com.mindtree.techworks.insight.preferences.model; 26 27 import java.util.ArrayList; 28 import java.util.Iterator; 29 import java.util.List; 30 31 32 /** 33 * This is a specialization of PreferenceAttribute, where all the possible 34 * values are added as a list. 35 * 36 * @see PreferenceAttribute PreferenceAttribute 37 * @author Bindul Bhowmik 38 * @version $Revision: 27 $ $Date: 2007-12-16 04:58:03 -0700 (Sun, 16 Dec 2007) $ 39 */ 40 public class ListPreferenceAttribute extends PreferenceAttribute { 41 42 /** 43 * Used for object serialization 44 */ 45 private static final long serialVersionUID = 2935005894479171827L; 46 47 /** 48 * The possible options for the value 49 */ 50 private ArrayList options; 51 52 /** 53 * @param id The id of the preference attribute 54 * @param value The value associated with the preference attribute 55 * @param isPersistant Whether the value will be saved to the store 56 * @param isUserModifiable Is the preference modifiable 57 * @param parent The parent Preference of this attribute 58 * @see PreferenceAttribute#PreferenceAttribute(PreferenceAttributeType, 59 * String, String, boolean, boolean, Preference) PreferenceAttribtue 60 */ 61 public ListPreferenceAttribute (String id, String value, boolean isEncrypted, 62 boolean isPersistant, boolean isUserModifiable, Preference parent) { 63 64 super(PreferenceAttributeType.LIST, id, value, isEncrypted, isPersistant, 65 isUserModifiable, parent); 66 options = new ArrayList(); 67 } 68 69 /** 70 * @param id The id of the preference attribute 71 * @param value The value associated with the preference attribute 72 * @param isPersistant Whether the value will be saved to the store 73 * @param isUserModifiable Is the preference modifiable 74 * @param parent The parent Preference of this attribute 75 * @param inOptions The list of options 76 */ 77 public ListPreferenceAttribute (String id, String value,boolean isEncrypted, 78 boolean isPersistant, boolean isUserModifiable, Preference parent, 79 List inOptions) { 80 81 this(id, value, isEncrypted, isPersistant, isUserModifiable, parent); 82 83 if (null != inOptions) { 84 for (int i = 0; i < inOptions.size(); i++) { 85 String optionValue = (String) inOptions.get(i); 86 options.add(optionValue); 87 } 88 } 89 } 90 91 /** 92 * Adds an option to the list. 93 * 94 * @param option Option to add to the list. 95 */ 96 public void addOption (String option) { 97 98 options.add(option); 99 } 100 101 /** 102 * Returns the number of options. 103 * 104 * @return Number of options present 105 */ 106 public int getOptionsCount () { 107 108 return options.size(); 109 } 110 111 /** 112 * Returns the option from the list at the required position. 113 * 114 * @param location Location 115 * @return The option at the location 116 * @throws ArrayIndexOutOfBoundsException if the location is not present in 117 * the list 118 */ 119 public String getOption (int location) { 120 121 if (location < 0 || location > options.size()) { 122 throw new ArrayIndexOutOfBoundsException( 123 "Requested option not present."); 124 } 125 return (String) options.get(location); 126 } 127 128 /** 129 * Returns an iterator for the options. 130 * 131 * @return Iterator for the options. 132 */ 133 public Iterator iterateOptions () { 134 135 return options.iterator(); 136 } 137 138 139 140 /** 141 * Checks to see if the value is permitted before setting it. 142 * @see com.mindtree.techworks.insight.preferences.model.PreferenceAttribute#setValue(java.lang.String) 143 * @throws ArrayIndexOutOfBoundsException if the value is not in the options 144 */ 145 public void setValue (String value) { 146 147 if (options.contains(value)) { 148 super.setValue(value); 149 } else { 150 throw new ArrayIndexOutOfBoundsException( 151 "Requested option not present."); 152 } 153 } 154 }