/******************************************************************************* | |
* Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* Michael Jastram - initial API and implementation | |
******************************************************************************/ | |
package org.eclipse.rmf.reqif10.pror.editor.presentation; | |
import java.util.ArrayList; | |
import java.util.Collection; | |
import java.util.Iterator; | |
import java.util.List; | |
import org.eclipse.emf.common.command.CompoundCommand; | |
import org.eclipse.emf.common.ui.viewer.IViewerProvider; | |
import org.eclipse.emf.edit.command.AddCommand; | |
import org.eclipse.emf.edit.domain.EditingDomain; | |
import org.eclipse.emf.edit.domain.IEditingDomainProvider; | |
import org.eclipse.emf.edit.ui.action.CreateChildAction; | |
import org.eclipse.emf.edit.ui.action.CreateSiblingAction; | |
import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; | |
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; | |
import org.eclipse.jface.action.Action; | |
import org.eclipse.jface.action.ActionContributionItem; | |
import org.eclipse.jface.action.ControlContribution; | |
import org.eclipse.jface.action.IAction; | |
import org.eclipse.jface.action.IContributionItem; | |
import org.eclipse.jface.action.IContributionManager; | |
import org.eclipse.jface.action.IMenuListener; | |
import org.eclipse.jface.action.IMenuManager; | |
import org.eclipse.jface.action.IToolBarManager; | |
import org.eclipse.jface.action.MenuManager; | |
import org.eclipse.jface.action.Separator; | |
import org.eclipse.jface.action.SubContributionItem; | |
import org.eclipse.jface.resource.ImageDescriptor; | |
import org.eclipse.jface.viewers.ISelection; | |
import org.eclipse.jface.viewers.ISelectionChangedListener; | |
import org.eclipse.jface.viewers.ISelectionProvider; | |
import org.eclipse.jface.viewers.IStructuredSelection; | |
import org.eclipse.jface.viewers.SelectionChangedEvent; | |
import org.eclipse.jface.viewers.Viewer; | |
import org.eclipse.rmf.reqif10.ReqIF10Factory; | |
import org.eclipse.rmf.reqif10.ReqIF10Package; | |
import org.eclipse.rmf.reqif10.ReqIFContent; | |
import org.eclipse.rmf.reqif10.SpecHierarchy; | |
import org.eclipse.rmf.reqif10.SpecObject; | |
import org.eclipse.rmf.reqif10.SpecRelation; | |
import org.eclipse.rmf.reqif10.SpecRelationType; | |
import org.eclipse.rmf.reqif10.SpecType; | |
import org.eclipse.rmf.reqif10.common.util.ReqIF10Util; | |
import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor; | |
import org.eclipse.rmf.reqif10.pror.editor.agilegrid.AgileCellEditorActionHandler; | |
import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter; | |
import org.eclipse.rmf.reqif10.pror.filter.SimpleStringFilter; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.swt.events.ModifyEvent; | |
import org.eclipse.swt.events.ModifyListener; | |
import org.eclipse.swt.graphics.FontMetrics; | |
import org.eclipse.swt.graphics.GC; | |
import org.eclipse.swt.widgets.Composite; | |
import org.eclipse.swt.widgets.Control; | |
import org.eclipse.swt.widgets.Text; | |
import org.eclipse.ui.IActionBars; | |
import org.eclipse.ui.IEditorPart; | |
import org.eclipse.ui.PartInitException; | |
/** | |
* This is the action bar contributor for the Reqif10 model editor. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated NOT | |
*/ | |
public class Reqif10ActionBarContributor | |
extends EditingDomainActionBarContributor | |
implements ISelectionChangedListener { | |
/** | |
* This keeps track of the active editor. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected IEditorPart activeEditorPart; | |
/** | |
* This keeps track of the current selection provider. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected ISelectionProvider selectionProvider; | |
private AgileCellEditorActionHandler agileCellEditorActionHandler; | |
/** | |
* List of all SpecObjects (directly or indirectly via SpecHierarchy) in the | |
* current selection. | |
*/ | |
private List<SpecObject> linkSelection = new ArrayList<SpecObject>(); | |
/** | |
* SpecObjects for which linking has been initiated. | |
*/ | |
private List<SpecObject> linkSource = new ArrayList<SpecObject>(); | |
/** | |
* This action opens the Properties view. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected IAction showPropertiesViewAction = | |
new Action(Reqif10EditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { | |
@Override | |
public void run() { | |
try { | |
getPage().showView("org.eclipse.ui.views.PropertySheet"); | |
} | |
catch (PartInitException exception) { | |
Reqif10EditorPlugin.INSTANCE.log(exception); | |
} | |
} | |
}; | |
/** | |
* This action refreshes the viewer of the current editor if the editor | |
* implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected IAction refreshViewerAction = | |
new Action(Reqif10EditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { | |
@Override | |
public boolean isEnabled() { | |
return activeEditorPart instanceof IViewerProvider; | |
} | |
@Override | |
public void run() { | |
if (activeEditorPart instanceof IViewerProvider) { | |
Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); | |
if (viewer != null) { | |
viewer.refresh(); | |
} | |
} | |
} | |
}; | |
/** | |
* This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor | |
* generated for the current selection by the item provider. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected Collection<IAction> createChildActions; | |
/** | |
* This is the menu manager into which menu contribution items should be added for CreateChild actions. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected IMenuManager createChildMenuManager; | |
/** | |
* This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor | |
* generated for the current selection by the item provider. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected Collection<IAction> createSiblingActions; | |
/** | |
* This is the menu manager into which menu contribution items should be | |
* added for CreateSibling actions. <!-- begin-user-doc --> <!-- | |
* end-user-doc --> | |
* | |
* @generated NOT | |
*/ | |
protected IMenuManager createSiblingMenuManager; | |
private Text quicksearch; | |
/** | |
* This creates an instance of the contributor. <!-- begin-user-doc --> | |
* Assignments were out-commented to remove them from the menuManager | |
* (IMenuManager) <!-- end-user-doc --> | |
* | |
* @generated NOT | |
*/ | |
public Reqif10ActionBarContributor() { | |
super(ADDITIONS_LAST_STYLE); | |
} | |
@Override | |
public void init(IActionBars actionBars) { | |
super.init(actionBars); | |
agileCellEditorActionHandler = new AgileCellEditorActionHandler( | |
actionBars); | |
agileCellEditorActionHandler.setDeleteAction(deleteAction); | |
// actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), | |
// deleteAction); | |
agileCellEditorActionHandler.setCutAction(cutAction); | |
// actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), | |
// cutAction); | |
agileCellEditorActionHandler.setCopyAction(copyAction); | |
// actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), | |
// copyAction); | |
agileCellEditorActionHandler.setPasteAction(pasteAction); | |
// actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), | |
// pasteAction); | |
agileCellEditorActionHandler.setUndoAction(undoAction); | |
// actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), | |
// undoAction); | |
agileCellEditorActionHandler.setRedoAction(redoAction); | |
// actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), | |
// redoAction); | |
} | |
/** | |
* This adds Separators for editor additions to the tool bar. | |
* <!-- begin-user-doc --> | |
* Adding Quick Search Box | |
* <!-- end-user-doc --> | |
* @generated NOT | |
*/ | |
@Override | |
public void contributeToToolBar(IToolBarManager toolBarManager) { | |
toolBarManager.add(new Separator("reqif10-settings")); | |
toolBarManager.add(new Separator("reqif10-additions")); | |
toolBarManager.add(createQuickSearchToolbar()); | |
} | |
private IContributionItem createQuickSearchToolbar() { | |
return new ControlContribution("quicksearch") { | |
private int width = -1; | |
private final int FIELD_SIZE = 25; // characters | |
@Override | |
protected Control createControl(Composite parent) { | |
return createQuickSearchControl(parent); | |
} | |
@Override | |
protected int computeWidth(Control control) { | |
if (width == -1) { | |
GC gc = new GC(control); | |
FontMetrics fm = gc.getFontMetrics(); | |
width = FIELD_SIZE * fm.getAverageCharWidth(); | |
} | |
return width; | |
} | |
}; | |
} | |
private Control createQuickSearchControl(Composite parent) { | |
quicksearch = new Text(parent, SWT.SEARCH | SWT.ICON_CANCEL | |
| SWT.ICON_SEARCH); | |
quicksearch.setSize(500, 0); | |
quicksearch.setEnabled(activeEditorPart instanceof ISpecificationEditor); | |
quicksearch.addModifyListener(new ModifyListener() { | |
public void modifyText(ModifyEvent e) { | |
if (activeEditorPart instanceof ISpecificationEditor) { | |
quicksearch.setEnabled(true); | |
ISpecificationEditor specEditor = (ISpecificationEditor) activeEditor; | |
final String text = quicksearch.getText(); | |
if (text == null || "".equals(text)) { | |
specEditor.setFilter(null); | |
} else { | |
ReqifFilter filter = new SimpleStringFilter(text); | |
specEditor.setFilter(filter); | |
} | |
} else { | |
quicksearch.setEnabled(false); | |
} | |
} | |
}); | |
return quicksearch; | |
} | |
/** | |
* This adds to the menu bar a menu and some separators for editor additions, | |
* as well as the sub-menus for object creation items. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
@Override | |
public void contributeToMenu(IMenuManager menuManager) { | |
super.contributeToMenu(menuManager); | |
IMenuManager submenuManager = new MenuManager(Reqif10EditorPlugin.INSTANCE.getString("_UI_Reqif10Editor_menu"), "org.eclipse.rmf.reqif10MenuID"); | |
menuManager.insertAfter("additions", submenuManager); | |
submenuManager.add(new Separator("settings")); | |
submenuManager.add(new Separator("actions")); | |
submenuManager.add(new Separator("additions")); | |
submenuManager.add(new Separator("additions-end")); | |
// Prepare for CreateChild item addition or removal. | |
// | |
createChildMenuManager = new MenuManager(Reqif10EditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); | |
submenuManager.insertBefore("additions", createChildMenuManager); | |
// Prepare for CreateSibling item addition or removal. | |
// | |
createSiblingMenuManager = new MenuManager(Reqif10EditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); | |
submenuManager.insertBefore("additions", createSiblingMenuManager); | |
// Force an update because Eclipse hides empty menus now. | |
// | |
submenuManager.addMenuListener | |
(new IMenuListener() { | |
public void menuAboutToShow(IMenuManager menuManager) { | |
menuManager.updateAll(true); | |
} | |
}); | |
addGlobalActions(submenuManager); | |
} | |
/** | |
* When the active editor changes, this remembers the change and registers with it as a selection provider. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
@Override | |
public void setActiveEditor(IEditorPart part) { | |
super.setActiveEditor(part); | |
activeEditorPart = part; | |
// Clear Quicksearch on switching editor. We trigger a notification to clear the Filter.s | |
if (quicksearch != null && ! quicksearch.isDisposed()) { | |
quicksearch.setText(""); | |
} | |
// Switch to the new selection provider. | |
// | |
if (selectionProvider != null) { | |
selectionProvider.removeSelectionChangedListener(this); | |
} | |
if (part == null) { | |
selectionProvider = null; | |
} | |
else { | |
selectionProvider = part.getSite().getSelectionProvider(); | |
selectionProvider.addSelectionChangedListener(this); | |
// Fake a selection changed event to update the menus. | |
// | |
if (selectionProvider.getSelection() != null) { | |
selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); | |
} | |
} | |
} | |
/** | |
* This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, | |
* handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings | |
* that can be added to the selected object and updating the menus accordingly. | |
* <!-- begin-user-doc --> | |
* Added selection management for the linking process | |
* <!-- end-user-doc --> | |
* @generated NOT | |
*/ | |
public void selectionChanged(SelectionChangedEvent event) { | |
// Remove any menu items for old selection. | |
// | |
if (createChildMenuManager != null) { | |
depopulateManager(createChildMenuManager, createChildActions); | |
} | |
if (createSiblingMenuManager != null) { | |
depopulateManager(createSiblingMenuManager, createSiblingActions); | |
} | |
// Query the new selection for appropriate new child/sibling descriptors | |
// | |
Collection<?> newChildDescriptors = null; | |
Collection<?> newSiblingDescriptors = null; | |
ISelection selection = event.getSelection(); | |
if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { | |
Object object = ((IStructuredSelection)selection).getFirstElement(); | |
EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); | |
newChildDescriptors = domain.getNewChildDescriptors(object, null); | |
newSiblingDescriptors = domain.getNewChildDescriptors(null, object); | |
} | |
// Generate actions for selection; populate and redraw the menus. | |
// | |
createChildActions = generateCreateChildActions(newChildDescriptors, selection); | |
createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); | |
if (createChildMenuManager != null) { | |
populateManager(createChildMenuManager, createChildActions, null); | |
createChildMenuManager.update(true); | |
} | |
if (createSiblingMenuManager != null) { | |
populateManager(createSiblingMenuManager, createSiblingActions, null); | |
createSiblingMenuManager.update(true); | |
} | |
// Stores the selection that is needed for link management. | |
saveLinkingSelection(selection); | |
} | |
/** | |
* Updates linkSelection by extracting all directly or indirectly contained | |
* {@link SpecObject}s. | |
*/ | |
private void saveLinkingSelection(ISelection selection) { | |
linkSelection.clear(); | |
if (selection instanceof IStructuredSelection) { | |
Iterator<?> iterator = ((IStructuredSelection)selection).iterator(); | |
while (iterator.hasNext()) { | |
Object obj = iterator.next(); | |
if (obj instanceof SpecObject) linkSelection.add((SpecObject) obj); | |
if (obj instanceof SpecHierarchy) { | |
SpecObject specObject = ((SpecHierarchy)obj).getObject(); | |
if (obj != null) linkSelection.add(specObject); | |
} | |
} | |
} | |
} | |
/** | |
* This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, | |
* and returns the collection of these actions. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { | |
Collection<IAction> actions = new ArrayList<IAction>(); | |
if (descriptors != null) { | |
for (Object descriptor : descriptors) { | |
actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); | |
} | |
} | |
return actions; | |
} | |
/** | |
* This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, | |
* and returns the collection of these actions. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { | |
Collection<IAction> actions = new ArrayList<IAction>(); | |
if (descriptors != null) { | |
for (Object descriptor : descriptors) { | |
actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); | |
} | |
} | |
return actions; | |
} | |
/** | |
* This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s | |
* based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, | |
* by inserting them before the specified contribution item <code>contributionID</code>. | |
* If <code>contributionID</code> is <code>null</code>, they are simply added. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { | |
if (actions != null) { | |
for (IAction action : actions) { | |
if (contributionID != null) { | |
manager.insertBefore(contributionID, action); | |
} | |
else { | |
manager.add(action); | |
} | |
} | |
} | |
} | |
/** | |
* This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s | |
* based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { | |
if (actions != null) { | |
IContributionItem[] items = manager.getItems(); | |
for (int i = 0; i < items.length; i++) { | |
// Look into SubContributionItems | |
// | |
IContributionItem contributionItem = items[i]; | |
while (contributionItem instanceof SubContributionItem) { | |
contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); | |
} | |
// Delete the ActionContributionItems with matching action. | |
// | |
if (contributionItem instanceof ActionContributionItem) { | |
IAction action = ((ActionContributionItem)contributionItem).getAction(); | |
if (actions.contains(action)) { | |
manager.remove(contributionItem); | |
} | |
} | |
} | |
} | |
} | |
/** | |
* This populates the pop-up menu before it appears. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated NOT | |
*/ | |
@Override | |
public void menuAboutToShow(IMenuManager menuManager) { | |
// This taken and modified from super.menuAboutToShow(menuManager); | |
menuManager.add(new Separator("additions")); | |
menuManager.add(new Separator("edit")); | |
menuManager.add(new ActionContributionItem(deleteAction)); | |
menuManager.add(new Separator("additions-end")); | |
addGlobalActions(menuManager); | |
MenuManager submenuManager = null; | |
submenuManager = new MenuManager(Reqif10EditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); | |
populateManager(submenuManager, createChildActions, null); | |
menuManager.insertBefore("edit", submenuManager); | |
submenuManager = new MenuManager(Reqif10EditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); | |
populateManager(submenuManager, createSiblingActions, null); | |
menuManager.insertBefore("edit", submenuManager); | |
// New Code for Link Management | |
buildLinkMenuEntries(menuManager); | |
} | |
/** | |
* Extends the context menu for link management. It is only active if the | |
* current selection contains at least one {@link SpecObject} or one | |
* {@link SpecHierarchy}.<p> | |
* | |
* There is always an action "Initiate Linking" which saves the current selection as a starting point.<p> | |
* | |
* If a selection has been initiated, there are two additional entries "link to" and "link from" that complete the link | |
* process with the previously initiated selection. | |
* | |
* @param menuManager | |
*/ | |
private void buildLinkMenuEntries(IMenuManager menuManager) { | |
if (linkSelection.isEmpty()) return; | |
MenuManager submenuManager; | |
menuManager.insertAfter("edit", new Separator()); | |
ImageDescriptor toIcon = ExtendedImageRegistry.INSTANCE.getImageDescriptor(Reqif10EditorPlugin.INSTANCE.getImage( | |
"full/obj16/SpecRelationTo.png")); | |
ImageDescriptor fromIcon = ExtendedImageRegistry.INSTANCE.getImageDescriptor(Reqif10EditorPlugin.INSTANCE.getImage( | |
"full/obj16/SpecRelationFrom.png")); | |
if (!linkSource.isEmpty()) { | |
submenuManager = new MenuManager( | |
Reqif10EditorPlugin.INSTANCE | |
.getString("_Action_Complete_Linking_From", new String[] { linkSource.size() + "" }), | |
fromIcon, "_Action_Complete_Linking_From"); | |
populateLinkMenu(submenuManager, linkSelection, linkSource); | |
menuManager.insertAfter("edit", submenuManager); | |
submenuManager = new MenuManager( | |
Reqif10EditorPlugin.INSTANCE | |
.getString("_Action_Complete_Linking_To", new String[] { linkSource.size() + "" }), | |
toIcon, "_Action_Complete_Linking_To"); | |
populateLinkMenu(submenuManager, linkSource, linkSelection); | |
menuManager.insertAfter("edit", submenuManager); | |
} | |
IAction action = new Action( | |
Reqif10EditorPlugin.INSTANCE | |
.getString("_Action_Initiate_Linking", new String[] { linkSelection.size() + "" })) { | |
@Override | |
public void run() { | |
linkSource.clear(); | |
linkSource.addAll(linkSelection); | |
} | |
}; | |
menuManager.insertAfter("edit", action); | |
} | |
private void populateLinkMenu(IContributionManager manager, List<SpecObject> source, List<SpecObject> target) { | |
final EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); | |
ReqIFContent coreContent = ReqIF10Util.getReqIF(linkSource.get(0)).getCoreContent(); | |
manager.add(createLinkCommand(source, target, domain, | |
coreContent, null)); | |
for (SpecType type : coreContent.getSpecTypes()) { | |
if (type instanceof SpecRelationType) { | |
manager.add(createLinkCommand(source, target, domain, | |
coreContent, (SpecRelationType) type)); | |
} | |
} | |
} | |
/** | |
* Builds a command that creates the links between source and target, using type. | |
*/ | |
private IAction createLinkCommand(List<SpecObject> source, | |
List<SpecObject> target, final EditingDomain domain, | |
ReqIFContent coreContent, SpecRelationType type) { | |
String label; | |
if (type == null) { | |
label = Reqif10EditorPlugin.INSTANCE | |
.getString("_Action_SpecRelation_Untyped"); | |
} else { | |
String typeName = type.getLongName(); | |
if (typeName == null) | |
typeName = type.getIdentifier(); | |
label = Reqif10EditorPlugin.INSTANCE | |
.getString("_Action_SpecRelation_Typed", new String[] { typeName }); | |
} | |
final CompoundCommand cmd = new CompoundCommand(label); | |
for (SpecObject sourceObject : source) { | |
for (SpecObject targetObject : target) { | |
SpecRelation specRelation = ReqIF10Factory.eINSTANCE.createSpecRelation(); | |
specRelation.setSource(sourceObject); | |
specRelation.setTarget(targetObject); | |
specRelation.setType(type); | |
cmd.append(AddCommand.create(domain, coreContent, | |
ReqIF10Package.Literals.REQ_IF_CONTENT__SPEC_RELATIONS, | |
specRelation)); | |
} | |
} | |
return new Action(label) { | |
@Override | |
public void run() { | |
domain.getCommandStack().execute(cmd); | |
} | |
}; | |
} | |
/** | |
* This inserts global actions before the "additions-end" separator. | |
* <!-- begin-user-doc --> | |
* We don't want Refresh and Properties View - redundant in our application | |
* <!-- end-user-doc --> | |
* @generated NOT | |
*/ | |
@Override | |
protected void addGlobalActions(IMenuManager menuManager) { | |
menuManager.insertAfter("additions-end", new Separator("ui-actions")); | |
super.addGlobalActions(menuManager); | |
} | |
/** | |
* This ensures that a delete action will clean up all references to deleted objects. | |
* <!-- begin-user-doc --> | |
* <!-- end-user-doc --> | |
* @generated | |
*/ | |
@Override | |
protected boolean removeAllReferencesOnDelete() { | |
return true; | |
} | |
public AgileCellEditorActionHandler getAgileCellEditorActionHandler() { | |
return agileCellEditorActionHandler; | |
} | |
} |