blob: 657a202a2eefbfcdfdc8b64ee1899ab72ac007b7 [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.IGraphicalEditPart;
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.NotationPackage;
import org.eclipse.gmf.runtime.notation.TextAlignment;
import org.eclipse.gmf.runtime.notation.TextStyle;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.ui.IWorkbenchPage;
/**
* The action for text alignment.
*
* @author Anthony Hunter
*/
public class TextAlignmentAction extends PropertyChangeAction {
/**
* The text alignment property value.
*/
private TextAlignment textAlignment;
/**
* Constructor for a TextAlignmentAction.
*
* @param workbenchPage
* the workbench page.
* @param textAlignment
* the text alignment type.
*/
protected TextAlignmentAction(IWorkbenchPage workbenchPage,
TextAlignment textAlignment) {
super(
workbenchPage,
Properties.ID_TEXT_ALIGNMENT,
DiagramUIActionsMessages.TextAlignmentAction_ChangePropertyValueRequest_label);
this.textAlignment = textAlignment;
}
/**
* Creates the left text alignment action.
*
* @param workbenchPage
* the workbench page.
* @return the left text alignment action.
*/
public static TextAlignmentAction createTextAlignmentLeftAction(
IWorkbenchPage workbenchPage) {
TextAlignmentAction action = new TextAlignmentAction(workbenchPage,
TextAlignment.LEFT_LITERAL);
action.setId(ActionIds.ACTION_TEXT_ALIGNMENT_LEFT);
action.setText(DiagramUIActionsMessages.TextAlignmentAction_left);
action
.setToolTipText(DiagramUIActionsMessages.TextAlignmentAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_LEFT);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_LEFT_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_LEFT);
return action;
}
/**
* Creates the center text alignment action.
*
* @param workbenchPage
* the workbench page.
* @return the center text alignment action.
*/
public static TextAlignmentAction createTextAlignmentCenterAction(
IWorkbenchPage workbenchPage) {
TextAlignmentAction action = new TextAlignmentAction(workbenchPage,
TextAlignment.CENTER_LITERAL);
action.setId(ActionIds.ACTION_TEXT_ALIGNMENT_CENTER);
action.setText(DiagramUIActionsMessages.TextAlignmentAction_center);
action
.setToolTipText(DiagramUIActionsMessages.TextAlignmentAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_CENTER);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_CENTER_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_CENTER);
return action;
}
/**
* Creates the right text alignment action.
*
* @param workbenchPage
* the workbench page.
* @return the right text alignment action.
*/
public static TextAlignmentAction createTextAlignmentRightAction(
IWorkbenchPage workbenchPage) {
TextAlignmentAction action = new TextAlignmentAction(workbenchPage,
TextAlignment.RIGHT_LITERAL);
action.setId(ActionIds.ACTION_TEXT_ALIGNMENT_RIGHT);
action.setText(DiagramUIActionsMessages.TextAlignmentAction_right);
action
.setToolTipText(DiagramUIActionsMessages.TextAlignmentAction_ChangePropertyValueRequest_label);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_RIGHT);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_RIGHT_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_TEXT_ALIGNMENT_RIGHT);
return action;
}
/*
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#calculateEnabled()
*/
protected boolean calculateEnabled() {
if (getId() == ActionIds.ACTION_TEXT_ALIGNMENT_LEFT
|| getId() == ActionIds.ACTION_TEXT_ALIGNMENT_CENTER
|| getId() == ActionIds.ACTION_TEXT_ALIGNMENT_RIGHT) {
for (ListIterator<?> li = getSelectedObjects().listIterator(); li
.hasNext();) {
Object object = li.next();
if (!(object instanceof IGraphicalEditPart)) {
return false;
}
IGraphicalEditPart node = (IGraphicalEditPart) object;
if (node.getModel() != null) {
View view = (View) node.getModel();
TextStyle style = (TextStyle) view
.getStyle(NotationPackage.Literals.TEXT_STYLE);
if (style == null) {
return false;
}
}
}
}
return super.calculateEnabled();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gmf.runtime.diagram.ui.actions.internal.PropertyChangeAction#getNewPropertyValue()
*/
protected Object getNewPropertyValue() {
return textAlignment;
}
}