blob: 7e9c38f5f649848ba640045cd09c0dc23ebf3351 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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.dynamicplugins;
import java.util.Random;
import junit.framework.TestSuite;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.IWorkbenchConstants;
import org.eclipse.ui.internal.ObjectActionContributorManager;
import org.eclipse.ui.internal.PopupMenuExtender;
/**
* @since 3.1
*/
public class ObjectContributionTests extends DynamicTestCase {
private static final String GROUP_ID = "#OC";
private static final String OBJECT_ACTION_ID = "org.eclipse.newOC1";
private static final String VIEWER_ACTION_ID = "org.eclipse.newOC2";
public static TestSuite suite() {
return new TestSuite(ObjectContributionTests.class);
}
/**
* @param testName
*/
public ObjectContributionTests(String testName) {
super(testName);
}
/* (non-Javadoc)
* @see org.eclipse.ui.tests.dynamicplugins.DynamicTestCase#getExtensionId()
*/
protected String getExtensionId() {
return "newOC1.testDynamicOCAddition";
}
/* (non-Javadoc)
* @see org.eclipse.ui.tests.dynamicplugins.DynamicTestCase#getExtensionPoint()
*/
protected String getExtensionPoint() {
return IWorkbenchConstants.PL_POPUP_MENU;
}
/* (non-Javadoc)
* @see org.eclipse.ui.tests.dynamicplugins.DynamicTestCase#getInstallLocation()
*/
protected String getInstallLocation() {
return "data/org.eclipse.newOC1";
}
public void testViewerContributions() {
IWorkbenchWindow window = openTestWindow(IDE.RESOURCE_PERSPECTIVE_ID);
IWorkbenchPart part = window.getActivePage().getActivePart();
MenuManager menu = new MenuManager();
resetViewerMenu(menu);
ISelectionProvider provider = new ISelectionProvider() {
public void addSelectionChangedListener(ISelectionChangedListener listener) {
}
public ISelection getSelection() {
return new StructuredSelection(new Random());
}
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
}
public void setSelection(ISelection selection) {
}
};
PopupMenuExtender extender = new PopupMenuExtender(GROUP_ID, menu, provider, part);
extender.menuAboutToShow(menu);
assertNull(menu.find(VIEWER_ACTION_ID));
resetViewerMenu(menu);
getBundle();
extender.menuAboutToShow(menu);
assertNotNull(menu.find(VIEWER_ACTION_ID));
resetViewerMenu(menu);
removeBundle();
extender.menuAboutToShow(menu);
assertNull(menu.find(VIEWER_ACTION_ID));
extender.dispose();
}
/**
* @param menu
*/
private void resetViewerMenu(MenuManager menu) {
menu.removeAll();
menu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new GroupMarker(GROUP_ID));
}
public void testObjectContribtions() {
IWorkbenchWindow window = openTestWindow(IDE.RESOURCE_PERSPECTIVE_ID);
IWorkbenchPart part = window.getActivePage().getActivePart();
ObjectActionContributorManager manager = ObjectActionContributorManager.getManager();
IMenuManager menu = new MenuManager();
ISelectionProvider provider = new ISelectionProvider() {
public void addSelectionChangedListener(ISelectionChangedListener listener) {
}
public ISelection getSelection() {
return new StructuredSelection(new Random());
}
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
}
public void setSelection(ISelection selection) {
}
};
manager.contributeObjectActions(part, menu, provider);
assertNull(menu.find(OBJECT_ACTION_ID));
menu.removeAll();
getBundle();
manager.contributeObjectActions(part, menu, provider);
assertNotNull(menu.find(OBJECT_ACTION_ID));
menu.removeAll();
removeBundle();
manager.contributeObjectActions(part, menu, provider);
assertNull(menu.find(OBJECT_ACTION_ID));
menu.removeAll();
}
/* (non-Javadoc)
* @see org.eclipse.ui.tests.dynamicplugins.DynamicTestCase#getMarkerClass()
*/
protected String getMarkerClass() {
return "org.eclipse.ui.dynamic.MockObjectActionDelegate";
}
}