blob: 90749bff05b37c8261e8e72681b31ec0eb0cee27 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 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.views.properties.tabbed;
import junit.framework.TestCase;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyComposite;
import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyList;
import org.eclipse.ui.tests.views.properties.tabbed.sections.InformationTwoSection;
import org.eclipse.ui.tests.views.properties.tabbed.sections.NameSection;
import org.eclipse.ui.tests.views.properties.tabbed.views.TestsPerspective;
import org.eclipse.ui.tests.views.properties.tabbed.views.TestsView;
import org.eclipse.ui.tests.views.properties.tabbed.views.TestsViewContentProvider;
import org.eclipse.ui.views.properties.tabbed.ISection;
import org.eclipse.ui.views.properties.tabbed.TabContents;
public class TabbedPropertySheetPageTest
extends TestCase {
private TestsView testsView;
private TreeNode[] treeNodes;
protected void setUp()
throws Exception {
super.setUp();
/**
* Close the existing perspectives.
*/
IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
assertNotNull(workbenchWindow);
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
assertNotNull(workbenchPage);
workbenchPage.closeAllPerspectives(false, false);
/**
* Open the tests perspective.
*/
PlatformUI.getWorkbench().showPerspective(
TestsPerspective.TESTS_PERSPECTIVE_ID, workbenchWindow);
/**
* Select the Tests view.
*/
IViewPart view = workbenchPage.showView(TestsView.TESTS_VIEW_ID);
assertNotNull(view);
assertTrue(view instanceof TestsView);
testsView = (TestsView) view;
/**
* get the list of tree nodes from the view.
*/
IContentProvider contentProvider = testsView.getViewer()
.getContentProvider();
assertTrue(contentProvider instanceof TestsViewContentProvider);
TestsViewContentProvider viewContentProvider = (TestsViewContentProvider) contentProvider;
treeNodes = viewContentProvider.getInvisibleRoot().getChildren();
assertEquals(treeNodes.length, 8);
}
protected void tearDown()
throws Exception {
super.tearDown();
/**
* Bug 175070: Make sure the views have finished painting.
*/
while (Display.getCurrent().readAndDispatch()) {
//
}
/**
* Deselect everything in the Tests view.
*/
setSelection(new TreeNode[] {} );
}
/**
* Set the selection in the view to cause the properties view to change.
*
* @param selectedNodes
* nodes to select in the view.
*/
private void setSelection(TreeNode[] selectedNodes) {
StructuredSelection selection = new StructuredSelection(selectedNodes);
testsView.getViewer().setSelection(selection, true);
}
/**
* Get the list of tabs from the tabbed properties view.
*
* @return the tab list.
*/
private TabbedPropertyList getTabbedPropertyList() {
Control control = testsView.getTabbedPropertySheetPage().getControl();
assertTrue(control instanceof TabbedPropertyComposite);
TabbedPropertyComposite tabbedPropertyComposite = (TabbedPropertyComposite) control;
return tabbedPropertyComposite.getList();
}
/**
* When One Information Node is selected, three tabs display. Tests
* typeMapper, labelProvider, propertyCategories, afterTab attributes.
*/
public void test_tabDisplay() {
/**
* select node 0 which is an Information
*/
setSelection(new TreeNode[] {treeNodes[0]});
TabbedPropertyList tabbedPropertyList = getTabbedPropertyList();
/**
* First tab is Name
*/
assertEquals(tabbedPropertyList.getElementAt(0).toString(), "Name");//$NON-NLS-1$
/**
* Second tab is Information
*/
assertEquals(tabbedPropertyList.getElementAt(1).toString(),
"Information");//$NON-NLS-1$
/**
* Third tab is Message
*/
assertEquals(tabbedPropertyList.getElementAt(2).toString(), "Message");//$NON-NLS-1$
/**
* No fourth tab
*/
assertNull(tabbedPropertyList.getElementAt(3));
}
/**
* When Two Information Node is selected, only two tabs display. Tests
* enablesFor attribute.
*/
public void test_enablesForFilter() {
/**
* select nodes
*/
setSelection(new TreeNode[] {treeNodes[0], treeNodes[1]});
TabbedPropertyList tabbedPropertyList = getTabbedPropertyList();
/**
* First tab is Information
*/
assertEquals(tabbedPropertyList.getElementAt(0).toString(),
"Information");//$NON-NLS-1$
/**
* Second tab is Message
*/
assertEquals(tabbedPropertyList.getElementAt(1).toString(), "Message");//$NON-NLS-1$
/**
* No other tab
*/
assertNull(tabbedPropertyList.getElementAt(2));
}
/**
* When Two Information Node is selected, two section displayed on Name tab.
* Tests filter, afterSection attribute.
*/
public void test_sectionInformationTwoFilter() {
/**
* select nodes
*/
setSelection(new TreeNode[] {treeNodes[1]});
TabbedPropertyList tabbedPropertyList = getTabbedPropertyList();
/**
* First tab is Information
*/
assertEquals(tabbedPropertyList.getElementAt(0).toString(), "Name");//$NON-NLS-1$
TabContents tabContents = testsView.getTabbedPropertySheetPage().getCurrentTab();
/**
* the tab has two sections.
*/
ISection[] sections = tabContents.getSections();
assertEquals(sections.length, 2);
assertEquals(sections[0].getClass(), NameSection.class);
assertEquals(sections[1].getClass(), InformationTwoSection.class);
}
/**
* When Information, Error and Warning Nodes are selected, only the Message
* tab displays. Tests input attribute.
*/
public void test_selectThreeMessageNodes() {
/**
* select nodes
*/
setSelection(new TreeNode[] {treeNodes[1], treeNodes[2], treeNodes[3],});
TabbedPropertyList tabbedPropertyList = getTabbedPropertyList();
/**
* Only tab is Message
*/
assertEquals(tabbedPropertyList.getElementAt(0).toString(), "Message");//$NON-NLS-1$
/**
* No other tab
*/
assertNull(tabbedPropertyList.getElementAt(1));
}
/**
* When File, Folder and Project Nodes are selected, only the Resource tab
* displays. Tests input attribute.
*/
public void test_selectThreeResourceNodes() {
/**
* select nodes
*/
setSelection(new TreeNode[] {treeNodes[5], treeNodes[6], treeNodes[7],});
TabbedPropertyList tabbedPropertyList = getTabbedPropertyList();
/**
* Only tab is Resource
*/
assertEquals(tabbedPropertyList.getElementAt(0).toString(), "Resource");//$NON-NLS-1$
/**
* No other tab
*/
assertNull(tabbedPropertyList.getElementAt(1));
}
/**
* When the view first comes up, there is no properties so the "Properties
* are not available." banner is displayed. Tests null selection in a
* viewer.
*/
public void test_noPropertiesAvailable() {
TabContents tabContents = testsView.getTabbedPropertySheetPage().getCurrentTab();
assertNull(tabContents);
TabbedPropertyList tabbedPropertyList = getTabbedPropertyList();
assertNull(tabbedPropertyList.getElementAt(0));
}
}