blob: fa309ec627f2b1507e9b29c4f4fd5316220c3162 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2004, 2007 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;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.Request;
import org.eclipse.gef.requests.GroupRequest;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.INotableEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.NoteEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.NoteAttachmentEditPart;
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TextEditPart;
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
import org.eclipse.gmf.runtime.diagram.ui.type.DiagramNotationType;
import org.eclipse.gmf.runtime.emf.ui.services.modelingassistant.ModelingAssistantService;
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
import org.eclipse.gmf.tests.runtime.diagram.ui.util.ITestCommandCallback;
import org.eclipse.gmf.tests.runtime.diagram.ui.util.PresentationTestFixture;
/**
* Tests functionality relating to notes, note attachments, and text shapes.
*
* @author cmahoney
*/
public class NoteTests
extends AbstractTestBase {
public NoteTests(String name) {
super(name);
}
public static void main(String[] args) {
TestRunner.run(suite());
}
public static Test suite() {
return new TestSuite(NoteTests.class);
}
protected void setTestFixture() {
testFixture = new PresentationTestFixture();
}
protected PresentationTestFixture getFixture() {
return (PresentationTestFixture) testFixture;
}
/**
* Tests notes and note attachments.
*/
public void testNotesAndNoteAttachments()
throws Exception {
final DiagramEditPart diagramEP = getFixture().getDiagramEditPart();
assertTrue(diagramEP.getChildren().isEmpty());
// Add two notes.
NoteEditPart note1EP = (NoteEditPart) getFixture()
.createShapeUsingTool(DiagramNotationType.NOTE,
new Point(10, 10));
NoteEditPart note2EP = (NoteEditPart) getFixture()
.createShapeUsingTool(DiagramNotationType.NOTE,
new Point(100, 100));
// Create note attachment between the two notes.
NoteAttachmentEditPart noteAttachment1EP = (NoteAttachmentEditPart) getFixture()
.createConnectorUsingTool(note1EP, note2EP,
DiagramNotationType.NOTE_ATTACHMENT);
// Create a note attachment between a note and a connector.
getFixture().createConnectorUsingTool(note1EP, noteAttachment1EP,
DiagramNotationType.NOTE_ATTACHMENT);
// Test delete views.
Request request = new GroupRequest(RequestConstants.REQ_DELETE);
noteAttachment1EP.getCommand(request).execute();
note1EP.getCommand(request).execute();
note2EP.getCommand(request).execute();
assertTrue(diagramEP.getChildren().isEmpty());
}
/**
* Tests text shape.
*/
public void testTextShape()
throws Exception {
final DiagramEditPart diagramEP = getFixture().getDiagramEditPart();
assertTrue(diagramEP.getChildren().isEmpty());
// Add a text shape.
TextEditPart textEP = (TextEditPart) getFixture().createShapeUsingTool(
DiagramNotationType.TEXT, new Point(10, 10));
testCommand(textEP.getCommand(new GroupRequest(
RequestConstants.REQ_DELETE)), new ITestCommandCallback() {
public void onCommandExecution() {
assertTrue(diagramEP.getChildren().isEmpty());
}
});
}
/**
* Test that note attachment type will only show up on connector handles
* between notes and <code>INoteableEditParts</code> that support note
* attachments.
*
* @throws Exception
*/
public void testConnectionHandleForNoteAttachment()
throws Exception {
NoteEditPart noteEP = (NoteEditPart) getFixture().createShapeUsingTool(
DiagramNotationType.NOTE, new Point(10, 10));
class NonAttachableNoteableEP
extends ShapeNodeEditPart
implements INotableEditPart {
public NonAttachableNoteableEP() {
super(null);
}
public boolean canAttachNote() {
return false;
}
protected NodeFigure createNodeFigure() {
return null;
}
}
class AttachableNoteableEP
extends ShapeNodeEditPart
implements INotableEditPart {
public AttachableNoteableEP() {
super(null);
}
public boolean canAttachNote() {
return true;
}
protected NodeFigure createNodeFigure() {
return null;
}
}
ShapeNodeEditPart attachableNoteableEP = new AttachableNoteableEP();
ShapeNodeEditPart nonAttachableNoteableEP = new NonAttachableNoteableEP();
ModelingAssistantService service = ModelingAssistantService
.getInstance();
assertTrue(service.getRelTypesOnSource(noteEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
assertTrue(service.getRelTypesOnSource(attachableNoteableEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
assertFalse(service.getRelTypesOnSource(nonAttachableNoteableEP)
.contains(DiagramNotationType.NOTE_ATTACHMENT));
assertTrue(service.getRelTypesOnTarget(noteEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
assertTrue(service.getRelTypesOnTarget(attachableNoteableEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
assertFalse(service.getRelTypesOnTarget(nonAttachableNoteableEP)
.contains(DiagramNotationType.NOTE_ATTACHMENT));
assertTrue(service.getRelTypesOnSourceAndTarget(noteEP,
attachableNoteableEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
assertFalse(service.getRelTypesOnSourceAndTarget(noteEP,
nonAttachableNoteableEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
assertTrue(service.getRelTypesOnSourceAndTarget(attachableNoteableEP,
noteEP).contains(DiagramNotationType.NOTE_ATTACHMENT));
assertFalse(service.getRelTypesOnSourceAndTarget(
nonAttachableNoteableEP, noteEP).contains(
DiagramNotationType.NOTE_ATTACHMENT));
}
}