ASSIGNED - bug 351226: Improve editor behavior on file delete/rename
https://bugs.eclipse.org/bugs/show_bug.cgi?id=351226
diff --git a/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java b/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java
index 77b8dfd..d191348 100644
--- a/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java
+++ b/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java
@@ -23,6 +23,8 @@
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable.syncExec;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.notNullValue;
import java.util.ArrayList;
import java.util.Collection;
@@ -31,8 +33,12 @@
import java.util.List;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.draw2d.Ellipse;
import org.eclipse.draw2d.IFigure;
@@ -197,7 +203,8 @@
IExtensionManager extensionManager = GraphitiUi.getExtensionManager();
assertNotNull("extension manager not available", extensionManager);
- String[] diagramTypeProviders = extensionManager.getDiagramTypeProviderIds(ITestConstants.DIAGRAM_TYPE_ID_SKETCH);
+ String[] diagramTypeProviders = extensionManager
+ .getDiagramTypeProviderIds(ITestConstants.DIAGRAM_TYPE_ID_SKETCH);
assertTrue("diagram type provider not available", diagramTypeProviders.length > 0);
IDiagramTypeProvider dtp = extensionManager.createDiagramTypeProvider(diagramTypeProviders[0]);
@@ -225,7 +232,8 @@
@Override
protected void doExecute() {
- addClassesAndReferenceToDiagram(fp, currentDiagram, 100, 100, "Connection", 700, 200, "ConnectionDecorator");
+ addClassesAndReferenceToDiagram(fp, currentDiagram, 100, 100, "Connection", 700, 200,
+ "ConnectionDecorator");
}
});
@@ -315,7 +323,7 @@
@Override
public void run() {
- // Get the figure to check the tooltip via SWTBot
+ // Get the figure to check the tooltip via SWTBot
SWTBotGefEditor ed = getGefEditor();
SWTBotGefEditPart editPart = ed.getEditPart("Shape");
IFigure figure = ((GraphicalEditPart) editPart.part()).getFigure();
@@ -371,7 +379,7 @@
final IDiagramTypeProvider diagramTypeProvider = diagramEditor.getDiagramTypeProvider();
final Diagram currentDiagram = diagramTypeProvider.getDiagram();
- // Get the figure to check the tooltip via SWTBot
+ // Get the figure to check the tooltip via SWTBot
SWTBotGefEditor ed = getGefEditor();
SWTBotGefEditPart editPart = ed.getEditPart("Changed");
IFigure figure = ((GraphicalEditPart) editPart.part()).getFigure();
@@ -429,7 +437,7 @@
@Override
public void run() {
- // Get the figure to check the tooltip via SWTBot
+ // Get the figure to check the tooltip via SWTBot
SWTBotGefEditor ed = getGefEditor();
SWTBotGefEditPart editPart = ed.getEditPart("");
IFigure figure = ((GraphicalEditPart) editPart.part()).getFigure();
@@ -544,8 +552,8 @@
for (ICreateFeature createFeature : createFeatures) {
Rectangle rectangle = new Rectangle(x, 50, 100, 100);
ICreateContext createContext = createCreateContext(dtp.getDiagram(), rectangle);
- Command createCommand = new CreateModelObjectCommand(diagramEditor.getConfigurationProvider(), createFeature,
- createContext, rectangle);
+ Command createCommand = new CreateModelObjectCommand(diagramEditor.getConfigurationProvider(),
+ createFeature, createContext, rectangle);
commandStack.execute(createCommand);
x += 150;
}
@@ -657,7 +665,8 @@
// test debug feature
Diagram diagram = dtp.getDiagram();
int debugTypes[] = new int[] { DebugFeature.TYPE_DUMP_ALL, DebugFeature.TYPE_DUMP_EDIT_PART_DATA,
- DebugFeature.TYPE_DUMP_FIGURE_DATA, DebugFeature.TYPE_DUMP_PICTOGRAM_DATA, DebugFeature.TYPE_REFRESH };
+ DebugFeature.TYPE_DUMP_FIGURE_DATA, DebugFeature.TYPE_DUMP_PICTOGRAM_DATA,
+ DebugFeature.TYPE_REFRESH };
ICustomContext customContext = new CustomContext(new PictogramElement[] { diagram });
for (int i = 0; i < debugTypes.length; i++) {
DebugFeature debugFeature = new DebugFeature(fp, debugTypes[i]);
@@ -673,8 +682,8 @@
for (ICreateFeature createFeature : createFeatures) {
Rectangle rectangle = new Rectangle(x, 50, 100, 100);
ICreateContext createContext = createCreateContext(dtp.getDiagram(), rectangle);
- Command createCommand = new CreateModelObjectCommand(diagramEditor.getConfigurationProvider(), createFeature,
- createContext, rectangle);
+ Command createCommand = new CreateModelObjectCommand(diagramEditor.getConfigurationProvider(),
+ createFeature, createContext, rectangle);
commandStack.execute(createCommand);
x -= 150;
}
@@ -705,7 +714,8 @@
GraphitiUiInternal.getGefService().getLayoutConstraint(child);
GraphitiUiInternal.getGefService().selectEditPart(viewer, modelElement);
GraphitiUiInternal.getGefService().selectEditPart(viewer, null);
- assertTrue((new Point(0, 0)).equals(GraphitiUiInternal.getGefService().calculateTranslation(child, child)));
+ assertTrue((new Point(0, 0)).equals(GraphitiUiInternal.getGefService().calculateTranslation(child,
+ child)));
if (tmp != null) {
GraphitiUiInternal.getGefService().calculateTranslation(child, tmp);
}
@@ -883,7 +893,8 @@
Anchor anchor1 = getPeService().createFixPointAnchor(cs1);
Anchor anchor2 = getPeService().createFixPointAnchor(cs2);
FreeFormConnection freeFormConnection = getPeService().createFreeFormConnection(diagram);
- ConnectionDecorator connectionDecorator = getPeService().createConnectionDecorator(freeFormConnection, true, 0.5, true);
+ ConnectionDecorator connectionDecorator = getPeService().createConnectionDecorator(freeFormConnection,
+ true, 0.5, true);
EObject[] ro = new EObject[] { c1, c2, c3, c4 };
Object[] linkedPictogramElements = getPeService().getLinkedPictogramElements(ro, diagram);
@@ -912,7 +923,8 @@
LookManager.setDynamicLook(false);
GraphitiUiInternal.getTraceService().dumpPictogramModelTree(diagram);
- org.eclipse.graphiti.mm.algorithms.Rectangle rectangle = Graphiti.getGaCreateService().createRectangle(diagram);
+ org.eclipse.graphiti.mm.algorithms.Rectangle rectangle = Graphiti.getGaCreateService().createRectangle(
+ diagram);
Graphiti.getGaCreateService().createDefaultText(diagram, rectangle);
GraphitiUiInternal.getTraceService().dumpGATree(rectangle);
Ellipse ellipse = new Ellipse();
@@ -1121,6 +1133,47 @@
}
@Test
+ public void testMoveFileWhileDiagramIsOpen() throws Exception {
+ // Create initial diagram file
+ IFile diagFile = createPersistentDiagram();
+ assertTrue(diagFile.exists());
+ int editorCount = openDiagramEditorFromFile(diagFile);
+ assertEquals("One editor must have opened for " + diagFile, 1, editorCount);
+
+ // Create target folder.
+ IProject project = diagFile.getProject();
+ final String folderName = "testmove";
+ IFolder folder = project.getFolder(folderName);
+ folder.create(true, true, new NullProgressMonitor());
+ assertTrue(folder.exists());
+
+ // Move file.
+ IPath destination = folder.getFullPath().append(diagFile.getName());
+ diagFile.move(destination, true, new NullProgressMonitor());
+ project.refreshLocal(IProject.DEPTH_INFINITE, new NullProgressMonitor());
+ IFile file = project.getFolder(folderName).getFile(diagFile.getName());
+ assertThat(file, notNullValue());
+
+ // Check if editor still there.
+ syncExec(new VoidResult() {
+ @Override
+ public void run() {
+ assertEquals("Editor should still be there.", getWorkbenchPage().getEditorReferences().length, 1);
+ }
+ });
+
+ // No new editor should open.
+ openDiagramEditorFromFile(file);
+ syncExec(new VoidResult() {
+ @Override
+ public void run() {
+ assertEquals("No new editor should be opened.", getWorkbenchPage().getEditorReferences().length, 1);
+ }
+ });
+
+ }
+
+ @Test
public void testOpenDiagramFromFile() throws Exception {
int editorCount = 0;
closeAllEditors();
@@ -1214,7 +1267,7 @@
return syncExec(new IntResult() {
@Override
public Integer run() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ IWorkbenchPage page = getWorkbenchPage();
try {
IEditorPart ed = IDE.openEditor(page, diagFile, DiagramEditor.DIAGRAM_EDITOR_ID);
assertTrue("Editor must be a diagram editor: " + ed, ed instanceof DiagramEditor);
@@ -1233,10 +1286,10 @@
return syncExec(new IntResult() {
@Override
public Integer run() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ IWorkbenchPage page = getWorkbenchPage();
try {
- IEditorInput input = DiagramEditorInput.createEditorInput(diagram, domain, GraphitiUi.getExtensionManager()
- .getDiagramTypeProviderId(diagram.getDiagramTypeId()), false);
+ IEditorInput input = DiagramEditorInput.createEditorInput(diagram, domain, GraphitiUi
+ .getExtensionManager().getDiagramTypeProviderId(diagram.getDiagramTypeId()), false);
IEditorPart ed = IDE.openEditor(page, input, DiagramEditor.DIAGRAM_EDITOR_ID);
assertTrue("Editor must be a diagram editor: " + ed, ed instanceof DiagramEditor);
} catch (PartInitException e) {
@@ -1247,4 +1300,9 @@
});
}
+ private IWorkbenchPage getWorkbenchPage() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ return page;
+ }
+
}