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,
org.conqat.ide.commons.ui;bundle-version="2.7.0";visibility:=reexport,
org.unicase.workspace;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-ActivationPolicy: lazy
Export-Package: org.fortiss.tooling.kernel,
......
......@@ -24,16 +24,48 @@
<extension
point="org.fortiss.tooling.kernel.modelElementHandler">
<modelElementHandler
handler="org.fortiss.tooling.kernel.internal.handler.EMFStoreECPProjectModelElementHandler"
modelElementClass="org.unicase.ecpemfstorebridge.EMFStoreECPProject">
handler="org.fortiss.tooling.kernel.internal.handler.ProjectSpaceModelElementHandler"
modelElementClass="org.unicase.workspace.ProjectSpace">
</modelElementHandler>
</extension>
<extension
point="org.fortiss.tooling.kernel.modelElementCompositor">
<modelElementCompositor
compositor="org.fortiss.tooling.kernel.internal.compose.EMFStoreECPProjectCompositor"
modelElementClass="org.unicase.ecpemfstorebridge.EMFStoreECPProject">
compositor="org.fortiss.tooling.kernel.internal.compose.ProjectSpaceCompositor"
modelElementClass="org.unicase.workspace.ProjectSpace">
</modelElementCompositor>
</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>
......@@ -17,7 +17,12 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.internal;
import org.eclipse.emf.ecore.EObject;
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.
......@@ -29,4 +34,22 @@ import org.fortiss.tooling.kernel.services.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;
import org.fortiss.tooling.kernel.interfaces.ICompositionContext;
import org.fortiss.tooling.kernel.interfaces.ICompositor;
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.
......@@ -31,21 +31,20 @@ import org.unicase.ecpemfstorebridge.EMFStoreECPProject;
* @version $Rev$
* @levd.rating RED Rev:
*/
public final class EMFStoreECPProjectCompositor implements
ICompositor<EMFStoreECPProject> {
public final class ProjectSpaceCompositor implements ICompositor<ProjectSpace> {
/** {@inheritDoc} */
@Override
public boolean canCompose(EMFStoreECPProject container, EObject contained,
public boolean canCompose(ProjectSpace container, EObject contained,
ICompositionContext context) {
return contained instanceof IProjectRootElement;
}
/** {@inheritDoc} */
@Override
public boolean compose(EMFStoreECPProject container, EObject contained,
public boolean compose(ProjectSpace container, EObject contained,
ICompositionContext context) {
container.addModelElementToRoot(contained);
container.getProject().addModelElement(contained);
return true;
}
}
......@@ -26,37 +26,29 @@ import org.fortiss.tooling.kernel.ToolingKernelActivator;
import org.fortiss.tooling.kernel.base.ModelElementHandlerBase;
import org.fortiss.tooling.kernel.interfaces.IModelElementHandler;
import org.fortiss.tooling.kernel.model.IProjectRootElement;
import org.unicase.ecp.model.workSpaceModel.ECPProject;
import org.unicase.ecpemfstorebridge.EMFStoreECPProject;
import org.unicase.workspace.ProjectSpace;
/**
* {@link IModelElementHandler} for {@link ECPProject}s.
* {@link IModelElementHandler} for {@link ProjectSpace}s.
*
* @author hoelzlf
* @author $Author$
* @version $Rev$
* @levd.rating RED Rev:
*/
public final class EMFStoreECPProjectModelElementHandler extends
ModelElementHandlerBase<EMFStoreECPProject> {
public final class ProjectSpaceModelElementHandler extends
ModelElementHandlerBase<ProjectSpace> {
/** {@inheritDoc} */
@Override
public String getName(EMFStoreECPProject element) {
ProjectSpace projectSpace = (ProjectSpace) element.getRootObject();
String projectName = projectSpace.getProjectName();
String baseRevision = " @"
+ projectSpace.getBaseVersion().getIdentifier();
String username = projectSpace.getUsersession().getUsername();
return projectName + baseRevision + " (" + username + ")";
public String getName(ProjectSpace element) {
return element.getProjectName();
}
/** {@inheritDoc} */
@Override
public String getDescription(EMFStoreECPProject element) {
ProjectSpace projectSpace = (ProjectSpace) element.getRootObject();
return projectSpace.getProjectDescription();
public String getDescription(ProjectSpace element) {
return element.getProjectDescription();
}
/** {@inheritDoc} */
......@@ -67,9 +59,9 @@ public final class EMFStoreECPProjectModelElementHandler extends
/** {@inheritDoc} */
@Override
public List<EObject> getSubnodes(EMFStoreECPProject element) {
public List<EObject> getSubnodes(ProjectSpace element) {
List<EObject> list = new ArrayList<EObject>();
for (EObject node : element.getAllModelElements()) {
for (EObject node : element.getProject().getModelElements()) {
if (node instanceof IProjectRootElement) {
list.add(node);
}
......
......@@ -17,11 +17,15 @@ $Id$
+--------------------------------------------------------------------------*/
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.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.fortiss.tooling.kernel.interfaces.IModelElementHandler;
import org.fortiss.tooling.kernel.services.IModelElementService;
import org.unicase.ecp.model.workSpaceModel.ECPProject;
import org.unicase.ecp.model.workSpaceModel.ECPWorkspace;
/**
......@@ -38,7 +42,13 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
@Override
public Object[] getElements(Object inputElement) {
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;
}
......
......@@ -77,6 +77,9 @@ public final class NavigatorViewPart extends ViewPart implements
/** Stores the menu manager. */
private MenuManager menuManager;
/** Stores the new model element menu. */
private NewMenu newMenu;
/** Constructor. */
public NavigatorViewPart() {
try {
......@@ -186,13 +189,32 @@ public final class NavigatorViewPart extends ViewPart implements
/** Creates the context menu. */
private void createContextMenu() {
menuManager = new MenuManager();
MenuManager newMenuManager = new MenuManager("New ...",
ToolingKernelActivator.getImageDescriptor("icons/add.png"),
NewMenu.MENU_ID);
newMenuManager.add(new NewMenu());
menuManager.add(newMenuManager);
menuManager = new MenuManager("#PopupMenu");
// menuManager.setRemoveAllWhenShown(true);
// IMenuListener listener = new IMenuListener() {
// @Override
// public void menuAboutToShow(IMenuManager m) {
// ISelection selection = PlatformUI.getWorkbench()
// .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");
repositorySection.setVisible(true);
......
......@@ -26,6 +26,7 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.fortiss.tooling.kernel.interfaces.IPrototypeProvider;
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.IModelElementService;
import org.fortiss.tooling.kernel.services.IPrototypeService;
......@@ -42,7 +43,7 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
public class NewMenu extends CompoundContributionItem {
/** 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. */
private final List<AddPrototypeAction> actions = new ArrayList<AddPrototypeAction>();
......@@ -98,10 +99,18 @@ public class NewMenu extends CompoundContributionItem {
/** {@inheritDoc} */
@Override
public void run() {
EObject newObject = prototype.getPrototypeCopy();
if (ICompositorService.INSTANCE.compose(container, newObject, null)) {
// TODO (FH): open editor
}
ICommandStackService.INSTANCE.runAsCommand(container,
new Runnable() {
@Override
public void run() {
EObject newObject = prototype.getPrototypeCopy();
if (ICompositorService.INSTANCE.compose(container,
newObject, null)) {
// TODO (FH): open editor
}
}
});
}
/**
......
......@@ -17,6 +17,7 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.services;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.kernel.internal.CommandStackService;
/**
......@@ -33,5 +34,6 @@ public interface ICommandStackService {
/** Returns the singleton instance of the service. */
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