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

fixed the new menu contribution

parent c1a147c9
No related branches found
No related tags found
No related merge requests found
Showing
with 132 additions and 42 deletions
...@@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ui;visibility:=reexport, ...@@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ui;visibility:=reexport,
org.conqat.ide.commons.ui;bundle-version="2.7.0";visibility:=reexport, org.conqat.ide.commons.ui;bundle-version="2.7.0";visibility:=reexport,
org.unicase.workspace;bundle-version="1.0.0", org.unicase.workspace;bundle-version="1.0.0",
org.unicase.ecp.model;bundle-version="1.0.0", org.unicase.ecp.model;bundle-version="1.0.0",
org.unicase.ecpemfstorebridge;bundle-version="1.0.0" org.unicase.ecpemfstorebridge;bundle-version="1.0.0",
org.unicase.ui.common;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Export-Package: org.fortiss.tooling.kernel, Export-Package: org.fortiss.tooling.kernel,
......
...@@ -24,16 +24,48 @@ ...@@ -24,16 +24,48 @@
<extension <extension
point="org.fortiss.tooling.kernel.modelElementHandler"> point="org.fortiss.tooling.kernel.modelElementHandler">
<modelElementHandler <modelElementHandler
handler="org.fortiss.tooling.kernel.internal.handler.EMFStoreECPProjectModelElementHandler" handler="org.fortiss.tooling.kernel.internal.handler.ProjectSpaceModelElementHandler"
modelElementClass="org.unicase.ecpemfstorebridge.EMFStoreECPProject"> modelElementClass="org.unicase.workspace.ProjectSpace">
</modelElementHandler> </modelElementHandler>
</extension> </extension>
<extension <extension
point="org.fortiss.tooling.kernel.modelElementCompositor"> point="org.fortiss.tooling.kernel.modelElementCompositor">
<modelElementCompositor <modelElementCompositor
compositor="org.fortiss.tooling.kernel.internal.compose.EMFStoreECPProjectCompositor" compositor="org.fortiss.tooling.kernel.internal.compose.ProjectSpaceCompositor"
modelElementClass="org.unicase.ecpemfstorebridge.EMFStoreECPProject"> modelElementClass="org.unicase.workspace.ProjectSpace">
</modelElementCompositor> </modelElementCompositor>
</extension> </extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="popup:org.fortiss.tooling.kernel.model.navigator?before=repository">
<menu
icon="icons/add.png"
id="org.fortiss.tooling.kernel.model.navigator.newmenu"
label="New...">
<visibleWhen
checkEnabled="false">
<with
variable="activeMenuSelection">
<iterate>
<adapt
type="org.eclipse.emf.ecore.EObject">
</adapt>
</iterate>
</with>
</visibleWhen>
</menu>
</menuContribution>
<menuContribution
allPopups="false"
locationURI="popup:org.fortiss.tooling.kernel.model.navigator.newmenu">
<dynamic
class="org.fortiss.tooling.kernel.internal.navigator.NewMenu"
id="org.fortiss.tooling.kernel.model.navigator.newmenu.content">
</dynamic>
</menuContribution>
</extension>
</plugin> </plugin>
...@@ -17,7 +17,12 @@ $Id$ ...@@ -17,7 +17,12 @@ $Id$
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.internal; package org.fortiss.tooling.kernel.internal;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.kernel.services.ICommandStackService; import org.fortiss.tooling.kernel.services.ICommandStackService;
import org.unicase.ecp.model.ECPWorkspaceManager;
import org.unicase.ecp.model.NoWorkspaceException;
import org.unicase.ecp.model.workSpaceModel.ECPProject;
import org.unicase.ui.common.commands.ECPCommand;
/** /**
* This class implements the {@link ICommandStackService} interface. * This class implements the {@link ICommandStackService} interface.
...@@ -29,4 +34,22 @@ import org.fortiss.tooling.kernel.services.ICommandStackService; ...@@ -29,4 +34,22 @@ import org.fortiss.tooling.kernel.services.ICommandStackService;
*/ */
public class CommandStackService implements ICommandStackService { public class CommandStackService implements ICommandStackService {
/** {@inheritDoc} */
@Override
public void runAsCommand(final EObject target, final Runnable runner) {
ECPProject project;
try {
project = ECPWorkspaceManager.getInstance().getWorkSpace()
.getProject(target);
} catch (NoWorkspaceException e) {
return;
}
new ECPCommand(project.getRootObject()) {
@Override
protected void doRun() {
runner.run();
}
}.run(false);
}
} }
...@@ -21,7 +21,7 @@ import org.eclipse.emf.ecore.EObject; ...@@ -21,7 +21,7 @@ import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.kernel.interfaces.ICompositionContext; import org.fortiss.tooling.kernel.interfaces.ICompositionContext;
import org.fortiss.tooling.kernel.interfaces.ICompositor; import org.fortiss.tooling.kernel.interfaces.ICompositor;
import org.fortiss.tooling.kernel.model.IProjectRootElement; import org.fortiss.tooling.kernel.model.IProjectRootElement;
import org.unicase.ecpemfstorebridge.EMFStoreECPProject; import org.unicase.workspace.ProjectSpace;
/** /**
* {@link ICompositor} implementation for the {@link IProjectRootElement}s. * {@link ICompositor} implementation for the {@link IProjectRootElement}s.
...@@ -31,21 +31,20 @@ import org.unicase.ecpemfstorebridge.EMFStoreECPProject; ...@@ -31,21 +31,20 @@ import org.unicase.ecpemfstorebridge.EMFStoreECPProject;
* @version $Rev$ * @version $Rev$
* @levd.rating RED Rev: * @levd.rating RED Rev:
*/ */
public final class EMFStoreECPProjectCompositor implements public final class ProjectSpaceCompositor implements ICompositor<ProjectSpace> {
ICompositor<EMFStoreECPProject> {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public boolean canCompose(EMFStoreECPProject container, EObject contained, public boolean canCompose(ProjectSpace container, EObject contained,
ICompositionContext context) { ICompositionContext context) {
return contained instanceof IProjectRootElement; return contained instanceof IProjectRootElement;
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public boolean compose(EMFStoreECPProject container, EObject contained, public boolean compose(ProjectSpace container, EObject contained,
ICompositionContext context) { ICompositionContext context) {
container.addModelElementToRoot(contained); container.getProject().addModelElement(contained);
return true; return true;
} }
} }
...@@ -26,37 +26,29 @@ import org.fortiss.tooling.kernel.ToolingKernelActivator; ...@@ -26,37 +26,29 @@ import org.fortiss.tooling.kernel.ToolingKernelActivator;
import org.fortiss.tooling.kernel.base.ModelElementHandlerBase; import org.fortiss.tooling.kernel.base.ModelElementHandlerBase;
import org.fortiss.tooling.kernel.interfaces.IModelElementHandler; import org.fortiss.tooling.kernel.interfaces.IModelElementHandler;
import org.fortiss.tooling.kernel.model.IProjectRootElement; import org.fortiss.tooling.kernel.model.IProjectRootElement;
import org.unicase.ecp.model.workSpaceModel.ECPProject;
import org.unicase.ecpemfstorebridge.EMFStoreECPProject;
import org.unicase.workspace.ProjectSpace; import org.unicase.workspace.ProjectSpace;
/** /**
* {@link IModelElementHandler} for {@link ECPProject}s. * {@link IModelElementHandler} for {@link ProjectSpace}s.
* *
* @author hoelzlf * @author hoelzlf
* @author $Author$ * @author $Author$
* @version $Rev$ * @version $Rev$
* @levd.rating RED Rev: * @levd.rating RED Rev:
*/ */
public final class EMFStoreECPProjectModelElementHandler extends public final class ProjectSpaceModelElementHandler extends
ModelElementHandlerBase<EMFStoreECPProject> { ModelElementHandlerBase<ProjectSpace> {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public String getName(EMFStoreECPProject element) { public String getName(ProjectSpace element) {
ProjectSpace projectSpace = (ProjectSpace) element.getRootObject(); return element.getProjectName();
String projectName = projectSpace.getProjectName();
String baseRevision = " @"
+ projectSpace.getBaseVersion().getIdentifier();
String username = projectSpace.getUsersession().getUsername();
return projectName + baseRevision + " (" + username + ")";
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public String getDescription(EMFStoreECPProject element) { public String getDescription(ProjectSpace element) {
ProjectSpace projectSpace = (ProjectSpace) element.getRootObject(); return element.getProjectDescription();
return projectSpace.getProjectDescription();
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
...@@ -67,9 +59,9 @@ public final class EMFStoreECPProjectModelElementHandler extends ...@@ -67,9 +59,9 @@ public final class EMFStoreECPProjectModelElementHandler extends
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public List<EObject> getSubnodes(EMFStoreECPProject element) { public List<EObject> getSubnodes(ProjectSpace element) {
List<EObject> list = new ArrayList<EObject>(); List<EObject> list = new ArrayList<EObject>();
for (EObject node : element.getAllModelElements()) { for (EObject node : element.getProject().getModelElements()) {
if (node instanceof IProjectRootElement) { if (node instanceof IProjectRootElement) {
list.add(node); list.add(node);
} }
......
...@@ -17,11 +17,15 @@ $Id$ ...@@ -17,11 +17,15 @@ $Id$
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.internal.navigator; package org.fortiss.tooling.kernel.internal.navigator;
import java.util.ArrayList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
import org.fortiss.tooling.kernel.interfaces.IModelElementHandler; import org.fortiss.tooling.kernel.interfaces.IModelElementHandler;
import org.fortiss.tooling.kernel.services.IModelElementService; import org.fortiss.tooling.kernel.services.IModelElementService;
import org.unicase.ecp.model.workSpaceModel.ECPProject;
import org.unicase.ecp.model.workSpaceModel.ECPWorkspace; import org.unicase.ecp.model.workSpaceModel.ECPWorkspace;
/** /**
...@@ -38,7 +42,13 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider { ...@@ -38,7 +42,13 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
@Override @Override
public Object[] getElements(Object inputElement) { public Object[] getElements(Object inputElement) {
if (inputElement instanceof ECPWorkspace) { if (inputElement instanceof ECPWorkspace) {
return ((ECPWorkspace) inputElement).getProjects().toArray(); ArrayList<EObject> ret = new ArrayList<EObject>();
EList<ECPProject> projects = ((ECPWorkspace) inputElement)
.getProjects();
for (ECPProject ecpProject : projects) {
ret.add(ecpProject.getRootObject());
}
return ret.toArray();
} }
return null; return null;
} }
......
...@@ -77,6 +77,9 @@ public final class NavigatorViewPart extends ViewPart implements ...@@ -77,6 +77,9 @@ public final class NavigatorViewPart extends ViewPart implements
/** Stores the menu manager. */ /** Stores the menu manager. */
private MenuManager menuManager; private MenuManager menuManager;
/** Stores the new model element menu. */
private NewMenu newMenu;
/** Constructor. */ /** Constructor. */
public NavigatorViewPart() { public NavigatorViewPart() {
try { try {
...@@ -186,13 +189,32 @@ public final class NavigatorViewPart extends ViewPart implements ...@@ -186,13 +189,32 @@ public final class NavigatorViewPart extends ViewPart implements
/** Creates the context menu. */ /** Creates the context menu. */
private void createContextMenu() { private void createContextMenu() {
menuManager = new MenuManager(); menuManager = new MenuManager("#PopupMenu");
// menuManager.setRemoveAllWhenShown(true);
MenuManager newMenuManager = new MenuManager("New ...", // IMenuListener listener = new IMenuListener() {
ToolingKernelActivator.getImageDescriptor("icons/add.png"), // @Override
NewMenu.MENU_ID); // public void menuAboutToShow(IMenuManager m) {
newMenuManager.add(new NewMenu()); // ISelection selection = PlatformUI.getWorkbench()
menuManager.add(newMenuManager); // .getActiveWorkbenchWindow().getSelectionService()
// .getSelection();
// EObject selectedObject = EObjectSelectionUtils
// .getFirstElement(selection);
//
// IContextMenuService.INSTANCE.fillNavigatorContextMenu(m,
// selectedObject);
// }
// };
//
// final MenuManager newMenuManager = new MenuManager("New ...",
// ToolingKernelActivator.getImageDescriptor("icons/add.png"),
// NewMenu.MENU_ID);
// // newMenuManager.setRemoveAllWhenShown(true);
// newMenu = new NewMenu();
// newMenuManager.add(newMenu);
//
// menuManager.addMenuListener(listener);
// menuManager.add(newMenuManager);
Separator repositorySection = new Separator("repository"); Separator repositorySection = new Separator("repository");
repositorySection.setVisible(true); repositorySection.setVisible(true);
......
...@@ -26,6 +26,7 @@ import org.eclipse.ui.PlatformUI; ...@@ -26,6 +26,7 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem; import org.eclipse.ui.actions.CompoundContributionItem;
import org.fortiss.tooling.kernel.interfaces.IPrototypeProvider; import org.fortiss.tooling.kernel.interfaces.IPrototypeProvider;
import org.fortiss.tooling.kernel.internal.util.EObjectSelectionUtils; import org.fortiss.tooling.kernel.internal.util.EObjectSelectionUtils;
import org.fortiss.tooling.kernel.services.ICommandStackService;
import org.fortiss.tooling.kernel.services.ICompositorService; import org.fortiss.tooling.kernel.services.ICompositorService;
import org.fortiss.tooling.kernel.services.IModelElementService; import org.fortiss.tooling.kernel.services.IModelElementService;
import org.fortiss.tooling.kernel.services.IPrototypeService; import org.fortiss.tooling.kernel.services.IPrototypeService;
...@@ -42,7 +43,7 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype; ...@@ -42,7 +43,7 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
public class NewMenu extends CompoundContributionItem { public class NewMenu extends CompoundContributionItem {
/** The menu id. */ /** The menu id. */
public static final String MENU_ID = "org.fortiss.tooling.kernel.newmenu"; public static final String MENU_ID = "org.fortiss.tooling.kernel.navigator.newmenu";
/** List of available actions. */ /** List of available actions. */
private final List<AddPrototypeAction> actions = new ArrayList<AddPrototypeAction>(); private final List<AddPrototypeAction> actions = new ArrayList<AddPrototypeAction>();
...@@ -98,10 +99,18 @@ public class NewMenu extends CompoundContributionItem { ...@@ -98,10 +99,18 @@ public class NewMenu extends CompoundContributionItem {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public void run() { public void run() {
EObject newObject = prototype.getPrototypeCopy(); ICommandStackService.INSTANCE.runAsCommand(container,
if (ICompositorService.INSTANCE.compose(container, newObject, null)) { new Runnable() {
// TODO (FH): open editor
} @Override
public void run() {
EObject newObject = prototype.getPrototypeCopy();
if (ICompositorService.INSTANCE.compose(container,
newObject, null)) {
// TODO (FH): open editor
}
}
});
} }
/** /**
......
...@@ -17,6 +17,7 @@ $Id$ ...@@ -17,6 +17,7 @@ $Id$
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.services; package org.fortiss.tooling.kernel.services;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.kernel.internal.CommandStackService; import org.fortiss.tooling.kernel.internal.CommandStackService;
/** /**
...@@ -33,5 +34,6 @@ public interface ICommandStackService { ...@@ -33,5 +34,6 @@ public interface ICommandStackService {
/** Returns the singleton instance of the service. */ /** Returns the singleton instance of the service. */
public static final ICommandStackService INSTANCE = new CommandStackService(); public static final ICommandStackService INSTANCE = new CommandStackService();
// TODO (FH): define /** Runs the given Runnable within a emfStore transaction. */
void runAsCommand(EObject target, Runnable runner);
} }
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