blob: 133166bfc5dcf51fb1b56fe9e3c12cdf55012980 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2008 IBM Corporation 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
*
* Contributors:
* IBM Corporation - initial API and implementation
****************************************************************************/
package org.eclipse.gmf.runtime.diagram.ui.actions.internal;
import java.util.ListIterator;
import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsMessages;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsPluginImages;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
import org.eclipse.gmf.runtime.diagram.ui.internal.actions.PropertyChangeAction;
import org.eclipse.gmf.runtime.diagram.ui.internal.properties.Properties;
import org.eclipse.gmf.runtime.notation.LineStyle;
import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.ui.IWorkbenchPage;
/**
* The action for line width.
*
* @author Anthony Hunter
*/
public class LineWidthAction extends PropertyChangeAction {
/**
* The line width property value.
*/
private int lineWidth;
/**
* Constructor for a LineWidthAction.
*
* @param workbenchPage
* the workbench page.
* @param lineWidth
* the line width.
*/
protected LineWidthAction(IWorkbenchPage workbenchPage, int lineWidth) {
super(
workbenchPage,
Properties.ID_LINE_WIDTH,
DiagramUIActionsMessages.LineWidthAction_ChangePropertyValueRequest_label);
this.lineWidth = lineWidth;
}
/**
* Creates the line width of one point action.
*
* @param workbenchPage
* the workbench page.
* @return the line width of one point action.
*/
public static LineWidthAction createLineWidthOneAction(
IWorkbenchPage workbenchPage) {
LineWidthAction action = new LineWidthAction(workbenchPage, 1);
action.setId(ActionIds.ACTION_LINE_WIDTH_ONE);
action.setText(DiagramUIActionsMessages.LineWidthAction_one);
action
.setToolTipText(DiagramUIActionsMessages.LineWidthAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_ONE);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_ONE_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_ONE);
return action;
}
/**
* Creates the line width of two points action.
*
* @param workbenchPage
* the workbench page.
* @return the line width of two points action.
*/
public static LineWidthAction createLineWidthTwoAction(
IWorkbenchPage workbenchPage) {
LineWidthAction action = new LineWidthAction(workbenchPage, 2);
action.setId(ActionIds.ACTION_LINE_WIDTH_TWO);
action.setText(DiagramUIActionsMessages.LineWidthAction_two);
action
.setToolTipText(DiagramUIActionsMessages.LineWidthAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_TWO);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_TWO_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_TWO);
return action;
}
/**
* Creates the line width of three points action.
*
* @param workbenchPage
* the workbench page.
* @return the line width of three points action.
*/
public static LineWidthAction createLineWidthThreeAction(
IWorkbenchPage workbenchPage) {
LineWidthAction action = new LineWidthAction(workbenchPage, 3);
action.setId(ActionIds.ACTION_LINE_WIDTH_THREE);
action.setText(DiagramUIActionsMessages.LineWidthAction_three);
action
.setToolTipText(DiagramUIActionsMessages.LineWidthAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_THREE);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_THREE_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_THREE);
return action;
}
/**
* Creates the line width of four points action.
*
* @param workbenchPage
* the workbench page.
* @return the line width of four points action.
*/
public static LineWidthAction createLineWidthFourAction(
IWorkbenchPage workbenchPage) {
LineWidthAction action = new LineWidthAction(workbenchPage, 4);
action.setId(ActionIds.ACTION_LINE_WIDTH_FOUR);
action.setText(DiagramUIActionsMessages.LineWidthAction_four);
action
.setToolTipText(DiagramUIActionsMessages.LineWidthAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_FOUR);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_FOUR_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_FOUR);
return action;
}
/**
* Creates the line width of five points action.
*
* @param workbenchPage
* the workbench page.
* @return the line width of five points action.
*/
public static LineWidthAction createLineWidthFiveAction(
IWorkbenchPage workbenchPage) {
LineWidthAction action = new LineWidthAction(workbenchPage, 5);
action.setId(ActionIds.ACTION_LINE_WIDTH_FIVE);
action.setText(DiagramUIActionsMessages.LineWidthAction_five);
action
.setToolTipText(DiagramUIActionsMessages.LineWidthAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_FIVE);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_FIVE_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_LINE_WIDTH_FIVE);
return action;
}
/*
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#calculateEnabled()
*/
protected boolean calculateEnabled() {
if (getId() == ActionIds.ACTION_LINE_WIDTH_ONE
|| getId() == ActionIds.ACTION_LINE_WIDTH_TWO
|| getId() == ActionIds.ACTION_LINE_WIDTH_THREE
|| getId() == ActionIds.ACTION_LINE_WIDTH_FOUR
|| getId() == ActionIds.ACTION_LINE_WIDTH_FIVE) {
for (ListIterator<?> li = getSelectedObjects().listIterator(); li
.hasNext();) {
Object object = li.next();
if (!(object instanceof ConnectionEditPart)
&& !(object instanceof ShapeNodeEditPart)) {
return false;
}
View view = ((IGraphicalEditPart) object).getPrimaryView();
if (view != null) {
LineStyle style = (LineStyle) view
.getStyle(NotationPackage.eINSTANCE.getLineStyle());
if (style == null || style.getLineWidth() == -1) {
return false;
}
}
}
}
return super.calculateEnabled();
}
/*
* @see org.eclipse.gmf.runtime.diagram.ui.actions.internal.PropertyChangeAction#getNewPropertyValue()
*/
protected Object getNewPropertyValue() {
return lineWidth;
}
}