/* * This file is part of the OSMembrane project. * More informations under www.osmembrane.de * * The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0. * for more details about the license see http://www.osmembrane.de/license/ * * Source: $HeadURL$ ($Revision$) * Last changed: $Date$ */ package de.osmembrane.model.settings; import java.io.Serializable; import java.util.Locale; import java.util.Observable; import java.util.Observer; import de.osmembrane.model.ModelProxy; import de.osmembrane.model.persistence.FileException; import de.osmembrane.model.pipeline.AbstractFunction; /** * Interface for accessing the {@link Settings} through the {@link ModelProxy}. * * @author jakob_jarosch */ public abstract class AbstractSettings extends Observable implements Serializable, Observer { private static final long serialVersionUID = 2010122714350001L; /** * Initiates the Settings-model. */ public abstract void initiate(); /** * Save the settings to its settings file. * * @throws FileException * is thrown if the settings could not be saved */ public abstract void saveSettings() throws FileException; /** * Returns a value. * * @param type * type of the value which should be returned * * @return the requested value or the default value for it */ public abstract Object getValue(SettingType type); /** * Sets the value for a given type. * * @param type * type which should be set * * @param value * value which should be assigned to the type */ public abstract void setValue(SettingType type, Object value) throws UnparsableFormatException; /** * Returns all available languages. * * @return all available languages */ public abstract Locale[] getLanguages(); /** * Saves a function with a given name to a preset. * * @param name * name of the preset * @param function * which should be saved into the new preset */ public abstract void saveFunctionPreset(String name, AbstractFunction function); /** * Returns all compatible presets to a function. * * @param function * function for which all available presets should be returned * @return all available presets for the function */ public abstract AbstractFunctionPreset[] getAllFunctionPresets( AbstractFunction function); /** * Deletes a preset from the model. * * @param preset * preset which should be removed */ public abstract boolean deleteFunctionPreset(AbstractFunctionPreset preset); /** * Notifies all observers. * * @param soo * a {@link SettingsObserverObject} */ protected abstract void changedNotifyObservers(SettingsObserverObject soo); }