blob: 8a6038f2558b1fa19cd05e34f13af66346f08a0f [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2008, 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.tests.runtime.diagram.ui.logic;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.TextAlignmentAction;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart;
import org.eclipse.gmf.runtime.diagram.ui.geoshapes.type.GeoshapeType;
import org.eclipse.gmf.runtime.diagram.ui.internal.properties.Properties;
import org.eclipse.gmf.runtime.diagram.ui.type.DiagramNotationType;
import org.eclipse.gmf.runtime.emf.core.util.PackageUtil;
import org.eclipse.gmf.runtime.notation.TextAlignment;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.gmf.tests.runtime.diagram.ui.AbstractTestBase;
import org.eclipse.gmf.tests.runtime.diagram.ui.util.ITestActionCallback;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
/**
* Tests for the text alignment feature.
*
* @author Anthony Hunter
*/
public class TextAlignmentTests extends AbstractTestBase {
public static Test suite() {
TestSuite s = new TestSuite(TextAlignmentTests.class);
return s;
}
public TextAlignmentTests() {
super("Group Tests");//$NON-NLS-1$
}
public class TextAlignmentTestFixture extends LogicTestFixture {
public void setup() throws Exception {
closeWelcome();
super.setup();
}
public void closeWelcome() {
IWorkbench workbench = PlatformUI.getWorkbench();
if (workbench != null) {
IWorkbenchWindow workbenchWindow = workbench
.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow
.getActivePage();
if (workbenchPage != null) {
IWorkbenchPart workbenchPart = workbenchPage
.getActivePart();
if (workbenchPart != null) {
IWorkbenchPartSite workbenchPartSite = workbenchPart
.getSite();
if (workbenchPartSite != null) {
if (workbenchPartSite.getId().equals(
"org.eclipse.ui.internal.introview")) { //$NON-NLS-1$
IViewPart welcomeView = (IViewPart) workbenchPart;
workbenchPage.hideView(welcomeView);
}
}
}
}
}
}
}
protected void createShapesAndConnectors() throws Exception {
/**
* Override so that the test creates the shapes it wants
*/
}
}
protected void setTestFixture() {
testFixture = new TextAlignmentTestFixture();
}
protected LogicTestFixture getFixture() {
return (LogicTestFixture) testFixture;
}
protected void setUp() throws Exception {
super.setUp();
}
/** the note edit part */
protected ShapeEditPart noteEditPart;
/** the square edit part */
protected ShapeEditPart squareEditPart;
/** the note shape */
protected View noteView;
/** the square shape */
protected View squareView;
/**
* Create the four shapes to be used to test grouping.
*/
protected void setupShapes() {
final String description = "Text align this text\nThe quick brown fox\njumps over\nthe lazy\ndog"; //$NON-NLS-1$
/* create a square geoshape */
squareEditPart = getFixture().createShapeUsingTool(
GeoshapeType.RECTANGLE, new Point(10, 10),
new Dimension(-1, -1), getDiagramEditPart());
squareView = (View) squareEditPart.getModel();
/* set the description (text) for the square geoshape */
testProperty(squareView, Properties.ID_DESCRIPTION, description);
/* create a note */
noteEditPart = getFixture().createShapeUsingTool(
DiagramNotationType.NOTE, new Point(200, 200),
new Dimension(-1, -1), getDiagramEditPart());
noteView = (View) noteEditPart.getModel();
/* set the description (text) for the note */
testProperty(noteView, Properties.ID_DESCRIPTION, description);
flushEventQueue();
}
public void testSetTextAlignmentCenterAction() throws Exception {
setupShapes();
getDiagramEditPart().getViewer().setSelection(
new StructuredSelection(squareEditPart));
TextAlignmentAction action = TextAlignmentAction
.createTextAlignmentCenterAction(getWorkbenchPage());
testAction(action, new ITestActionCallback() {
public void onRunExecution() {
assertEquals(
TextAlignment.CENTER_LITERAL,
squareEditPart
.getStructuralFeatureValue((EStructuralFeature) PackageUtil
.getElement(Properties.ID_TEXT_ALIGNMENT)));
}
});
getCommandStack().undo();
assertEquals(
TextAlignment.LEFT_LITERAL,
squareEditPart
.getStructuralFeatureValue((EStructuralFeature) PackageUtil
.getElement(Properties.ID_TEXT_ALIGNMENT)));
}
public void testSetTextAlignmentRightAction() throws Exception {
setupShapes();
getDiagramEditPart().getViewer().setSelection(
new StructuredSelection(noteEditPart));
TextAlignmentAction action = TextAlignmentAction
.createTextAlignmentRightAction(getWorkbenchPage());
testAction(action, new ITestActionCallback() {
public void onRunExecution() {
assertEquals(
TextAlignment.RIGHT_LITERAL,
noteEditPart
.getStructuralFeatureValue((EStructuralFeature) PackageUtil
.getElement(Properties.ID_TEXT_ALIGNMENT)));
}
});
getCommandStack().undo();
assertEquals(
TextAlignment.LEFT_LITERAL,
noteEditPart
.getStructuralFeatureValue((EStructuralFeature) PackageUtil
.getElement(Properties.ID_TEXT_ALIGNMENT)));
}
public void testSetTextAlignmentProperty() throws Exception {
setupShapes();
testProperty(squareView, Properties.ID_TEXT_ALIGNMENT,
TextAlignment.RIGHT_LITERAL);
testProperty(squareView, Properties.ID_TEXT_ALIGNMENT,
TextAlignment.CENTER_LITERAL);
testProperty(squareView, Properties.ID_TEXT_ALIGNMENT,
TextAlignment.LEFT_LITERAL);
testProperty(noteView, Properties.ID_TEXT_ALIGNMENT,
TextAlignment.RIGHT_LITERAL);
testProperty(noteView, Properties.ID_TEXT_ALIGNMENT,
TextAlignment.CENTER_LITERAL);
testProperty(noteView, Properties.ID_TEXT_ALIGNMENT,
TextAlignment.LEFT_LITERAL);
}
}