/**
* Copyright (c) 2012 committers of YAKINDU and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* Contributors:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.simulation.ui.model.presenter;
import static org.eclipse.draw2d.ColorConstants.darkGreen;
import static org.eclipse.draw2d.ColorConstants.gray;
import static org.eclipse.draw2d.ColorConstants.green;
import static org.yakindu.sct.simulation.ui.preferences.SimulationPreferenceConstants.STATE_BACKGROUND_HIGHLIGHTING_COLOR;
import static org.yakindu.sct.simulation.ui.preferences.SimulationPreferenceConstants.STATE_FOREGROUND_HIGHLIGHTING_COLOR;
import static org.yakindu.sct.simulation.ui.preferences.SimulationPreferenceConstants.TRANSITION_HIGHLIGHTING_COLOR;
import static org.yakindu.sct.simulation.ui.preferences.SimulationPreferenceConstants.VERTEX_BACKGROUND_TRANSIENT_COLOR;
import static org.yakindu.sct.simulation.ui.preferences.SimulationPreferenceConstants.VERTEX_FOREGROUND_TRANSIENT_COLOR;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
import org.yakindu.base.gmf.runtime.highlighting.HighlightingParameters;
import org.yakindu.base.gmf.runtime.highlighting.IHighlightingSupport;
import org.yakindu.sct.simulation.ui.SimulationActivator;
import org.yakindu.sct.simulation.ui.preferences.SimulationPreferenceConstants;
/**
* Color handling from the preference store
*
* @author andreas muelder - Initial contribution and API
*
*/
public abstract class AbstractDynamicNotationHandler implements IDynamicNotationHandler, IPropertyChangeListener {
public static HighlightingParameters TRANSITION_PARAMS = new HighlightingParameters(darkGreen, gray);
public static HighlightingParameters STATE_HIGHLIGHT_PARAMS = HighlightingParameters.DEFAULT;
public static HighlightingParameters VERTEX_TRANSIENT_PARAMS = new HighlightingParameters(darkGreen, green);
public static HighlightingParameters SUSPENDED_PARAMS = new HighlightingParameters(green,
HighlightingParameters.DEFAULT.backgroundFadingColor);
protected static final IHighlightingSupport NULL_SUPPORT = new IHighlightingSupport.HighlightingSupportNullImpl();
public AbstractDynamicNotationHandler() {
SimulationActivator.getDefault().getPreferenceStore().addPropertyChangeListener(this);
updatePreferences();
}
private IHighlightingSupport support = new IHighlightingSupport.HighlightingSupportNullImpl();
public void propertyChange(PropertyChangeEvent event) {
if (SimulationPreferenceConstants.STATE_BACKGROUND_HIGHLIGHTING_COLOR.equals(event.getProperty())
|| SimulationPreferenceConstants.TRANSITION_HIGHLIGHTING_COLOR.equals(event.getProperty())
|| SimulationPreferenceConstants.STATE_FOREGROUND_HIGHLIGHTING_COLOR.equals(event.getProperty())) {
updatePreferences();
}
}
protected void updatePreferences() {
IPreferenceStore store = SimulationActivator.getDefault().getPreferenceStore();
// read out the new colors
RGB foregroundColor = PreferenceConverter.getColor(store, STATE_FOREGROUND_HIGHLIGHTING_COLOR);
RGB backgroundColor = PreferenceConverter.getColor(store, STATE_BACKGROUND_HIGHLIGHTING_COLOR);
RGB vertexForegroundColor = PreferenceConverter.getColor(store, VERTEX_FOREGROUND_TRANSIENT_COLOR);
RGB vertexBackgroundColor = PreferenceConverter.getColor(store, VERTEX_BACKGROUND_TRANSIENT_COLOR);
RGB transitionColor = PreferenceConverter.getColor(store, TRANSITION_HIGHLIGHTING_COLOR);
// Set the new colors
STATE_HIGHLIGHT_PARAMS.foregroundFadingColor = new Color(Display.getDefault(), foregroundColor);
STATE_HIGHLIGHT_PARAMS.backgroundFadingColor = new Color(Display.getDefault(), backgroundColor);
VERTEX_TRANSIENT_PARAMS.foregroundFadingColor = new Color(Display.getDefault(), vertexForegroundColor);
VERTEX_TRANSIENT_PARAMS.backgroundFadingColor = new Color(Display.getDefault(), vertexBackgroundColor);
TRANSITION_PARAMS.foregroundFadingColor = new Color(Display.getDefault(), transitionColor);
}
public IHighlightingSupport getHighlightingSupport() {
return support;
}
public void setHighlightingSupport(IHighlightingSupport support) {
this.support = support;
}
}