blob: 7604a35a82629e5a20c22212a2203c04783eba6a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.api;
import java.util.ArrayList;
import junit.framework.TestCase;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchActionConstants;
/**
* An ElementViewPart shows a bunch of elements in a list
* viewer.
*/
public class ListView extends MockViewPart implements IMenuListener {
ListViewer viewer;
ArrayList input;
MenuManager menuMgr;
Menu menu;
Action addAction;
String ADD_ACTION_ID = "addAction";
/**
* Constructor for ElementViewPart
*/
public ListView() {
super();
input = new ArrayList();
}
/**
* @see IWorkbenchPart#createPartControl(Composite)
*/
public void createPartControl(Composite parent) {
callTrace.add("createPartControl");
// Create viewer.
viewer = new ListViewer(parent);
viewer.setLabelProvider(new LabelProvider());
viewer.setContentProvider(new ListContentProvider());
viewer.setInput(input);
// Create popup menu.
createPopupMenu();
// Register stuff.
getSite().setSelectionProvider(viewer);
}
/**
* Creates a popup menu.
*/
public void createPopupMenu() {
// Create actions.
addAction = new Action("Add Standard Items") {
public void run() {
addStandardItems();
}
};
addAction.setId(ADD_ACTION_ID);
// Create popup menu.
if (useStaticMenu())
createStaticPopupMenu();
else
createDynamicPopupMenu();
}
/**
* Creates a dynamic popup menu.
*/
public void createDynamicPopupMenu() {
menuMgr = new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(this);
menu = menuMgr.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, viewer);
}
/**
* Creates a static popup menu.
*/
public void createStaticPopupMenu() {
menuMgr = new MenuManager();
menu = menuMgr.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, viewer);
menuAboutToShow(menuMgr);
}
public void addElement(ListElement el) {
input.add(el);
viewer.refresh();
viewer.getControl().update();
}
public void selectElement(ListElement el) {
if (el == null)
viewer.setSelection(new StructuredSelection());
else
viewer.setSelection(new StructuredSelection(el));
}
public MenuManager getMenuManager() {
return menuMgr;
}
/**
* @see IMenuListener#menuAboutToShow(IMenuManager)
*/
public void menuAboutToShow(IMenuManager menuMgr) {
menuMgr.add(addAction);
menuMgr.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
/**
* Tests that the menu mgr contains the expected actions.
*/
public void verifyActions(TestCase test, IMenuManager menuMgr) {
TestCase.assertNotNull(menuMgr.find(ADD_ACTION_ID));
}
public void addStandardItems() {
addElement(new ListElement("red"));
addElement(new ListElement("blue"));
addElement(new ListElement("green"));
addElement(new ListElement("red", true));
}
/**
* Returns <code>true</code> to indicate that a static menu should be used,
* <code>false</code> to indicate a dynamic menu.
*/
private boolean useStaticMenu() {
Object data = getData();
if (data instanceof String) {
String arg = (String) data;
return arg.indexOf("-staticMenu") >= 0; //$NON-NLS-1$
}
return false;
}
}