Skip to content
Snippets Groups Projects
Commit 6e85bd17 authored by Florian Hölzl's avatar Florian Hölzl
Browse files

Filtering of prototype new menu entries working properly now.

refs 2567
parent 384b2301
No related branches found
No related tags found
No related merge requests found
Showing
with 120 additions and 23 deletions
......@@ -17,7 +17,7 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.extension;
import org.fortiss.tooling.kernel.extension.data.TutorialStep;
import org.fortiss.tooling.kernel.ui.extension.data.TutorialStepUI;
/**
* Interface UI parts of tutorial providers.
......@@ -37,5 +37,5 @@ public interface ITutorialUIProvider {
* Returns the local whitelist provider for the given step. This method MUST never return
* <code>null</code>.
*/
public ITutorialUIWhitelistProvider getLocalUIWhitelistProvider(TutorialStep step);
public ITutorialUIWhitelistProvider getLocalUIWhitelistProvider(TutorialStepUI step);
}
......@@ -20,6 +20,7 @@ package org.fortiss.tooling.kernel.ui.extension;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IContributionItem;
/**
* Tutorial whitelist provider interface for the UI kernel services.
......@@ -38,9 +39,10 @@ public interface ITutorialUIWhitelistProvider {
public boolean globalDefaultActionsVisible();
/** Returns whether the given context menu contribution is visible. */
public boolean contextMenuContributionVisible(EObject element, Object contribution);
public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution);
/** Returns whether the given context menu contribution is visible. */
public boolean contextMenuContributionVisible(List<EObject> element, Object contribution);
public boolean contextMenuContributionVisible(List<EObject> element,
IContributionItem contribution);
// TODO: define other methods
}
......@@ -20,6 +20,7 @@ package org.fortiss.tooling.kernel.ui.extension.base;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IContributionItem;
import org.fortiss.tooling.kernel.ui.extension.ITutorialUIWhitelistProvider;
/**
......@@ -45,13 +46,14 @@ public class TutorialUIBlacklistAllProvider implements ITutorialUIWhitelistProvi
/** {@inheritDoc} */
@Override
public boolean contextMenuContributionVisible(EObject element, Object contribution) {
public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution) {
return false;
}
/** {@inheritDoc} */
@Override
public boolean contextMenuContributionVisible(List<EObject> element, Object contribution) {
public boolean contextMenuContributionVisible(List<EObject> element,
IContributionItem contribution) {
return false;
}
}
......@@ -20,6 +20,7 @@ package org.fortiss.tooling.kernel.ui.extension.base;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IContributionItem;
import org.fortiss.tooling.kernel.ui.extension.ITutorialUIWhitelistProvider;
/**
......@@ -45,13 +46,14 @@ public class TutorialUIWhitelistAllProvider implements ITutorialUIWhitelistProvi
/** {@inheritDoc} */
@Override
public boolean contextMenuContributionVisible(EObject element, Object contribution) {
public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution) {
return true;
}
/** {@inheritDoc} */
@Override
public boolean contextMenuContributionVisible(List<EObject> element, Object contribution) {
public boolean contextMenuContributionVisible(List<EObject> element,
IContributionItem contribution) {
return true;
}
}
/*--------------------------------------------------------------------------+
$Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
| |
| Copyright 2016 ForTISS GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.extension.data;
import org.fortiss.tooling.kernel.extension.data.TutorialStep;
import org.fortiss.tooling.kernel.ui.extension.ITutorialUIWhitelistProvider;
import org.fortiss.tooling.kernel.ui.extension.base.TutorialUIBlacklistAllProvider;
/**
* Data class for UI parts of {@link TutorialStep}s.
*
* @author hoelzl
* @author $Author: hoelzl $
* @version $Rev: 18709 $
* @ConQAT.Rating RED Hash:
*/
public abstract class TutorialStepUI extends TutorialStep {
/**
* Returns the step-specific whitelist provider. The default returns a provider blacklisting
* everything.
*/
public ITutorialUIWhitelistProvider getUIWhitelistProvider() {
return new TutorialUIBlacklistAllProvider();
}
}
......@@ -23,10 +23,13 @@ import java.util.List;
import org.eclipse.emf.common.command.CommandStackListener;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.actions.ActionFactory;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.extension.data.Prototype;
import org.fortiss.tooling.kernel.service.ICommandStackService;
import org.fortiss.tooling.kernel.service.IPersistencyService;
import org.fortiss.tooling.kernel.service.listener.IPersistencyServiceListener;
......@@ -36,6 +39,7 @@ import org.fortiss.tooling.kernel.ui.internal.actions.DeleteAction;
import org.fortiss.tooling.kernel.ui.internal.actions.PasteAction;
import org.fortiss.tooling.kernel.ui.internal.actions.RedoAction;
import org.fortiss.tooling.kernel.ui.internal.actions.UndoAction;
import org.fortiss.tooling.kernel.ui.internal.views.NavigatorNewMenu;
import org.fortiss.tooling.kernel.ui.service.IActionService;
import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
......@@ -216,4 +220,18 @@ public class ActionService implements IActionService, IPersistencyServiceListene
public void runGlobalCutAction() {
globalCutAction.run();
}
/** {@inheritDoc} */
@Override
public Prototype getNewMenuContributionPrototype(IContributionItem contributionItem) {
if(contributionItem instanceof ActionContributionItem) {
ActionContributionItem aItem = (ActionContributionItem)contributionItem;
if(aItem.getAction() instanceof NavigatorNewMenu.AddPrototypeAction) {
NavigatorNewMenu.AddPrototypeAction action =
(NavigatorNewMenu.AddPrototypeAction)aItem.getAction();
return action.getPrototype();
}
}
return null;
}
}
......@@ -24,11 +24,13 @@ import java.util.List;
import java.util.Map;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IContributionItem;
import org.fortiss.tooling.kernel.extension.ITutorialProvider;
import org.fortiss.tooling.kernel.extension.data.TutorialStep;
import org.fortiss.tooling.kernel.service.ITutorialService;
import org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator;
import org.fortiss.tooling.kernel.ui.extension.ITutorialUIProvider;
import org.fortiss.tooling.kernel.ui.extension.data.TutorialStepUI;
import org.fortiss.tooling.kernel.ui.service.ITutorialUIService;
/**
......@@ -85,7 +87,11 @@ public final class TutorialUIService implements ITutorialUIService {
return true;
}
TutorialStep step = ITutorialService.INSTANCE.getActiveTutorialStep();
return p.getLocalUIWhitelistProvider(step).elementVisibleInNavigator(element);
if(step instanceof TutorialStepUI) {
return p.getLocalUIWhitelistProvider((TutorialStepUI)step).elementVisibleInNavigator(
element);
}
return false;
}
/** {@inheritDoc} */
......@@ -96,30 +102,41 @@ public final class TutorialUIService implements ITutorialUIService {
return true;
}
TutorialStep step = ITutorialService.INSTANCE.getActiveTutorialStep();
return p.getLocalUIWhitelistProvider(step).globalDefaultActionsVisible();
if(step instanceof TutorialStepUI) {
return p.getLocalUIWhitelistProvider((TutorialStepUI)step)
.globalDefaultActionsVisible();
}
return false;
}
/** {@inheritDoc} */
@Override
public boolean contextMenuContributionVisible(EObject element, Object contribution) {
public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution) {
ITutorialUIProvider p = getCurrentUIProvider();
if(p.getGlobalUIWhitelistProvider().contextMenuContributionVisible(element, contribution)) {
return true;
}
TutorialStep step = ITutorialService.INSTANCE.getActiveTutorialStep();
return p.getLocalUIWhitelistProvider(step).contextMenuContributionVisible(element,
contribution);
if(step instanceof TutorialStepUI) {
return p.getLocalUIWhitelistProvider((TutorialStepUI)step)
.contextMenuContributionVisible(element, contribution);
}
return false;
}
/** {@inheritDoc} */
@Override
public boolean contextMenuContributionVisible(List<EObject> element, Object contribution) {
public boolean contextMenuContributionVisible(List<EObject> element,
IContributionItem contribution) {
ITutorialUIProvider p = getCurrentUIProvider();
if(p.getGlobalUIWhitelistProvider().contextMenuContributionVisible(element, contribution)) {
return true;
}
TutorialStep step = ITutorialService.INSTANCE.getActiveTutorialStep();
return p.getLocalUIWhitelistProvider(step).contextMenuContributionVisible(element,
contribution);
if(step instanceof TutorialStepUI) {
return p.getLocalUIWhitelistProvider((TutorialStepUI)step)
.contextMenuContributionVisible(element, contribution);
}
return false;
}
}
......@@ -89,7 +89,7 @@ public class NavigatorNewMenu implements IContextMenuContributor {
}
/** Action for creating a new prototype. */
private static class AddPrototypeAction extends Action {
public static class AddPrototypeAction extends Action {
/** The prototype. */
private final Prototype prototype;
......@@ -152,5 +152,10 @@ public class NavigatorNewMenu implements IContextMenuContributor {
return IElementCompositorService.INSTANCE.canCompose(container,
prototype.getPrototype(), null);
}
/** Returns the associated prototype. */
public Prototype getPrototype() {
return prototype;
}
}
}
......@@ -17,8 +17,10 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.service;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
import org.fortiss.tooling.kernel.extension.data.Prototype;
import org.fortiss.tooling.kernel.ui.internal.ActionService;
/**
......@@ -83,4 +85,10 @@ public interface IActionService {
* service when any command stack changes.
*/
void refresh();
/**
* Returns whether the given contribution item was provided by the navigator's new menu and
* returns the associated prototype.
*/
Prototype getNewMenuContributionPrototype(IContributionItem contributionItem);
}
......@@ -17,11 +17,10 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.extension;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.kernel.extension.data.Prototype;
/**
* Instances of this interface provide white lists for tool functions
* Instances of this interface provide white lists for non-UI tool functions
* globally enabled in tutorial or locally enabled in a tutorial step.
*
* @author hoelzl
......@@ -33,8 +32,8 @@ public interface ITutorialWhitelistProvider {
/**
* Returns whether the given prototype is active in this tutorial. Note that active
* prototypes may still be filtered by other methods of this whitelist provider, e.g.,
* {@link #contextMenuContributionVisible(EObject, Object)}.
* prototypes may still be filtered by other methods of whitelist providers, in particular those
* related to the UI services.
*/
public boolean prototypeActive(Prototype prototype);
}
......@@ -18,6 +18,7 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
package org.fortiss.tooling.kernel.extension.data;
import org.fortiss.tooling.kernel.extension.ITutorialWhitelistProvider;
import org.fortiss.tooling.kernel.extension.base.TutorialBlacklistAllProvider;
/**
* Data class for steps of tutorials.
......@@ -28,8 +29,11 @@ import org.fortiss.tooling.kernel.extension.ITutorialWhitelistProvider;
* @ConQAT.Rating RED Hash:
*/
public abstract class TutorialStep {
/** Returns the step-specific whitelist provider. */
/**
* Returns the step-specific whitelist provider. The default returns a provider blacklisting
* everything.
*/
public ITutorialWhitelistProvider getWhitelistProvider() {
return null;
return new TutorialBlacklistAllProvider();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment