blob: e7da1dfd6ae079e0bcc451c9508c25673e20031c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2013 Ericsson AB and others.
*
* 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
*
* Description:
*
* This class implements contribution item that provide the model commands
* to the review navigator context-sensitive menus
*
* Contributors:
* Sebastien Dubois - Created for Mylyn Review R4E project
* Jacques Bouthillier - Add contribution element for Report
*
******************************************************************************/
package org.eclipse.mylyn.reviews.r4e.ui.internal.commands;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylyn.reviews.r4e.ui.R4EUIPlugin;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewItem;
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.R4EUIConstants;
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.UIUtils;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.menus.CommandContributionItemParameter;
/**
* @author Sebastien Dubois
* @version $Revision: 1.0 $
*/
public class ModelContributionItems extends CompoundContributionItem {
/**
* Method getContributionItems.
*
* @return IContributionItem[]
*/
@Override
protected IContributionItem[] getContributionItems() {
if (null != R4EUIModelController.getNavigatorView()) {
IStructuredSelection selection = (IStructuredSelection) R4EUIModelController.getNavigatorView()
.getTreeViewer()
.getSelection();
return getContributionItemsParameters((IR4EUIModelElement) selection.getFirstElement());
}
return getContributionItemsParameters(null);
}
/**
* Method getContributionItems.
*
* @param aElement
* - IR4EUIModelElement
* @return IContributionItem[]
*/
public IContributionItem[] getContributionItems(IR4EUIModelElement aElement) {
//We use a source provider to pass in the R4E UI model element the commands would be applied to
UIUtils.clearCommandUIElements();
List<IR4EUIModelElement> uiElements = new ArrayList<IR4EUIModelElement>(1);
uiElements.add(aElement);
UIUtils.setCommandUIElements(uiElements);
//Get Command Parameters
return getContributionItemsParameters(aElement);
}
/**
* Method getContributionItemsParameters.
*
* @param aElement
* - IR4EUIModelElement
* @return IContributionItem[]
*/
private IContributionItem[] getContributionItemsParameters(IR4EUIModelElement aElement) {
final List<IContributionItem> list = new ArrayList<IContributionItem>();
CommandContributionItemParameter params = null;
if (null != aElement) {
if (aElement.isOpenElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.OPEN_ELEMENT_COMMAND, R4EUIConstants.OPEN_ELEMENT_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.OPEN_ELEMENT_ICON_FILE)), null, null,
aElement.getOpenElementCmdName(), R4EUIConstants.OPEN_ELEMENT_COMMAND_MNEMONIC,
aElement.getOpenElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isCloseElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.CLOSE_ELEMENT_COMMAND, R4EUIConstants.CLOSE_ELEMENT_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.CLOSE_ELEMENT_ICON_FILE)), null, null,
aElement.getCloseElementCmdName(), R4EUIConstants.CLOSE_ELEMENT_COMMAND_MNEMONIC,
aElement.getCloseElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (R4EUIModelController.getNavigatorView().getTreeViewer().getSelection() instanceof IStructuredSelection) {
Object[] selections = ((IStructuredSelection) R4EUIModelController.getNavigatorView()
.getTreeViewer()
.getSelection()).toArray();
if (selections.length == 2 && selections[0] instanceof R4EUIReviewItem
&& selections[1] instanceof R4EUIReviewItem && ((R4EUIReviewItem) selections[0]).isEnabled()
&& ((R4EUIReviewItem) selections[1]).isEnabled()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.COMPARE_ITEMS_COMMAND, R4EUIConstants.COMPARE_ITEMS_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.COMPARE_ITEMS_ICON_FILE)), null, null,
R4EUIConstants.COMPARE_ITEMS_COMMAND_NAME, R4EUIConstants.COMPARE_ITEMS_COMMAND_MNEMONIC,
R4EUIConstants.COMPARE_ITEMS_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null,
true);
list.add(new CommandContributionItem(params));
}
}
if (aElement.isCopyElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.COPY_ELEMENT_COMMAND, R4EUIConstants.COPY_ELEMENT_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.COPY_ELEMENT_ICON_FILE)), null, null,
aElement.getCopyElementCmdName(), R4EUIConstants.COPY_ELEMENT_COMMAND_MNEMONIC,
aElement.getCopyElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isPasteElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.PASTE_ELEMENT_COMMAND, R4EUIConstants.PASTE_ELEMENT_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.PASTE_ELEMENT_ICON_FILE)), null, null,
aElement.getPasteElementCmdName(), R4EUIConstants.PASTE_ELEMENT_COMMAND_MNEMONIC,
aElement.getPasteElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isNextStateElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.NEXT_STATE_ELEMENT_COMMAND, R4EUIConstants.NEXT_STATE_ELEMENT_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.NEXT_STATE_ELEMENT_ICON_FILE)), null, null,
aElement.getNextStateElementCmdName(), R4EUIConstants.NEXT_STATE_ELEMENT_COMMAND_MNEMONIC,
aElement.getNextStateElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isPreviousStateElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.PREVIOUS_STATE_ELEMENT_COMMAND, R4EUIConstants.PREVIOUS_STATE_ELEMENT_COMMAND,
null, ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.PREVIOUS_STATE_ELEMENT_ICON_FILE)), null, null,
aElement.getPreviousStateElementCmdName(),
R4EUIConstants.PREVIOUS_STATE_ELEMENT_COMMAND_MNEMONIC,
aElement.getPreviousStateElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isNewChildElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND, R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND, null,
PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD),
null, null, aElement.getNewChildElementCmdName(),
R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND_MNEMONIC, aElement.getNewChildElementCmdTooltip(),
CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isRemoveElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.REMOVE_ELEMENT_COMMAND, R4EUIConstants.REMOVE_ELEMENT_COMMAND, null,
PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE),
null, null, aElement.getRemoveElementCmdName(), R4EUIConstants.REMOVE_ELEMENT_COMMAND_MNEMONIC,
aElement.getRemoveElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isAddLinkedAnomalyCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.NEW_LINKED_ANOMALY_COMMAND, R4EUIConstants.NEW_LINKED_ANOMALY_COMMAND, null,
PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD),
null, null, R4EUIConstants.NEW_LINKED_ANOMALY_NAME, R4EUIConstants.NEW_LINKED_ANOMALY_MNEMONIC,
R4EUIConstants.NEW_LINKED_ANOMALY_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isOpenEditorCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.OPEN_EDITOR_COMMAND, R4EUIConstants.OPEN_EDITOR_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.OPEN_EDITOR_ICON_FILE)), null, null,
R4EUIConstants.OPEN_EDITOR_COMMAND_NAME, R4EUIConstants.OPEN_EDITOR_COMMAND_MNEMONIC,
R4EUIConstants.OPEN_EDITOR_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isChangeUserReviewStateCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.CHANGE_REVIEW_STATE_COMMAND, R4EUIConstants.CHANGE_REVIEW_STATE_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.CHANGE_REVIEW_STATE_ICON_FILE)), null, null,
aElement.isUserReviewed()
? R4EUIConstants.UNMARK_REVIEW_STATE_COMMAND_NAME
: R4EUIConstants.MARK_REVIEW_STATE_COMMAND_NAME,
R4EUIConstants.CHANGE_REVIEW_STATE_COMMAND_MNEMONIC, aElement.isUserReviewed()
? R4EUIConstants.UNMARK_REVIEW_STATE_COMMAND_TOOLTIP
: R4EUIConstants.MARK_REVIEW_STATE_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH,
null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isRestoreElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.RESTORE_ELEMENT_COMMAND, R4EUIConstants.RESTORE_ELEMENT_COMMAND, null,
PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_UNDO),
null, null, aElement.getRestoreElementCmdName(),
R4EUIConstants.RESTORE_ELEMENT_COMMAND_MNEMONIC, aElement.getRestoreElementCmdTooltip(),
CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isSendEmailCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.SEND_EMAIL_COMMAND, R4EUIConstants.SEND_EMAIL_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.SEND_EMAIL_ICON_FILE)), null, null,
R4EUIConstants.SEND_EMAIL_COMMAND_NAME, R4EUIConstants.SEND_EMAIL_COMMAND_MNEMONIC,
R4EUIConstants.SEND_EMAIL_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isImportPostponedCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.IMPORT_POSTPONED_COMMAND, R4EUIConstants.IMPORT_POSTPONED_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.IMPORT_POSTPONED_ICON_FILE)), null, null,
R4EUIConstants.IMPORT_POSTPONED_COMMAND_NAME, R4EUIConstants.IMPORT_POSTPONED_COMMAND_MNEMONIC,
R4EUIConstants.IMPORT_POSTPONED_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isReportElementCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.REPORT_ELEMENT_COMMAND, R4EUIConstants.REPORT_ELEMENT_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.REPORT_ELEMENT_ICON_FILE)), null, null,
aElement.getReportElementCmdName(), R4EUIConstants.REPORT_ELEMENT_COMMAND_MNEMONIC,
aElement.getReportElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isAssignToCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.ASSIGN_TO_COMMAND, R4EUIConstants.ASSIGN_TO_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.ASSIGN_TO_ICON_FILE)), null, null,
R4EUIConstants.ASSIGN_TO_COMMAND_NAME, R4EUIConstants.ASSIGN_TO_COMMAND_MNEMONIC,
R4EUIConstants.ASSIGN_TO_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (aElement.isUnassignToCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.UNASSIGN_TO_COMMAND, R4EUIConstants.UNASSIGN_TO_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.UNASSIGN_TO_ICON_FILE)), null, null,
R4EUIConstants.UNASSIGN_TO_COMMAND_NAME, R4EUIConstants.UNASSIGN_TO_COMMAND_MNEMONIC,
R4EUIConstants.UNASSIGN_TO_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (null != R4EUIModelController.getNavigatorView() && aElement.isShowPropertiesCmd()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.SHOW_PROPERTIES_COMMAND, R4EUIConstants.SHOW_PROPERTIES_COMMAND, null,
ImageDescriptor.createFromURL(R4EUIPlugin.getDefault()
.getBundle()
.getEntry(R4EUIConstants.SHOW_PROPERTIES_ICON_FILE)), null, null,
R4EUIConstants.SHOW_PROPERTIES_COMMAND_NAME, R4EUIConstants.SHOW_PROPERTIES_COMMAND_MNEMONIC,
R4EUIConstants.SHOW_PROPERTIES_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
} else {
//When no element is selected, contribute add review group command
if (R4EUIModelController.getNavigatorView().isDefaultDisplay()) {
params = new CommandContributionItemParameter(R4EUIModelController.getNavigatorView().getSite(),
R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND, R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND, null,
PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD),
null, null, R4EUIConstants.NEW_REVIEW_GROUP_COMMAND_NAME,
R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND_MNEMONIC,
R4EUIConstants.NEW_REVIEW_GROUP_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
}
return list.toArray(new IContributionItem[list.size()]);
}
}