package com.windowtester.test.gef.tests.runtime.finder;
import junit.framework.TestCase;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.editparts.AbstractEditPart;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import com.windowtester.runtime.gef.internal.finder.FigureIdentifierService;
import com.windowtester.runtime.gef.internal.finder.IGEFPartMapper;
import com.windowtester.runtime.gef.locator.NamedEditPartFigureLocator;
import com.windowtester.runtime.gef.locator.NamedFigureLocator;
import com.windowtester.runtime.locator.ILocator;
/**
* Smoke test for named figures/edit parts.
* <p>
* Copyright (c) 2008, Instantiations, Inc.<br>
* All Rights Reserved
*
* @author Phil Quitslund
*
*/
public class NamedFigureIdentificationTest extends TestCase {
//subclassed for testing purposes
private static class TestableIdService extends FigureIdentifierService {
@Override
protected ILocator findDetailLocator(IFigure figure, Event event) {
return super.findDetailLocator(figure, event);
}
@Override
protected IGEFPartMapper getPartMapper() {
return new IGEFPartMapper() {
public EditPart findEditPart(IFigure figure) {
if (figure instanceof MyFigureWithNamedPart)
return new MyPart();
return null;
}
};
}
}
private static final String FIGURE_NAME = "my.figure";
static class MyFigure extends Figure {
public String getFigureId() {
return FIGURE_NAME;
}
}
private static final String PART_NAME = "my.part";
static class MyPart extends AbstractEditPart {
@SuppressWarnings("unused")
private String getEditPartId() {
return PART_NAME;
}
@Override
protected void addChildVisual(EditPart child, int index) {
// TODO Auto-generated method stub
}
@Override
protected void createEditPolicies() {
// TODO Auto-generated method stub
}
@Override
protected void removeChildVisual(EditPart child) {
// TODO Auto-generated method stub
}
public DragTracker getDragTracker(Request request) {
// TODO Auto-generated method stub
return null;
}
}
static class MyFigureWithNamedPart extends Figure { }
public void testNamedFigure() throws Exception {
Figure namedFigure = new MyFigure();
Event e = new Event();
e.widget = new FigureCanvas(new Shell());
ILocator loc = new TestableIdService().findDetailLocator(namedFigure, e);
NamedFigureLocator locator = (NamedFigureLocator)loc;
assertEquals(FIGURE_NAME, locator.getFigureId());
}
public void testNamedEditPart() throws Exception {
Figure namedFigure = new MyFigureWithNamedPart();
Event e = new Event();
e.widget = new FigureCanvas(new Shell());
ILocator loc = new TestableIdService().findDetailLocator(namedFigure, e);
NamedEditPartFigureLocator locator = (NamedEditPartFigureLocator)loc;
assertEquals(PART_NAME, locator.getEditPartId());
}
}