blob: 21cda8a9456b5da39f632a3586724bcf21760003 [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.ui.tests.api.workbenchpart;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IStorage;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.internal.WorkbenchPage;
import org.eclipse.ui.internal.WorkbenchWindow;
import org.eclipse.ui.tests.harness.util.UITestCase;
/**
* @since 3.0
*/
public class ArbitraryPropertyTest extends UITestCase {
/**
*
*/
private static final String EDITOR_ID = "org.eclipse.ui.tests.TitleTestEditor";
/**
*
*/
private static final String USER_PROP = "org.eclipse.ui.test.user";
final static String VIEW_ID = "org.eclipse.ui.tests.workbenchpart.OverriddenTitleView";
/**
* @param testName
*/
public ArbitraryPropertyTest(String testName) {
super(testName);
}
WorkbenchWindow window;
WorkbenchPage page;
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.tests.harness.util.UITestCase#doSetUp()
*/
protected void doSetUp() throws Exception {
super.doSetUp();
window = (WorkbenchWindow) openTestWindow();
page = (WorkbenchPage) window.getActivePage();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.tests.util.UITestCase#doTearDown()
*/
protected void doTearDown() throws Exception {
super.doTearDown();
}
static class PropListener implements IPropertyChangeListener {
String firedProp = null;
String firedOV = null;
String firedNV = null;
public void propertyChange(PropertyChangeEvent event) {
firedProp = event.getProperty();
firedOV = (String) event.getOldValue();
firedNV = (String) event.getNewValue();
}
};
public void testViewProperties() throws Exception {
OverriddenTitleView view = (OverriddenTitleView) page.showView(VIEW_ID);
IViewReference ref = (IViewReference) page.getReference(view);
PropListener viewListener = new PropListener();
view.addPartPropertyListener(viewListener);
PropListener refListener = new PropListener();
ref.addPartPropertyListener(refListener);
view.setPartProperty(USER_PROP, "pwebster");
try {
assertEquals("pwebster", view.getPartProperty(USER_PROP));
assertEquals("pwebster", ref.getPartProperty(USER_PROP));
assertEquals(USER_PROP, viewListener.firedProp);
assertNull(viewListener.firedOV);
assertEquals("pwebster", viewListener.firedNV);
assertEquals(USER_PROP, refListener.firedProp);
assertNull(refListener.firedOV);
assertEquals("pwebster", refListener.firedNV);
} finally {
view.removePartPropertyListener(viewListener);
ref.removePartPropertyListener(refListener);
}
}
public void testEditorProperties() throws Exception {
IFileEditorInput input = new IFileEditorInput() {
public boolean exists() {
return true;
}
public ImageDescriptor getImageDescriptor() {
return null;
}
public String getName() {
return "MyInputFile";
}
public IPersistableElement getPersistable() {
return null;
}
public String getToolTipText() {
return "My Input File";
}
public Object getAdapter(Class adapter) {
return null;
}
public IFile getFile() {
return null;
}
public IStorage getStorage() throws CoreException {
if (false) throw new CoreException(null);
return null;
}
};
TitleTestEditor editor = (TitleTestEditor) page.openEditor(input,
EDITOR_ID);
IEditorReference ref = (IEditorReference) page.getReference(editor);
PropListener editorListener = new PropListener();
editor.addPartPropertyListener(editorListener);
PropListener refListener = new PropListener();
ref.addPartPropertyListener(refListener);
editor.setPartProperty(USER_PROP, "pwebster");
try {
assertEquals("pwebster", editor.getPartProperty(USER_PROP));
assertEquals("pwebster", ref.getPartProperty(USER_PROP));
assertEquals(USER_PROP, editorListener.firedProp);
assertNull(editorListener.firedOV);
assertEquals("pwebster", editorListener.firedNV);
assertEquals(USER_PROP, refListener.firedProp);
assertNull(refListener.firedOV);
assertEquals("pwebster", refListener.firedNV);
} finally {
editor.removePartPropertyListener(editorListener);
ref.removePartPropertyListener(refListener);
}
}
}