/* * Created on 25.03.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.jboss.tools.common.model.options; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import org.jboss.tools.common.model.XModelException; /** * @author Eskimo * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class SwitchPreference extends Preference { protected Preference switchPreference = null; /** * @param optionPath * @param attributeName */ public SwitchPreference(String attributeName) { super("", attributeName); //$NON-NLS-1$ // TODO Auto-generated constructor stub } public SwitchPreference(String attributeName, Preference switchPreference) { this(attributeName); this.switchPreference = switchPreference; } public void setSwitchPreference(Preference pref) { switchPreference = pref; } public String getValue() { if(switchPreference==null) throw new IllegalStateException("switchPreference cannot be null, call setSwitchPreferenceFirst."); //$NON-NLS-1$ Preference preference = (Preference)preferencesMap.get(switchPreference.getValue()); if(preference==null) throw new IllegalStateException("Preference in't added for switch value '" + switchPreference.getValue() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ return preference.getValue(); } public void setValue(String value) throws XModelException { if(switchPreference==null) throw new IllegalStateException("switchPreference cannot be null, call setSwitchPreferenceFirst."); //$NON-NLS-1$ Preference preference = (Preference)preferencesMap.get(switchPreference.getValue()); if(preference==null) throw new IllegalStateException("Preference in't added for switch value '" + switchPreference.getValue() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ preference.setValue(value); } protected Hashtable<Object,Preference> preferencesMap = new Hashtable<Object,Preference>(); public void addPreferenceMapping(Object switchValue,Preference pref) { preferencesMap.put(switchValue,pref); } public List<Preference> getPreferences() { List<Preference> preferenceList = new ArrayList<Preference>(); Enumeration keys = preferencesMap.keys(); while(keys.hasMoreElements()) { preferenceList.add( preferencesMap.get( keys.nextElement() ) ); } return Collections.unmodifiableList(preferenceList); } public static final SwitchPreference createSwitchPreference(String name, Preference switchPreference, SwitchPreferenceMapping[] preferenceMap) { SwitchPreference preference = new SwitchPreference(name,switchPreference); for(int i=0;i<preferenceMap.length;i++) { preference.addPreferenceMapping(preferenceMap[i].getValue(),preferenceMap[i].getPreference()); } return preference; } public static final SwitchPreferenceMapping createMapping(Object value, Preference preference) { return new SwitchPreferenceMapping(value,preference); } public static class SwitchPreferenceMapping { Object map[]; public SwitchPreferenceMapping(Object value, Preference preference) { map= new Object[]{value,preference}; } public Object getValue() { return map[0]; } public Preference getPreference() { return (Preference)map[1]; } } }