/**
*
*/
package de.urszeidler.shr5.ecp.opener;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecp.core.ECPProject;
import org.eclipse.emf.ecp.ui.util.ECPModelElementOpenTester;
import org.eclipse.emf.ecp.ui.util.ECPModelElementOpener;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import de.urszeidler.eclipse.shr5.AbstraktGegenstand;
import de.urszeidler.eclipse.shr5.AbstraktModifikatoren;
import de.urszeidler.eclipse.shr5.AbstraktPersona;
import de.urszeidler.eclipse.shr5.Drug;
import de.urszeidler.eclipse.shr5.Fahrzeug;
import de.urszeidler.eclipse.shr5.Fertigkeit;
import de.urszeidler.eclipse.shr5.FertigkeitsGruppe;
import de.urszeidler.eclipse.shr5.KiAdept;
import de.urszeidler.eclipse.shr5.Reichweite;
import de.urszeidler.eclipse.shr5.ShrList;
import de.urszeidler.eclipse.shr5.Software;
import de.urszeidler.eclipse.shr5.SourceBook;
import de.urszeidler.eclipse.shr5.Spezies;
import de.urszeidler.eclipse.shr5.Toxin;
import de.urszeidler.eclipse.shr5.Vertrag;
import de.urszeidler.eclipse.shr5.runtime.GruntTeam;
import de.urszeidler.eclipse.shr5.runtime.RuntimeCharacter;
import de.urszeidler.eclipse.shr5.runtime.Team;
import de.urszeidler.eclipse.shr5.runtime.util.RuntimeSwitch;
import de.urszeidler.eclipse.shr5.util.Shr5Switch;
import de.urszeidler.eclipse.shr5Management.CharacterGroup;
import de.urszeidler.eclipse.shr5Management.FreeStyleGenerator;
import de.urszeidler.eclipse.shr5Management.GruntGroup;
import de.urszeidler.eclipse.shr5Management.ManagedCharacter;
import de.urszeidler.eclipse.shr5Management.PlayerManagement;
import de.urszeidler.eclipse.shr5Management.Shr5Generator;
import de.urszeidler.eclipse.shr5Management.Shr5KarmaGenerator;
import de.urszeidler.eclipse.shr5Management.Shr5System;
import de.urszeidler.eclipse.shr5Management.util.Shr5managementSwitch;
import de.urszeidler.shr5.ecp.Activator;
import de.urszeidler.shr5.ecp.editor.ShadowrunEditor;
import de.urszeidler.shr5.ecp.editor.ShrEditorInput;
import de.urszeidler.shr5.runtime.ui.editor.RuntimeEditor;
import de.urszeidler.shr5.scripting.Placement;
import de.urszeidler.shr5.scripting.Script;
import de.urszeidler.shr5.scripting.util.ScriptingSwitch;
/**
* @author urs
*/
public class ECPAttributModifikatorWertOpener implements ECPModelElementOpener, ECPModelElementOpenTester {
private static int RET = 3;
/**
*
*/
public ECPAttributModifikatorWertOpener() {
}
/*
* (non-Javadoc)
* @see
* org.eclipse.emf.ecp.ui.util.ECPModelElementOpener#openModelElement(java
* .lang.Object, org.eclipse.emf.ecp.core.ECPProject)
*/
@Override
public void openModelElement(Object element, ECPProject ecpProject) {
openEditor(element, ecpProject);
}
/**
* @param element
* @param ecpProject
*/
public static void openEditor(Object element, ECPProject ecpProject) {
EObject eObject = (EObject)element;
String name = eObject.eClass().getEPackage().getName();
ShrEditorInput eObjectEditorInput = new ShrEditorInput(eObject, ecpProject.getEditingDomain());
try {
if ("runtime".equals(name) || "scripting".equals(name)) {
IEditorPart openEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.openEditor(eObjectEditorInput, RuntimeEditor.id, true);
openEditor.setFocus();
} else
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(eObjectEditorInput, ShadowrunEditor.id, true);
} catch (PartInitException e) {
Activator.logError("Error open editor " + ShadowrunEditor.id + "for object :" + element, e);
}
}
@Override
public int isApplicable(Object eObject) {
ScriptingSwitch<Integer> scriptingSwitchView = new ScriptingSwitch<Integer>() {
@Override
public Integer caseScript(Script object) {
return RET;
}
@Override
public Integer casePlacement(Placement object) {
return RET;
}
};
Integer doSwitch = scriptingSwitchView.doSwitch((EObject)eObject);
if (doSwitch != null)
return doSwitch;
RuntimeSwitch<Integer> runtimeSwitch = new RuntimeSwitch<Integer>() {
@Override
public Integer caseRuntimeCharacter(RuntimeCharacter object) {
return RET;
}
@Override
public Integer caseTeam(Team object) {
return RET;
}
@Override
public Integer caseGruntTeam(GruntTeam object) {
return RET;
}
};
doSwitch = runtimeSwitch.doSwitch((EObject)eObject);
if (doSwitch != null)
return doSwitch;
Shr5Switch<Integer> shr5Switch = new Shr5Switch<Integer>() {
// @Override
// public Integer caseBeschreibbar(Beschreibbar object) {
// return 0;
// }
@Override
public Integer caseSourceBook(SourceBook object) {
return RET;
}
@Override
public Integer caseSpezies(Spezies object) {
return RET;
}
@Override
public Integer caseReichweite(Reichweite object) {
return RET;
}
@Override
public Integer caseFertigkeit(Fertigkeit object) {
return RET;
}
@Override
public Integer caseFertigkeitsGruppe(FertigkeitsGruppe object) {
return RET;
}
@Override
public Integer caseAbstraktGegenstand(AbstraktGegenstand object) {
return RET;
}
@Override
public Integer caseAbstraktModifikatoren(AbstraktModifikatoren object) {
return RET;
}
@Override
public Integer caseAbstraktPersona(AbstraktPersona object) {
return RET;
}
@Override
public Integer caseShrList(ShrList object) {
return RET;
}
@Override
public Integer caseSoftware(Software object) {
return RET;
}
@Override
public Integer caseVertrag(Vertrag object) {
return RET;
}
@Override
public Integer caseKiAdept(KiAdept object) {
return RET;
}
@Override
public Integer caseFahrzeug(Fahrzeug object) {
return RET;
}
@Override
public Integer caseToxin(Toxin object) {
return RET;
}
@Override
public Integer caseDrug(Drug object) {
return RET;
}
};
doSwitch = shr5Switch.doSwitch((EObject)eObject);
if (doSwitch != null)
return doSwitch;
Shr5managementSwitch<Integer> shr5managementSwitch = new Shr5managementSwitch<Integer>() {
@Override
public Integer caseFreeStyleGenerator(FreeStyleGenerator object) {
return RET;
}
@Override
public Integer caseShr5Generator(Shr5Generator object) {
return RET;
}
@Override
public Integer caseShr5KarmaGenerator(Shr5KarmaGenerator object) {
return RET;
}
@Override
public Integer caseManagedCharacter(ManagedCharacter object) {
return RET;
}
@Override
public Integer caseGruntGroup(GruntGroup object) {
return RET;
}
@Override
public Integer caseCharacterGroup(CharacterGroup object) {
return RET;
}
@Override
public Integer casePlayerManagement(PlayerManagement object) {
return RET;
}
@Override
public Integer caseShr5System(Shr5System object) {
return RET;
}
};
doSwitch = shr5managementSwitch.doSwitch((EObject)eObject);
if (doSwitch == null)
return 0;
return doSwitch;
// return 0;
}
}