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

removed trial patches

completed working undo/redo mechanism
fixed global actions update in navigator
parent f868baef
No related branches found
No related tags found
No related merge requests found
Showing
with 319 additions and 88 deletions
......@@ -16,6 +16,7 @@ Require-Bundle: org.eclipse.core.runtime;visibility:=reexport,
org.conqat.ide.commons.ui;bundle-version="2.7.0";visibility:=reexport,
org.conqat.ide.commons.gef;bundle-version="2.7.0",
org.eclipse.jdt.ui;bundle-version="3.6.2",
org.eclipse.emf.transaction;bundle-version="1.4.0",
org.eclipse.emf.emfstore.server;bundle-version="0.7.3",
org.eclipse.emf.emfstore.client;bundle-version="0.7.3",
org.eclipse.emf.emfstore.client.ui;bundle-version="0.7.3"
......
......@@ -185,15 +185,15 @@
<extension
point="org.fortiss.tooling.kernel.modelElementHandler">
<modelElementHandler
handler="org.fortiss.tooling.kernel.internal.handler.ProjectSpaceModelElementHandler"
modelElementClass="org.eclipse.emf.emfstore.client.model.ProjectSpace">
handler="org.fortiss.tooling.kernel.internal.handler.ProjectModelElementHandler"
modelElementClass="org.eclipse.emf.emfstore.common.model.Project">
</modelElementHandler>
</extension>
<extension
point="org.fortiss.tooling.kernel.modelElementCompositor">
<modelElementCompositor
compositor="org.fortiss.tooling.kernel.internal.compose.ProjectSpaceCompositor"
modelElementClass="org.eclipse.emf.emfstore.client.model.ProjectSpace">
compositor="org.fortiss.tooling.kernel.internal.compose.ProjectCompositor"
modelElementClass="org.eclipse.emf.emfstore.common.model.Project">
</modelElementCompositor>
</extension>
......
/*--------------------------------------------------------------------------+
$Id$
| |
| Copyright 2011 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.base;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
/**
* JFace {@link Action}, which uses an EObject as target.
*
* @author hoelzlf
* @author $Author$
* @version $Rev$
* @levd.rating RED Rev:
*/
public abstract class EObjectAction extends Action {
/** Stores the target {@link EObject}. */
private EObject target;
/** Constructor. */
public EObjectAction(String text, ImageDescriptor image) {
super(text, image);
}
/** Sets the target object. */
public void setTarget(EObject target) {
this.target = target;
}
/** Returns the current target. */
public EObject getTarget() {
return target;
}
}
......@@ -20,8 +20,7 @@ package org.fortiss.tooling.kernel.internal;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorSite;
......@@ -29,6 +28,7 @@ import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.fortiss.tooling.kernel.base.EObjectAction;
import org.fortiss.tooling.kernel.model.IRemovable;
import org.fortiss.tooling.kernel.services.IActionService;
import org.fortiss.tooling.kernel.services.ICommandStackService;
......@@ -48,65 +48,53 @@ public class ActionService implements IActionService {
public static final String GROUP_GLOBAL_DEFAULTS = "globalDefaults";
/** The global undo action. */
public final IAction globalUndoAction = new Action("Undo", PlatformUI
.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)) {
public final EObjectAction globalUndoAction = new EObjectAction("Undo",
PlatformUI.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)) {
@Override
public void run() {
EObject selectedObject = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
if (selectedObject != null) {
ICommandStackService.INSTANCE.undo(selectedObject);
if (getTarget() != null) {
ICommandStackService.INSTANCE.undo(getTarget());
}
}
};
/** The global redo action. */
public final EObjectAction globalRedoAction = new EObjectAction("Redo",
PlatformUI.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)) {
@Override
public boolean isEnabled() {
EObject selectedObject = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
return selectedObject != null
&& ICommandStackService.INSTANCE.canUndo(selectedObject);
public void run() {
if (getTarget() != null) {
ICommandStackService.INSTANCE.redo(getTarget());
}
}
};
/** The global delete action. */
public final IAction globalDeleteAction = new Action("Delete", PlatformUI
.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE)) {
public final EObjectAction globalDeleteAction = new EObjectAction("Delete",
PlatformUI.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE)) {
@Override
public void run() {
final EObject selectedObject = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
final EObject selectedObject = getTarget();
if (selectedObject == null) {
return;
}
ICommandStackService.INSTANCE.runAsCommand(selectedObject,
new Runnable() {
@Override
public void run() {
if (selectedObject != null) {
if (selectedObject instanceof IRemovable) {
((IRemovable) selectedObject).remove();
} else {
EcoreUtil.delete(selectedObject, true);
}
if (selectedObject instanceof IRemovable) {
((IRemovable) selectedObject).remove();
} else {
EcoreUtil.delete(selectedObject, true);
}
}
});
}
@Override
public boolean isEnabled() {
EObject selectedObject = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
if (selectedObject != null) {
if (selectedObject instanceof IRemovable) {
return ((IRemovable) selectedObject).canRemove();
}
// ProjectSpace must be deleted with repository command
return !(selectedObject instanceof ProjectSpace)
&& selectedObject.eContainer() != null;
}
return false;
}
};
/** {@inheritDoc} */
......@@ -114,6 +102,7 @@ public class ActionService implements IActionService {
public void addGlobalDefaultActionSectionToMenu(IMenuManager menuManager) {
menuManager.appendToGroup(GROUP_GLOBAL_DEFAULTS, globalDeleteAction);
menuManager.appendToGroup(GROUP_GLOBAL_DEFAULTS, globalUndoAction);
menuManager.appendToGroup(GROUP_GLOBAL_DEFAULTS, globalRedoAction);
}
/** {@inheritDoc} */
......@@ -136,12 +125,42 @@ public class ActionService implements IActionService {
actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
globalUndoAction);
globalRedoAction.setId(ActionFactory.REDO.getId());
globalRedoAction.setActionDefinitionId(ActionFactory.REDO
.getCommandId());
actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(),
globalRedoAction);
actionBars.updateActionBars();
}
/** {@inheritDoc} */
@Override
public void update() {
globalUndoAction.setEnabled(globalUndoAction.isEnabled());
EObject target = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
if (target == null) {
globalUndoAction.setEnabled(false);
globalRedoAction.setEnabled(false);
globalDeleteAction.setEnabled(false);
return;
}
globalUndoAction.setTarget(target);
globalUndoAction.setEnabled(ICommandStackService.INSTANCE
.canUndo(target));
globalRedoAction.setTarget(target);
globalRedoAction.setEnabled(ICommandStackService.INSTANCE
.canRedo(target));
boolean canDelete = (target instanceof IRemovable)
&& ((IRemovable) target).canRemove();
canDelete = canDelete || !(target instanceof Project)
&& !(target instanceof ProjectSpace)
&& target.eContainer() != null;
globalDeleteAction.setTarget(target);
globalDeleteAction.setEnabled(canDelete);
}
}
......@@ -17,11 +17,24 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.internal;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Stack;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.emfstore.client.model.Configuration;
import org.eclipse.emf.emfstore.client.model.ModelPackage;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.Workspace;
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
import org.eclipse.emf.emfstore.client.model.impl.ProjectSpaceImpl;
import org.eclipse.emf.emfstore.client.model.observers.OperationListener;
import org.eclipse.emf.emfstore.client.model.util.EMFStoreCommand;
import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation;
import org.fortiss.tooling.kernel.services.ICommandStackService;
/**
......@@ -35,14 +48,27 @@ import org.fortiss.tooling.kernel.services.ICommandStackService;
public class CommandStackService implements ICommandStackService {
/** Stores the EMFStore command stack. */
private BasicCommandStack globalCommandStack;
private BasicCommandStack emfStoreCommandStack;
/** Stores the project state observers. */
private Map<ProjectSpace, ProjectSpaceObserver> projectSpaceObserverMap = new HashMap<ProjectSpace, CommandStackService.ProjectSpaceObserver>();
/** Stores the workspace listener. */
private AdapterImpl workspaceListener;
/** Constructor. */
public CommandStackService() {
// make sure workspace is initialized
// before fetching command stack
WorkspaceManager.getInstance().getCurrentWorkspace();
globalCommandStack = (BasicCommandStack) Configuration
Workspace ws = WorkspaceManager.getInstance().getCurrentWorkspace();
createWorkspaceListener();
ws.eAdapters().add(workspaceListener);
for (ProjectSpace ps : ws.getProjectSpaces()) {
ProjectSpaceObserver state = new ProjectSpaceObserver(ps);
projectSpaceObserverMap.put(ps, state);
}
emfStoreCommandStack = (BasicCommandStack) Configuration
.getEditingDomain().getCommandStack();
}
......@@ -56,30 +82,129 @@ public class CommandStackService implements ICommandStackService {
runner.run();
}
};
globalCommandStack.execute(command);
emfStoreCommandStack.execute(command);
}
/** {@inheritDoc} */
@Override
public boolean canUndo(EObject target) {
return globalCommandStack.canUndo();
ProjectSpace projectSpace = WorkspaceManager.getProjectSpace(target);
return !projectSpace.getOperations().isEmpty();
}
/** {@inheritDoc} */
@Override
public boolean canRedo(EObject target) {
return globalCommandStack.canRedo();
ProjectSpace projectSpace = WorkspaceManager.getProjectSpace(target);
return projectSpaceObserverMap.get(projectSpace).canRedo();
}
/** {@inheritDoc} */
@Override
public void undo(EObject target) {
globalCommandStack.undo();
final ProjectSpace projectSpace = WorkspaceManager
.getProjectSpace(target);
// also pushes the operation on the project state observer's redo stack
emfStoreCommandStack.execute(new EMFStoreCommand() {
@Override
protected void doRun() {
projectSpace.undoLastOperation();
}
});
}
/** {@inheritDoc} */
@Override
public void redo(EObject target) {
globalCommandStack.redo();
ProjectSpace projectSpace = WorkspaceManager.getProjectSpace(target);
projectSpaceObserverMap.get(projectSpace).redo();
}
/** Creates the workspace listener. */
private void createWorkspaceListener() {
workspaceListener = new AdapterImpl() {
@Override
public void notifyChanged(Notification msg) {
if ((msg.getFeatureID(Workspace.class)) == ModelPackage.WORKSPACE__PROJECT_SPACES) {
if (msg.getEventType() == Notification.ADD
&& ModelPackage.eINSTANCE.getProjectSpace()
.isInstance(msg.getNewValue())) {
ProjectSpace projectSpace = (ProjectSpace) msg
.getNewValue();
ProjectSpaceObserver obs = new ProjectSpaceObserver(
projectSpace);
projectSpaceObserverMap.put(projectSpace, obs);
} else if (msg.getEventType() == Notification.REMOVE
&& ModelPackage.eINSTANCE.getProjectSpace()
.isInstance(msg.getOldValue())) {
ProjectSpace projectSpace = (ProjectSpace) msg
.getOldValue();
ProjectSpaceObserver obs = projectSpaceObserverMap
.remove(projectSpace);
obs.dispose();
}
}
}
};
}
/** Observes the state of a {@link ProjectSpace}. */
private class ProjectSpaceObserver implements OperationListener {
/** Stores the project space reference. */
private final ProjectSpace projectSpace;
/** Stores the redo stack. */
private final Stack<AbstractOperation> redoStack = new Stack<AbstractOperation>();
/** Flag indicating the current operation is a redo. */
private boolean redoInProgress = false;
/** Constructor. */
public ProjectSpaceObserver(ProjectSpace projectSpace) {
this.projectSpace = projectSpace;
projectSpace.addOperationListener(this);
}
/** {@inheritDoc} */
@Override
public void operationExecuted(AbstractOperation operation) {
if (!redoInProgress) {
// clear stack if not observing a redo
redoStack.clear();
}
}
/** {@inheritDoc} */
@Override
public void operationUnDone(AbstractOperation operation) {
redoStack.add(operation);
}
/** Returns whether redo is possible. */
public boolean canRedo() {
return !redoStack.isEmpty();
}
/** Redo the last operation. */
public void redo() {
final LinkedList<AbstractOperation> ops = new LinkedList<AbstractOperation>();
ops.add(redoStack.pop());
emfStoreCommandStack.execute(new EMFStoreCommand() {
@Override
protected void doRun() {
redoInProgress = true;
((ProjectSpaceImpl) projectSpace).applyOperations(ops);
redoInProgress = false;
}
});
}
/** Disposes the project state observer. */
public void dispose() {
projectSpace.removeOperationListener(this);
}
}
}
......@@ -67,6 +67,7 @@ public class EditorService extends EObjectAwareServiceBase<IEditorBinding<EObjec
@Override
public void openInEditor(EObject element) {
try {
// FIXME (FH): only open editor, if at least one bound appear
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
......
......@@ -17,6 +17,7 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.internal;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.part.ViewPart;
import org.fortiss.tooling.kernel.internal.navigator.NavigatorViewPart;
import org.fortiss.tooling.kernel.services.INavigatorService;
......@@ -44,4 +45,11 @@ public class NavigatorService implements INavigatorService {
public ViewPart getNavigatorView() {
return navigatorViewPart;
}
/** {@inheritDoc} */
@Override
public ISelection getCurrentSelection() {
return navigatorViewPart.getSite().getSelectionProvider()
.getSelection();
}
}
......@@ -18,7 +18,7 @@ $Id$
package org.fortiss.tooling.kernel.internal.compose;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.common.model.Project;
import org.fortiss.tooling.kernel.interfaces.ICompositionContext;
import org.fortiss.tooling.kernel.interfaces.ICompositor;
import org.fortiss.tooling.kernel.model.IProjectRootElement;
......@@ -31,20 +31,20 @@ import org.fortiss.tooling.kernel.model.IProjectRootElement;
* @version $Rev$
* @levd.rating RED Rev:
*/
public final class ProjectSpaceCompositor implements ICompositor<ProjectSpace> {
public final class ProjectCompositor implements ICompositor<Project> {
/** {@inheritDoc} */
@Override
public boolean canCompose(ProjectSpace container, EObject contained,
public boolean canCompose(Project container, EObject contained,
ICompositionContext context) {
return contained instanceof IProjectRootElement;
}
/** {@inheritDoc} */
@Override
public boolean compose(ProjectSpace container, EObject contained,
public boolean compose(Project container, EObject contained,
ICompositionContext context) {
container.getProject().addModelElement(contained);
container.addModelElement(contained);
return true;
}
}
......@@ -21,7 +21,8 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.jface.resource.ImageDescriptor;
import org.fortiss.tooling.kernel.ToolingKernelActivator;
import org.fortiss.tooling.kernel.base.HandlerBase;
......@@ -29,26 +30,26 @@ import org.fortiss.tooling.kernel.interfaces.IHandler;
import org.fortiss.tooling.kernel.model.IProjectRootElement;
/**
* {@link IHandler} for {@link ProjectSpace}s.
* {@link IHandler} for {@link Project}s.
*
* @author hoelzlf
* @author $Author$
* @version $Rev$
* @levd.rating RED Rev:
*/
public final class ProjectSpaceModelElementHandler extends
HandlerBase<ProjectSpace> {
public final class ProjectModelElementHandler extends HandlerBase<Project> {
/** {@inheritDoc} */
@Override
public String getName(ProjectSpace element) {
return element.getProjectName();
public String getName(Project element) {
return WorkspaceManager.getProjectSpace(element).getProjectName();
}
/** {@inheritDoc} */
@Override
public String getDescription(ProjectSpace element) {
return element.getProjectDescription();
public String getDescription(Project element) {
return WorkspaceManager.getProjectSpace(element)
.getProjectDescription();
}
/** {@inheritDoc} */
......@@ -59,9 +60,9 @@ public final class ProjectSpaceModelElementHandler extends
/** {@inheritDoc} */
@Override
public List<EObject> getSubnodes(ProjectSpace element) {
public List<EObject> getSubnodes(Project element) {
List<EObject> list = new ArrayList<EObject>();
for (EObject node : element.getProject().getModelElements()) {
for (EObject node : element.getModelElements()) {
if (node instanceof IProjectRootElement) {
list.add(node);
}
......
......@@ -17,8 +17,13 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.internal.navigator;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.Workspace;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.fortiss.tooling.kernel.interfaces.IHandler;
......@@ -38,7 +43,12 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
@Override
public Object[] getElements(Object inputElement) {
if (inputElement instanceof Workspace) {
return ((Workspace) inputElement).getProjectSpaces().toArray();
List<Project> result = new ArrayList<Project>();
for (ProjectSpace space : ((Workspace) inputElement)
.getProjectSpaces()) {
result.add(space.getProject());
}
return result.toArray();
}
return null;
}
......
......@@ -38,7 +38,9 @@ import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
......@@ -70,7 +72,7 @@ import org.fortiss.tooling.kernel.util.EObjectSelectionUtils;
* @levd.rating RED Rev:
*/
public final class NavigatorViewPart extends ViewPart implements
ISelectionListener, IDoubleClickListener,
ISelectionListener, ISelectionChangedListener, IDoubleClickListener,
ITabbedPropertySheetPageContributor, ICustomMenuContributor {
/** Stores the TreeViewer. */
......@@ -185,8 +187,9 @@ public final class NavigatorViewPart extends ViewPart implements
.getLabelDecorator()));
viewer.setContentProvider(new NavigatorTreeContentProvider());
createContextMenu();
getSite().setSelectionProvider(viewer);
createContextMenu();
viewer.addSelectionChangedListener(this);
viewer.setInput(workspace);
......@@ -227,14 +230,16 @@ public final class NavigatorViewPart extends ViewPart implements
/** {@inheritDoc} */
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
EObject selectedElement = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
if (selectedElement != null) {
IActionService.INSTANCE.update();
}
IActionService.INSTANCE.update();
// TODO (FH): implement link with editor feature here
}
/** {@inheritDoc} */
@Override
public void selectionChanged(SelectionChangedEvent event) {
IActionService.INSTANCE.update();
}
/** {@inheritDoc} */
@Override
public void dispose() {
......@@ -288,5 +293,4 @@ public final class NavigatorViewPart extends ViewPart implements
result.add(new NewMenu());
return result;
}
}
......@@ -27,6 +27,7 @@ import org.fortiss.tooling.kernel.services.ICommandStackService;
import org.fortiss.tooling.kernel.services.ICompositorService;
import org.fortiss.tooling.kernel.services.IEditorService;
import org.fortiss.tooling.kernel.services.IModelElementService;
import org.fortiss.tooling.kernel.services.INavigatorService;
import org.fortiss.tooling.kernel.services.IPrototypeService;
import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
import org.fortiss.tooling.kernel.util.EObjectSelectionUtils;
......@@ -60,8 +61,11 @@ public class NewMenu extends CompoundContributionItem {
/** {@inheritDoc} */
@Override
protected IContributionItem[] getContributionItems() {
// FIXME (FH): this assumes the navigator is providing the
// selection, which might not be what we want!
EObject selectedObject = EObjectSelectionUtils
.getCurrentSelectionFirstElement();
.getFirstElement(INavigatorService.INSTANCE
.getCurrentSelection());
List<IContributionItem> contributionItems = new ArrayList<IContributionItem>();
if (selectedObject != null) {
......
......@@ -19,9 +19,9 @@ package org.fortiss.tooling.kernel.internal.properties;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.emfstore.common.model.util.ModelUtil;
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
import org.fortiss.tooling.kernel.services.IPropertiesService;
import org.fortiss.tooling.kernel.util.ProjectRootElementUtils;
/**
* Adapter factory for tabbed property sheets.
......@@ -40,7 +40,7 @@ public final class PropertiesAdapterFactory implements IAdapterFactory {
if (adapterType == ITabbedPropertySheetPageContributor.class
&& adaptableObject instanceof EObject) {
EObject modelElement = (EObject) adaptableObject;
if (ProjectRootElementUtils.getProjectSpace(modelElement) != null) {
if (ModelUtil.getProject(modelElement) != null) {
return new ITabbedPropertySheetPageContributor() {
@Override
......
......@@ -22,7 +22,8 @@ import org.fortiss.tooling.kernel.internal.CommandStackService;
/**
* The command stack service manages the access to the command stack and editing
* domain.
* domain. It provides a Undo/Redo mechanism and allows {@link Runnable}s to be
* executed, which need to modify the model.
*
* @author hoelzl
* @author $Author$
......@@ -34,18 +35,20 @@ public interface ICommandStackService {
/** Returns the singleton instance of the service. */
public static final ICommandStackService INSTANCE = new CommandStackService();
/** Runs the given Runnable within a emfStore transaction. */
/** Runs the given {@link Runnable} within a emfStore transaction. */
void runAsCommand(EObject target, Runnable runner);
/** Checks if an undo action is possible. */
/** Checks if an undo command is possible on the given target's project. */
boolean canUndo(EObject target);
/** Executes the undo action. */
/** Executes the undo command on the target's project. */
void undo(EObject target);
/** Checks if a redo action is possible. */
/**
* Checks if a redo command is possible on the given target's project.
*/
boolean canRedo(EObject target);
/** Executes the redo action. */
/** Executes the redo command on the target's project. */
void redo(EObject target);
}
......@@ -17,6 +17,7 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.services;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.part.ViewPart;
import org.fortiss.tooling.kernel.internal.NavigatorService;
......@@ -41,4 +42,7 @@ public interface INavigatorService {
* navigator has not yet been created or has already been disposed.
*/
ViewPart getNavigatorView();
/** Returns the current naviaator selection. */
ISelection getCurrentSelection();
}
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