/*******************************************************************************
* Mission Control Technologies, Copyright (c) 2009-2012, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* The MCT platform is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
* MCT includes source code licensed under additional open source licenses. See
* the MCT Open Source Licenses file included with this distribution or the About
* MCT Licenses dialog available at runtime from the MCT Help menu for additional
* information.
*******************************************************************************/
package gov.nasa.jsc.mct.executable.buttons;
import gov.nasa.arc.mct.components.ExtendedProperties;
import gov.nasa.arc.mct.util.StandardComboBoxColors;
import gov.nasa.jsc.mct.executable.buttons.view.ExecutableButtonManifestation;
import java.awt.Color;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class ExecutableButtonSettings {
private ExecutableButtonManifestation manifestation;
private Map<String, Color> colorMap;
private Map<Object, String> reverseMap;
private Map<String, String> defaultSettingsMap;
private StandardComboBoxColors stdComboBoxColors;
public static final int LABEL_TEXT_SIZE = 20;
public ExecutableButtonSettings (ExecutableButtonManifestation manifestation) {
this.manifestation = manifestation;
initializeStandardComboBoxColors();
reverseMap = new HashMap<Object, String>();
addToReverseMap(colorMap);
}
public void initializeStandardComboBoxColors() {
stdComboBoxColors = new StandardComboBoxColors();
colorMap = stdComboBoxColors.getColorMap();
defaultSettingsMap = stdComboBoxColors.getDefaultSettingsMap();
}
private void addToReverseMap(Map<String, ?> map) {
for (Entry<String, ?> e : map.entrySet()) {
reverseMap.put(e.getValue(), e.getKey());
}
}
public List<Color> getSavedColors() {
List<Color> colors = new ArrayList<Color>();
colors.add((Color) getSetting(StandardComboBoxColors.BACKGROUND_COLOR));
colors.add((Color) getSetting(StandardComboBoxColors.FOREGROUND_COLOR));
return colors;
}
public void updateManifestation() {
manifestation.buildFromSettings();
manifestation.getManifestedComponent().save();
}
public Object getSetting(String name) {
String choice = getProps(name);
if (colorMap.containsKey(choice)) {
return colorMap.get(choice);
} else {
return choice;
}
}
public boolean isValidKey(String key) {
return defaultSettingsMap.containsKey(key);
}
public String getProps(String key) {
String value = manifestation.getViewProperties().getProperty(key, String.class);
if (value == null) {
if (!stdComboBoxColors.isValidKey(key)) {
return null;
}
setProps(key, defaultSettingsMap.get(key));
value = defaultSettingsMap.get(key);
}
return value;
}
public void setProps(String key, String value) {
ExtendedProperties viewProperties = manifestation.getViewProperties();
viewProperties.setProperty(key, value);
}
public void setByObject (String key, Object value) {
if (reverseMap.containsKey(value)) {
setProps(key, reverseMap.get(value));
} else if (value instanceof String) {
setProps(key, (String) value);
}
}
}