blob: cd47e1fb51a2d3878986e0ccbcce0144e18d44bf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 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.utils.R4EUIConstants;
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() {
final List<IContributionItem> list = new ArrayList<IContributionItem>();
CommandContributionItemParameter params = null;
final IR4EUIModelElement element = (IR4EUIModelElement) ((IStructuredSelection) R4EUIModelController.getNavigatorView()
.getTreeViewer()
.getSelection()).getFirstElement();
if (null != element) {
if (element.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,
element.getOpenElementCmdName(), R4EUIConstants.OPEN_ELEMENT_COMMAND_MNEMONIC,
element.getOpenElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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,
element.getCloseElementCmdName(), R4EUIConstants.CLOSE_ELEMENT_COMMAND_MNEMONIC,
element.getCloseElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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,
element.getNextStateElementCmdName(), R4EUIConstants.NEXT_STATE_ELEMENT_COMMAND_MNEMONIC,
element.getNextStateElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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,
element.getPreviousStateElementCmdName(),
R4EUIConstants.PREVIOUS_STATE_ELEMENT_COMMAND_MNEMONIC,
element.getPreviousStateElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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, element.getNewChildElementCmdName(),
R4EUIConstants.NEW_CHILD_ELEMENT_COMMAND_MNEMONIC, element.getNewChildElementCmdTooltip(),
CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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, element.getRemoveElementCmdName(), R4EUIConstants.REMOVE_ELEMENT_COMMAND_MNEMONIC,
element.getRemoveElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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 (element.isOpenEditorCmd() && R4EUIModelController.getNavigatorView().isEditorLinked()) {
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 (element.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,
element.isUserReviewed()
? R4EUIConstants.UNMARK_REVIEW_STATE_COMMAND_NAME
: R4EUIConstants.MARK_REVIEW_STATE_COMMAND_NAME,
R4EUIConstants.CHANGE_REVIEW_STATE_COMMAND_MNEMONIC, element.isUserReviewed()
? R4EUIConstants.UNMARK_REVIEW_STATE_COMMAND_TOOLTIP
: R4EUIConstants.MARK_REVIEW_STATE_COMMAND_TOOLTIP, CommandContributionItem.STYLE_PUSH,
null, true);
list.add(new CommandContributionItem(params));
}
if (element.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, element.getRestoreElementCmdName(),
R4EUIConstants.RESTORE_ELEMENT_COMMAND_MNEMONIC, element.getRestoreElementCmdTooltip(),
CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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 (element.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 (element.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,
element.getReportElementCmdName(), R4EUIConstants.REPORT_ELEMENT_COMMAND_MNEMONIC,
element.getReportElementCmdTooltip(), CommandContributionItem.STYLE_PUSH, null, true);
list.add(new CommandContributionItem(params));
}
if (element.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 (element.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 (!R4EUIModelController.getNavigatorView().isPropertiesLinked() && element.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()]);
}
}