/**
* Copyright (c) 2010 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.ui.editor.utils;
import org.eclipse.emf.ecore.EObject;
import org.yakindu.sct.model.sgraph.Choice;
import org.yakindu.sct.model.sgraph.Entry;
import org.yakindu.sct.model.sgraph.Exit;
import org.yakindu.sct.model.sgraph.FinalState;
import org.yakindu.sct.model.sgraph.Region;
import org.yakindu.sct.model.sgraph.State;
import org.yakindu.sct.model.sgraph.Synchronization;
import org.yakindu.sct.model.sgraph.Transition;
import org.yakindu.sct.model.sgraph.util.SGraphSwitch;
import org.yakindu.sct.ui.editor.providers.SemanticHints;
/**
*
* @author andreas muelder
*
*/
public final class SemanticHintUtil implements SemanticHints {
private SemanticHintUtil() {
}
/**
* Returns the semantic hint for a given semantic Element
*
* @param semanticElement
* @return
*/
public static String getSemanticHint(EObject semanticElement) {
return new SGraphSwitch<String>() {
@Override
public String caseTransition(Transition object) {
return TRANSITION;
}
@Override
public String caseState(State object) {
return STATE;
}
@Override
public String caseRegion(Region object) {
return REGION;
}
@Override
public String caseEntry(Entry object) {
return ENTRY;
}
@Override
public String caseFinalState(FinalState object) {
return FINALSTATE;
}
public String caseExit(Exit object) {
return EXIT;
};
@Override
public String caseChoice(Choice object) {
return CHOICE;
};
public String caseSynchronization(Synchronization object) {
return SYNCHRONIZATION;
};
public String defaultCase(EObject object) {
throw new IllegalStateException(
"No Semantic Hint found for object " + object);
};
}.doSwitch(semanticElement);
}
}