diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java index f04beac90eb7f68989e9d82347b477d9a167f38d..4cc9c96f14afaa6edb96a01000fbbcf842897d6b 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java @@ -29,9 +29,6 @@ import org.fortiss.tooling.kernel.extension.data.TutorialStep; * @ConQAT.Rating RED Hash: */ public interface ITutorialProvider { - /** Returns the description of the tutorial. */ - public String getDescription(); - /** Returns the root element of this tutorial. */ public EObject getRootElement(); diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java index 65f6b599f1fb0327bb84f193c619ecdc4bd857d0..e05d70180b232861e6ec778fa61bc0c60d6fb488 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java @@ -17,11 +17,10 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.HashMap; +import java.util.Map; -import org.conqat.lib.commons.collections.UnmodifiableList; +import org.conqat.lib.commons.collections.UnmodifiableMap; import org.eclipse.emf.ecore.EObject; import org.fortiss.tooling.kernel.extension.ITutorialProvider; import org.fortiss.tooling.kernel.extension.ITutorialWhitelistProvider; @@ -40,7 +39,7 @@ import org.fortiss.tooling.kernel.service.ITutorialService; public final class TutorialService implements ITutorialService, ITutorialWhitelistProvider { /** The collection of all defined tutorials. */ - private List<ITutorialProvider> allTutorials = new ArrayList<>(); + private Map<String, Class<? extends ITutorialProvider>> allTutorials = new HashMap<>(); /** The active tutorial. */ private ITutorialProvider activeTutorial = null; @@ -67,32 +66,38 @@ public final class TutorialService implements ITutorialService, ITutorialWhiteli /** {@inheritDoc} */ @Override - public Collection<ITutorialProvider> getAllTutorialProviders() { - return new UnmodifiableList<>(allTutorials); + public Map<String, Class<? extends ITutorialProvider>> getAllTutorialProviders() { + return new UnmodifiableMap<String, Class<? extends ITutorialProvider>>(allTutorials); } /** {@inheritDoc} */ @Override - public void registerTutorial(ITutorialProvider provider) { - if(!allTutorials.contains(provider)) { - allTutorials.add(provider); - } + public void registerTutorial(String name, Class<? extends ITutorialProvider> provider) { + allTutorials.put(name, provider); } /** {@inheritDoc} */ @Override - public void startTutorial(ITutorialProvider provider) { - activeTutorial = provider; - activeStep = activeTutorial.getInitialStep(); - - IPersistencyService.INSTANCE.addDummyEObjectAsTopLevelElement(activeTutorial - .getRootElement()); - System.out.println("start tutorial for provider: " + activeTutorial.getClass().getName()); + public void startTutorial(String name) { + if(!allTutorials.containsKey(name)) { + return; + } + try { + activeTutorial = allTutorials.get(name).newInstance(); + activeStep = activeTutorial.getInitialStep(); + EObject root = activeTutorial.getRootElement(); + IPersistencyService.INSTANCE.addDummyEObjectAsTopLevelElement(root); + } catch(InstantiationException e) { + e.printStackTrace(); + } catch(IllegalAccessException e) { + e.printStackTrace(); + } } /** {@inheritDoc} */ @Override public void stopTutorial() { + IPersistencyService.INSTANCE.removeDummyTopLevelElement(activeTutorial.getRootElement()); activeStep = null; activeTutorial = null; } diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java index 2b90ce4e5167551b08970020a62c1967f535ddad..744f3a78bb8a44e76d748c85703233b0c596ad44 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java @@ -17,7 +17,7 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.service; -import java.util.Collection; +import java.util.Map; import org.fortiss.tooling.kernel.extension.ITutorialProvider; import org.fortiss.tooling.kernel.extension.data.TutorialStep; @@ -44,7 +44,7 @@ public interface ITutorialService { public ITutorialProvider getActiveTutorial(); /** Starts the given tutorial. */ - public void startTutorial(ITutorialProvider provider); + public void startTutorial(String name); /** Stops the current tutorial. */ public void stopTutorial(); @@ -53,8 +53,8 @@ public interface ITutorialService { public TutorialStep getActiveTutorialStep(); /** Returns all registered tutorial providers. */ - public Collection<ITutorialProvider> getAllTutorialProviders(); + public Map<String, Class<? extends ITutorialProvider>> getAllTutorialProviders(); /** Programmatically register a tutorial provider. */ - public void registerTutorial(ITutorialProvider provider); + public void registerTutorial(String name, Class<? extends ITutorialProvider> provider); }