blob: 62837624882c34e452fb0892aa8cc24a0f7e679c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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.systeminplaceeditor;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorRegistry;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.tests.harness.util.UITestCase;
/**
* Tests opening the
* <code>org.eclipse.ui.internal.editorsupport.win32.OleEditor<code>.
* <p>
* <strong>Note:</strong> The tests pass on all platforms but
* only perform for real when a system in-place editor is
* available for *.doc.
* </p>
*
* @since 3.4
*/
public class OpenSystemInPlaceEditorTest extends UITestCase {
public static Test suite() {
return new TestSuite(OpenSystemInPlaceEditorTest.class);
}
/**
* Creates the test object.
*
* @param testName the test name
*/
public OpenSystemInPlaceEditorTest(String testName) {
super(testName);
}
public void testWorkspaceFile() throws Exception {
if (!PlatformUI.getWorkbench().getEditorRegistry().isSystemInPlaceEditorAvailable("test.doc"))
return;
// Custom setup
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test" + System.currentTimeMillis());
project.create(null);
project.open(null);
IFile file = project.getFile("test.doc");
InputStream s = new ByteArrayInputStream("some test content".getBytes());
file.create(s, false, null);
IWorkbenchPage page = getWorkbenchPage();
IEditorPart editor = IDE.openEditor(page, file);
assertEquals(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID, editor.getEditorSite().getId());
// Custom tear down
page.closeEditor(editor, false);
file.delete(false, null);
project.delete(false, null);
}
public void testExternalFile() throws Exception {
if (!PlatformUI.getWorkbench().getEditorRegistry().isSystemInPlaceEditorAvailable("test.doc"))
return;
// Custom setup
File file = File.createTempFile("test", ".doc");
IWorkbenchPage page = getWorkbenchPage();
IEditorPart editor = IDE.openEditorOnFileStore(page, EFS.getStore(file.toURI()));
assertEquals(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID, editor.getEditorSite().getId());
assertFalse("is not error editor", "org.eclipse.ui.internal.ErrorEditorPart".equals(editor.getClass().getName()));
// Custom tear down
page.closeEditor(editor, false);
file.delete();
}
private IWorkbenchPage getWorkbenchPage() {
IWorkbenchWindow window;
try {
if (getWorkbench().getWorkbenchWindowCount() == 0)
window = getWorkbench().openWorkbenchWindow(null);
else
window = getWorkbench().getWorkbenchWindows()[0];
IWorkbenchPage[] pages = window.getPages();
if (pages.length > 0)
return pages[0];
return window.openPage(null);
} catch (WorkbenchException ex) {
fail();
return null;
}
}
}