/**
* 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 java.util.ArrayList;
import java.util.List;
import org.yakindu.base.gmf.runtime.highlighting.HighlightingParameters;
import org.yakindu.base.gmf.runtime.highlighting.IHighlightingSupport;
import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
/**
* @author andreas muelder - Initial contribution and API
* @author axel terfloth - Additions
*
*/
public class DefaultDynamicNotationHandler extends AbstractDynamicNotationHandler {
ExecutionContextVisualizer visualizer = new ExecutionContextVisualizer(NULL_SUPPORT);
protected ExecutionContext currentContext;
public void display(ExecutionContext context) {
if (this.currentContext != null)
this.currentContext.eAdapters().remove(visualizer);
this.currentContext = context;
restoreNotationState(this.currentContext);
this.currentContext.eAdapters().add(visualizer);
}
/**
* highlights the whole execution context, only executed once at the
* beginning.
*/
protected void restoreNotationState(ExecutionContext context) {
List<IHighlightingSupport.Action> actions = new ArrayList<IHighlightingSupport.Action>();
actions.add(new IHighlightingSupport.Highlight(context.getAllActiveStates(), HighlightingParameters.DEFAULT));
actions.add(new IHighlightingSupport.Highlight(context.getExecutedElements(), HighlightingParameters.DEFAULT));
actions.add(new IHighlightingSupport.Highlight(context.getSuspendedElements(), SUSPENDED_PARAMS));
getHighlightingSupport().executeAsync(actions);
}
@Override
public void terminate() {
if (this.currentContext != null)
this.currentContext.eAdapters().remove(visualizer);
visualizer.setHighlightingSupport(NULL_SUPPORT);
}
@Override
public void setHighlightingSupport(IHighlightingSupport support) {
super.setHighlightingSupport(support);
visualizer.setHighlightingSupport(support);
}
}