blob: d0b34e946ad2a94e49e487a5db84aad3e37bf03d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.ui.tests.api;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.WorkbenchPage;
import org.eclipse.ui.internal.registry.IActionSetDescriptor;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.tests.harness.util.ArrayUtil;
import org.eclipse.ui.tests.harness.util.CallHistory;
import org.eclipse.ui.tests.harness.util.EmptyPerspective;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
public class IDeprecatedWorkbenchPageTest extends UITestCase {
private IWorkbenchPage fActivePage;
private IWorkbenchWindow fWin;
private IProject proj;
public IDeprecatedWorkbenchPageTest(String testName) {
super(testName);
}
protected void doSetUp() throws Exception {
super.doSetUp();
fWin = openTestWindow();
fActivePage = fWin.getActivePage();
}
protected void doTearDown() throws Exception {
super.doTearDown();
if (proj != null) {
FileUtil.deleteProject(proj);
proj = null;
}
}
/**
* tests both of the following: setEditorAreaVisible() isEditorAreaVisible()
*/
public void testGet_SetEditorAreaVisible() throws Throwable {
fActivePage.setEditorAreaVisible(true);
assertTrue(fActivePage.isEditorAreaVisible() == true);
fActivePage.setEditorAreaVisible(false);
assertTrue(fActivePage.isEditorAreaVisible() == false);
}
public void testGetPerspective() throws Throwable {
assertNotNull(fActivePage.getPerspective());
IWorkbenchPage page = fWin.openPage(EmptyPerspective.PERSP_ID,
getPageInput());
assertEquals(EmptyPerspective.PERSP_ID, page.getPerspective().getId());
}
public void testSetPerspective() throws Throwable {
IPerspectiveDescriptor per = PlatformUI.getWorkbench()
.getPerspectiveRegistry().findPerspectiveWithId(
EmptyPerspective.PERSP_ID);
fActivePage.setPerspective(per);
assertEquals(per, fActivePage.getPerspective());
}
public void testGetLabel() {
assertNotNull(fActivePage.getLabel());
}
public void testGetInput() throws Throwable {
IAdaptable input = getPageInput();
IWorkbenchPage page = fWin.openPage(input);
assertEquals(input, page.getInput());
}
public void testActivate() throws Throwable {
MockViewPart part = (MockViewPart) fActivePage
.showView(MockViewPart.ID);
MockViewPart part2 = (MockViewPart) fActivePage
.showView(MockViewPart.ID2);
MockPartListener listener = new MockPartListener();
fActivePage.addPartListener(listener);
fActivePage.activate(part);
CallHistory callTrace;
callTrace = part2.getCallHistory();
callTrace.clear();
fActivePage.activate(part2);
assertTrue(callTrace.contains("setFocus"));
assertTrue(listener.getCallHistory().contains("partActivated"));
callTrace = part.getCallHistory();
callTrace.clear();
fActivePage.activate(part);
assertTrue(callTrace.contains("setFocus"));
assertTrue(listener.getCallHistory().contains("partActivated"));
}
public void testBringToTop() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
IEditorPart part = IDE.openEditor(fActivePage, FileUtil.createFile(
"a.mock1", proj), true);
IEditorPart part2 = IDE.openEditor(fActivePage, FileUtil.createFile(
"b.mock1", proj), true);
MockPartListener listener = new MockPartListener();
fActivePage.addPartListener(listener);
CallHistory callTrace = listener.getCallHistory();
// at this point, part2 is active
fActivePage.bringToTop(part);
assertEquals(callTrace.contains("partBroughtToTop"), true);
callTrace.clear();
fActivePage.bringToTop(part2);
assertEquals(callTrace.contains("partBroughtToTop"), true);
}
public void testGetWorkbenchWindow() {
/*
* Commented out because until test case can be updated to work with new
* window/page/perspective implementation
*
* assertEquals(fActivePage.getWorkbenchWindow(), fWin); IWorkbenchPage
* page = openTestPage(fWin); assertEquals(page.getWorkbenchWindow(),
* fWin);
*/
}
public void testShowView() throws Throwable {
/*
* javadoc: Shows a view in this page and give it focus
*/
MockViewPart view = (MockViewPart) fActivePage
.showView(MockViewPart.ID);
assertNotNull(view);
assertTrue(view.getCallHistory().verifyOrder(
new String[] { "init", "createPartControl", "setFocus" }));
fActivePage.showView(MockViewPart.ID2);
/*
* javadoc: If the view is already visible, it is given focus
*/
CallHistory callTrace = view.getCallHistory();
callTrace.clear();
assertEquals(fActivePage.showView(MockViewPart.ID), view);
assertEquals(callTrace.contains("setFocus"), true);
}
/**
* openEditor(IFile input)
*/
public void testOpenEditor() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
/*
* javadoc: 1. The workbench editor registry is consulted to determine
* if an editor extension has been registered for the file type. If so,
* an instance of the editor extension is opened on the file
*/
IFile file = FileUtil.createFile("test.mock1", proj);
IEditorPart editor = IDE.openEditor(fActivePage, file, true);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(editor.getSite().getId(), fWorkbench.getEditorRegistry()
.getDefaultEditor(file.getName()).getId());
/*
* javadoc: 2. Next, the native operating system will be consulted to
* determine if a native editor exists for the file type. If so, a new
* process is started and the native editor is opened on the file.
*/
// can not be tested
/*
* javadoc: 3. If all else fails the file will be opened in a default
* text editor.
*/
file = FileUtil.createFile("a.null and void", proj);
editor = IDE.openEditor(fActivePage, file, true);
if (editor != null) {//Editor may be external
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor),
true);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(editor.getSite().getId(),
"org.eclipse.ui.DefaultTextEditor");
// open another editor to take the focus away from the first editor
IDE.openEditor(fActivePage,
FileUtil.createFile("test.mock2", proj), true);
/*
* javadoc: If this page already has an editor open on the target
* object that editor is activated
*/
// open the editor second time.
assertEquals(editor, IDE.openEditor(fActivePage, file, true));
assertEquals(editor, fActivePage.getActiveEditor());
}
}
/**
* openEditor(IFile input, String editorID)
*/
public void testOpenEditor2() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
final IFile file = FileUtil.createFile("asfasdasdf", proj);
final String id = MockEditorPart.ID1;
/*
* javadoc: The editor type is determined by mapping editorId to an
* editor extension registered with the workbench.
*/
IEditorPart editor = fActivePage.openEditor(new FileEditorInput(file),
id);
assertEquals(editor.getSite().getId(), id);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
// open another editor to take the focus away from the first editor
IDE.openEditor(fActivePage, FileUtil.createFile("test.mock2", proj),
true);
/*
* javadoc: If this page already has an editor open on the target object
* that editor is activated
*/
// open the first editor second time.
assertEquals(fActivePage.openEditor(new FileEditorInput(file), id),
editor);
assertEquals(fActivePage.getActiveEditor(), editor);
}
/**
* openEditor(IEditorInput input,String editorId)
*/
public void testOpenEditor3() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
final String id = MockEditorPart.ID1;
IEditorInput input = new FileEditorInput(FileUtil.createFile(
"test.mock1", proj));
/*
* javadoc: The editor type is determined by mapping editorId to an
* editor extension registered with the workbench
*/
IEditorPart editor = fActivePage.openEditor(input, id);
assertEquals(editor.getEditorInput(), input);
assertEquals(editor.getSite().getId(), id);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
// open another editor to take the focus away from the first editor
IDE.openEditor(fActivePage, FileUtil.createFile("test.mock2", proj),
true);
/*
* javadoc: If this page already has an editor open on the target object
* that editor is activated
*/
// open the first editor second time.
assertEquals(fActivePage.openEditor(input, id), editor);
assertEquals(fActivePage.getActiveEditor(), editor);
}
/**
* openEditor(IEditorInput input, String editorId, boolean activate)
*/
public void testOpenEditor4() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
final String id = MockEditorPart.ID1;
IEditorInput input = new FileEditorInput(FileUtil.createFile(
"test.mock1", proj));
MockPartListener listener = new MockPartListener();
fActivePage.addPartListener(listener);
CallHistory callTrace = listener.getCallHistory();
/*
* javadoc: The editor type is determined by mapping editorId to an
* editor extension registered with the workbench. javadoc: If activate ==
* true the editor will be activated
*/
// open an editor with activation
IEditorPart editor = fActivePage.openEditor(input, id, true);
assertEquals(editor.getEditorInput(), input);
assertEquals(editor.getSite().getId(), id);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(callTrace.contains("partActivated"), true);
// we need another editor so that the editor under test can receive
// events.
// otherwise, events will be ignored.
IEditorPart extra = IDE.openEditor(fActivePage, FileUtil.createFile(
"aaaaa", proj), true);
// close the first editor after the second has opened; necessary for
// test to work with fix to PR 7743
fActivePage.closeEditor(editor, false);
// Activate something in a different stack, or the editor will end up
// activated regardless of
// the activate flag.
fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null,
IWorkbenchPage.VIEW_ACTIVATE);
// open an editor without activation
callTrace.clear();
editor = fActivePage.openEditor(input, id, false);
assertEquals(editor.getEditorInput(), input);
assertEquals(editor.getSite().getId(), id);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(callTrace.contains("partActivated"), false);
assertEquals(callTrace.contains("partBroughtToTop"), true);
fActivePage.activate(extra);
/*
* javadoc: If this page already has an editor open on the target object
* that editor is brought to the front
*/
// Activate something in a different stack, or the editor will end up
// activated regardless of
// the activate flag.
fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null,
IWorkbenchPage.VIEW_ACTIVATE);
// open the editor under test second time without activation
callTrace.clear();
assertEquals(fActivePage.openEditor(input, id, false), editor);
assertEquals(callTrace.contains("partBroughtToTop"), true);
assertEquals(callTrace.contains("partActivated"), false);
// activate the other editor
fActivePage.activate(extra);
/*
* javadoc: If activate == true the editor will be activated
*/
// open the editor under test second time with activation
callTrace.clear();
assertEquals(fActivePage.openEditor(input, id, true), editor);
assertEquals(callTrace.contains("partBroughtToTop"), true);
assertEquals(callTrace.contains("partActivated"), true);
}
/**
* openEditor(IMarker marker)
*/
public void testOpenEditor5() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
IMarker marker = FileUtil.createFile("aa.mock2", proj).createMarker(
IMarker.TASK);
CallHistory callTrace;
/*
* javadoc: the cursor and selection state of the editor is then updated
* from information recorded in the marker.
*/
// open the registered editor for the marker resource
IEditorPart editor = IDE.openEditor(fActivePage, marker, true);
callTrace = ((MockEditorPart) editor).getCallHistory();
assertEquals(editor.getSite().getId(), MockEditorPart.ID2);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(callTrace.contains("gotoMarker"), true);
fActivePage.closeEditor(editor, false);
/*
* javadoc: If the marker contains an EDITOR_ID_ATTR attribute the
* attribute value will be used to determine the editor type to be
* opened
*/
marker.setAttribute(IWorkbenchPage.EDITOR_ID_ATTR, MockEditorPart.ID1);
editor = IDE.openEditor(fActivePage, marker, true);
callTrace = ((MockEditorPart) editor).getCallHistory();
assertEquals(editor.getSite().getId(), MockEditorPart.ID1);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(callTrace.contains("gotoMarker"), true);
// do not close the editor this time
/*
* javdoc: If this page already has an editor open on the target object
* that editor is activated
*/
callTrace.clear();
assertEquals(IDE.openEditor(fActivePage, marker, true), editor);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(callTrace.contains("gotoMarker"), true);
fActivePage.closeEditor(editor, false);
}
/**
* openEditor(IMarker marker, boolean activate)
*/
public void testOpenEditor6() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
IMarker marker = FileUtil.createFile("aa.mock2", proj).createMarker(
IMarker.TASK);
MockPartListener listener = new MockPartListener();
fActivePage.addPartListener(listener);
CallHistory listenerCall = listener.getCallHistory();
CallHistory editorCall;
// we need another editor so that the editor under test can receive
// events.
// otherwise, events will be ignored.
IEditorPart extra = IDE.openEditor(fActivePage, FileUtil.createFile(
"aaaaa", proj), true);
/*
* javadoc: If activate == true the editor will be activated
*/
// open the registered editor for the marker resource with activation
IEditorPart editor = IDE.openEditor(fActivePage, marker, true);
editorCall = ((MockEditorPart) editor).getCallHistory();
assertEquals(editor.getSite().getId(), MockEditorPart.ID2);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
/*
* javadoc: the cursor and selection state of the editor is then updated
* from information recorded in the marker.
*/
assertEquals(editorCall.contains("gotoMarker"), true);
fActivePage.closeEditor(editor, false);
fActivePage.activate(extra);
// Activate something in a different stack, or the editor will end up
// activated regardless of
// the activate flag.
fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null,
IWorkbenchPage.VIEW_ACTIVATE);
// open the registered editor for the marker resource without activation
listenerCall.clear();
editor = IDE.openEditor(fActivePage, marker, false);
editorCall = ((MockEditorPart) editor).getCallHistory();
assertEquals(editor.getSite().getId(), MockEditorPart.ID2);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(listenerCall.contains("partBroughtToTop"), true);
assertEquals(listenerCall.contains("partActivated"), false);
assertEquals(editorCall.contains("gotoMarker"), true);
fActivePage.closeEditor(editor, false);
/*
* javadoc: If the marker contains an EDITOR_ID_ATTR attribute the
* attribute value will be used to determine the editor type to be
* opened
*/
String id = MockEditorPart.ID1;
marker.setAttribute(IWorkbenchPage.EDITOR_ID_ATTR, id);
// open an editor with activation
listenerCall.clear();
editor = IDE.openEditor(fActivePage, marker, true);
editorCall = ((MockEditorPart) editor).getCallHistory();
assertEquals(editor.getSite().getId(), id);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(fActivePage.getActiveEditor(), editor);
assertEquals(editorCall.contains("gotoMarker"), true);
fActivePage.closeEditor(editor, false);
fActivePage.activate(extra);
// Activate something in a different stack, or the editor will end up
// activated regardless of
// the activate flag.
fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null,
IWorkbenchPage.VIEW_ACTIVATE);
// open an editor without activation
listenerCall.clear();
editor = IDE.openEditor(fActivePage, marker, false);
editorCall = ((MockEditorPart) editor).getCallHistory();
assertEquals(editor.getSite().getId(), id);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editor), true);
assertEquals(editorCall.contains("gotoMarker"), true);
assertEquals(listenerCall.contains("partActivated"), false);
assertEquals(listenerCall.contains("partBroughtToTop"), true);
// do not close the editor this time
fActivePage.activate(extra);
/*
* javadoc: If this page already has an editor open on the target object
* that editor is brought to front
*/
// Activate something in a different stack, or the editor will end up
// activated regardless of
// the activate flag.
fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null,
IWorkbenchPage.VIEW_ACTIVATE);
// open the editor second time without activation
listenerCall.clear();
assertEquals(IDE.openEditor(fActivePage, marker, false), editor);
assertEquals(listenerCall.contains("partBroughtToTop"), true);
assertEquals(listenerCall.contains("partActivated"), false);
fActivePage.activate(extra);
/*
* javdoc: If activate == true the editor will be activated
*/
// open the editor second time with activation
listenerCall.clear();
assertEquals(IDE.openEditor(fActivePage, marker, true), editor);
assertEquals(editorCall.contains("gotoMarker"), true);
assertEquals(listenerCall.contains("partBroughtToTop"), true);
assertEquals(listenerCall.contains("partActivated"), true);
}
public void testFindView() throws Throwable {
String id = MockViewPart.ID3;
// id of valid, but not open view
assertNull(fActivePage.findView(id));
IViewPart view = fActivePage.showView(id);
assertEquals(fActivePage.findView(id), view);
// close view
fActivePage.hideView(view);
assertNull(fActivePage.findView(id));
}
public void testGetViews() throws Throwable {
int totalBefore = fActivePage.getViews().length;
IViewPart view = fActivePage.showView(MockViewPart.ID2);
assertEquals(ArrayUtil.contains(fActivePage.getViews(), view), true);
assertEquals(fActivePage.getViews().length, totalBefore + 1);
fActivePage.hideView(view);
assertEquals(ArrayUtil.contains(fActivePage.getViews(), view), false);
assertEquals(fActivePage.getViews().length, totalBefore);
}
public void testHideView() throws Throwable {
IViewPart view = fActivePage.showView(MockViewPart.ID3);
fActivePage.hideView(view);
CallHistory callTrace = ((MockViewPart) view).getCallHistory();
assertTrue(callTrace.contains("dispose"));
}
public void testClose() throws Throwable {
IWorkbenchPage page = openTestPage(fWin);
proj = FileUtil.createProject("testOpenEditor");
final IFile file = FileUtil.createFile("aaa.mock1", proj);
IEditorPart editor = IDE.openEditor(page, file, true);
CallHistory callTrace = ((MockEditorPart) editor).getCallHistory();
callTrace.clear();
/*
* javadoc: If the page has open editors with unsaved content and save
* is true, the user will be given the opportunity to save them
*/
assertEquals(page.close(), true);
assertEquals(callTrace
.verifyOrder(new String[] { "isDirty", "dispose" }), true);
assertEquals(fWin.getActivePage(), fActivePage);
}
public void testCloseEditor() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
final IFile file = FileUtil.createFile("test.mock1", proj);
IEditorPart editor;
CallHistory callTrace;
MockEditorPart mock;
/*
* javadoc: Parameters: save - true to save the editor contents if
* required (recommended)
*/
// create a clean editor that needs to be saved on closing
editor = IDE.openEditor(fActivePage, file, true);
mock = (MockEditorPart) editor;
mock.setSaveNeeded(true);
callTrace = mock.getCallHistory();
callTrace.clear();
// close the editor with save confirmation
assertEquals(fActivePage.closeEditor(editor, true), true);
assertEquals(callTrace
.verifyOrder(new String[] { "isDirty", "dispose" }), true);
/*
* javadoc: If the editor has unsaved content and save is true, the user
* will be given the opportunity to save it.
*/
// can't be tested
/*
* javadoc: Parameters: save - false to discard any unsaved changes
*/
// create a dirty editor
editor = IDE.openEditor(fActivePage, file, true);
mock = (MockEditorPart) editor;
mock.setDirty(true);
mock.setSaveNeeded(true);
callTrace = mock.getCallHistory();
callTrace.clear();
// close the editor and discard changes
assertEquals(fActivePage.closeEditor(editor, false), true);
assertEquals(callTrace.contains("isSaveOnCloseNeeded"), false);
/*
* It is possible that some action may query the isDirty value of the
* editor to update its enabled state. There is nothing wrong in doing
* that, so do not test for no isDirty call here.
*
* assertEquals(callTrace.contains( "isDirty"), false);
*/
assertEquals(callTrace.contains("doSave"), false);
assertEquals(callTrace.contains("dispose"), true);
}
public void testCloseAllEditors() throws Throwable {
int total = 5;
final IFile[] files = new IFile[total];
IEditorPart[] editors = new IEditorPart[total];
CallHistory[] callTraces = new CallHistory[total];
MockEditorPart[] mocks = new MockEditorPart[total];
proj = FileUtil.createProject("testOpenEditor");
for (int i = 0; i < total; i++)
files[i] = FileUtil.createFile(i + ".mock2", proj);
/*
* javadoc: If the page has open editors with unsaved content and save
* is true, the user will be given the opportunity to save them.
*/
// close all clean editors with confirmation
for (int i = 0; i < total; i++) {
editors[i] = IDE.openEditor(fActivePage, files[i], true);
callTraces[i] = ((MockEditorPart) editors[i]).getCallHistory();
}
assertEquals(fActivePage.closeAllEditors(true), true);
for (int i = 0; i < total; i++) {
assertEquals(callTraces[i].contains("isDirty"), true);
assertEquals(callTraces[i].contains("doSave"), false);
callTraces[i].clear();
}
// close all dirty editors with confirmation
// can't be tested
// close all dirty editors discarding them
for (int i = 0; i < total; i++) {
editors[i] = IDE.openEditor(fActivePage, files[i], true);
mocks[i] = (MockEditorPart) editors[i];
mocks[i].setDirty(true);
callTraces[i] = mocks[i].getCallHistory();
}
assertEquals(fActivePage.closeAllEditors(false), true);
for (int i = 0; i < total; i++) {
assertEquals(callTraces[i].contains("doSave"), false);
}
}
public void testSaveEditor() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
final IFile file = FileUtil.createFile("test.mock1", proj);
IEditorPart editor;
CallHistory callTrace;
MockEditorPart mock;
// create a clean editor
editor = IDE.openEditor(fActivePage, file, true);
mock = (MockEditorPart) editor;
callTrace = mock.getCallHistory();
callTrace.clear();
/*
* javadoc: Saves the contents of the given editor if dirty. If not,
* this method returns without effect
*/
// save the clean editor with confirmation
assertEquals(fActivePage.saveEditor(editor, true), true);
assertEquals(callTrace.contains("isDirty"), true);
assertEquals(callTrace.contains("doSave"), false);
/*
* javadoc: If confirm is true the user is prompted to confirm the
* command.
*/
// can't be tested
/*
* javadoc: Otherwise, the save happens without prompt.
*/
// save the clean editor without confirmation
assertEquals(fActivePage.saveEditor(editor, false), true);
assertEquals(callTrace.contains("isDirty"), true);
assertEquals(callTrace.contains("doSave"), false);
// save the dirty editor without confirmation
mock.setDirty(true);
callTrace.clear();
assertEquals(fActivePage.saveEditor(editor, false), true);
assertEquals(callTrace
.verifyOrder(new String[] { "isDirty", "doSave" }), true);
}
public void testSaveAllEditors() throws Throwable {
int total = 3;
final IFile[] files = new IFile[total];
IEditorPart[] editors = new IEditorPart[total];
CallHistory[] callTraces = new CallHistory[total];
MockEditorPart[] mocks = new MockEditorPart[total];
proj = FileUtil.createProject("testOpenEditor");
for (int i = 0; i < total; i++) {
files[i] = FileUtil.createFile(i + ".mock2", proj);
editors[i] = IDE.openEditor(fActivePage, files[i], true);
mocks[i] = (MockEditorPart) editors[i];
callTraces[i] = mocks[i].getCallHistory();
}
/*
* javadoc: If there are no dirty editors this method returns without
* effect. javadoc: If confirm is true the user is prompted to confirm
* the command
*/
// save all clean editors with confirmation
assertEquals(fActivePage.saveAllEditors(true), true);
for (int i = 0; i < total; i++) {
assertEquals(callTraces[i].contains("isDirty"), true);
assertEquals(callTraces[i].contains("doSave"), false);
callTraces[i].clear();
}
// save all dirty editors with confirmation can't be tested
/*
* javadoc: Parameters: confirm - false to save unsaved changes without
* asking
*/
// save all clean editors without confirmation
assertEquals(fActivePage.saveAllEditors(false), true);
for (int i = 0; i < total; i++) {
assertEquals(callTraces[i].contains("isDirty"), true);
assertEquals(callTraces[i].contains("doSave"), false);
callTraces[i].clear();
}
// save all dirty editors without confirmation
for (int i = 0; i < total; i++)
mocks[i].setDirty(true);
assertEquals(fActivePage.saveAllEditors(false), true);
for (int i = 0; i < total; i++)
assertEquals(callTraces[i].verifyOrder(new String[] { "isDirty",
"doSave" }), true);
}
public void testGetEditors() throws Throwable {
proj = FileUtil.createProject("testOpenEditor");
int totalBefore = fActivePage.getEditors().length;
int num = 3;
IEditorPart[] editors = new IEditorPart[num];
for (int i = 0; i < num; i++) {
editors[i] = IDE.openEditor(fActivePage, FileUtil.createFile(i
+ ".mock2", proj), true);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(),
editors[i]), true);
}
assertEquals(fActivePage.getEditors().length, totalBefore + num);
fActivePage.closeEditor(editors[0], false);
assertEquals(ArrayUtil.contains(fActivePage.getEditors(), editors[0]),
false);
assertEquals(fActivePage.getEditors().length, totalBefore + num - 1);
fActivePage.closeAllEditors(false);
assertEquals(fActivePage.getEditors().length, 0);
}
public void testShowActionSet() {
String id = MockActionDelegate.ACTION_SET_ID;
WorkbenchPage page = (WorkbenchPage) fActivePage;
int totalBefore = page.getActionSets().length;
fActivePage.showActionSet(id);
IActionSetDescriptor[] sets = ((WorkbenchPage) fActivePage)
.getActionSets();
boolean found = false;
for (int i = 0; i < sets.length; i++)
if (id.equals(sets[i].getId()))
found = true;
assertEquals(found, true);
// check that the method does not add an invalid action set to itself
id = IConstants.FakeID;
fActivePage.showActionSet(id);
sets = ((WorkbenchPage) fActivePage).getActionSets();
found = false;
for (int i = 0; i < sets.length; i++)
if (id.equals(sets[i].getId()))
found = true;
assertEquals(found, false);
assertEquals(page.getActionSets().length, totalBefore + 1);
}
public void testHideActionSet() {
WorkbenchPage page = (WorkbenchPage) fActivePage;
int totalBefore = page.getActionSets().length;
String id = MockWorkbenchWindowActionDelegate.SET_ID;
fActivePage.showActionSet(id);
assertEquals(page.getActionSets().length, totalBefore + 1);
fActivePage.hideActionSet(id);
assertEquals(page.getActionSets().length, totalBefore);
IActionSetDescriptor[] sets = page.getActionSets();
boolean found = false;
for (int i = 0; i < sets.length; i++)
if (id.equals(sets[i].getId()))
found = true;
assertEquals(found, false);
}
}