| /******************************************************************************* |
| * 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.zoom; |
| |
| import org.eclipse.ui.IWorkbenchPart; |
| |
| /** |
| * This class contains tests that apply to both views and editors. Subclasses |
| * will overload the abstract methods to determine whether editors or views |
| * are being tested, and can define additional tests that only apply to editors |
| * or views (or that have different results). |
| */ |
| public abstract class CloseTest extends ZoomTestCase { |
| public CloseTest(String name) { |
| super(name); |
| } |
| |
| public abstract IWorkbenchPart getStackedPart1(); |
| public abstract IWorkbenchPart getStackedPart2(); |
| public abstract IWorkbenchPart getUnstackedPart(); |
| |
| /** |
| * <p>Test: Zoom a part and hide an inactive fast view</p> |
| * <p>Expected result: Part remains zoomed</p> |
| */ |
| public void testCloseInactiveFastView() { |
| IWorkbenchPart zoomPart = getStackedPart1(); |
| |
| zoom(zoomPart); |
| close(fastView); |
| |
| assertZoomed(zoomPart); |
| assertActive(zoomPart); |
| } |
| |
| /** |
| * <p>Test: Zoom a part, activate a fast view, then hide the fast view</p> |
| * <p>Expected result: Part remains zoomed</p> |
| */ |
| public void testCloseActiveFastView() { |
| IWorkbenchPart zoomPart = getStackedPart1(); |
| |
| zoom(zoomPart); |
| page.activate(fastView); |
| close(fastView); |
| |
| assertZoomed(zoomPart); |
| assertActive(zoomPart); |
| } |
| |
| /** |
| * <p>Test: Activate an unstacked view, zoom and activate a stacked part, then close the active part.</p> |
| * <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p> |
| * <p>Note: This ensures that when the active part is closed, it will try to activate a part that |
| * doesn't affect the zoom even if something else was activated more recently.</p> |
| */ |
| public void testCloseZoomedStackedPartAfterActivatingView() { |
| IWorkbenchPart zoomPart = getStackedPart1(); |
| IWorkbenchPart otherStackedPart = getStackedPart2(); |
| IWorkbenchPart unstackedPart = unstackedView; |
| |
| page.activate(unstackedPart); |
| zoom(zoomPart); |
| close(zoomPart); |
| |
| assertZoomed(otherStackedPart); |
| assertActive(otherStackedPart); |
| } |
| |
| /** |
| * <p>Test: Activate an unstacked editor, zoom and activate a stacked part, then close the active part.</p> |
| * <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p> |
| * <p>Note: This ensures that when the active part is closed, it will try to activate a part that |
| * doesn't affect the zoom even if something else was activated more recently.</p> |
| */ |
| public void testCloseZoomedStackedPartAfterActivatingEditor() { |
| IWorkbenchPart zoomPart = getStackedPart1(); |
| IWorkbenchPart otherStackedPart = getStackedPart2(); |
| IWorkbenchPart unstackedPart = editor3; |
| |
| page.activate(unstackedPart); |
| zoom(zoomPart); |
| close(zoomPart); |
| |
| assertZoomed(otherStackedPart); |
| assertActive(otherStackedPart); |
| } |
| |
| /** |
| * <p>Test: Activate an unstacked editor, activate a stacked part, then close the active part.</p> |
| * <p>Expected result: The unstacked part becomes active</p> |
| * <p>Note: This isn't really a zoom test, but it ensures that the behavior tested by |
| * testHideZoomedStackedPartAfterActivatingEditor does not affect activation when there is no zoom.</p> |
| */ |
| public void testCloseUnzoomedStackedPartAfterActivatingEditor() { |
| IWorkbenchPart activePart = getStackedPart1(); |
| IWorkbenchPart otherStackedPart = getStackedPart2(); |
| IWorkbenchPart unstackedPart = editor3; |
| |
| page.activate(unstackedPart); |
| page.activate(activePart); |
| close(activePart); |
| |
| assertZoomed(null); |
| assertActive(unstackedPart); |
| } |
| |
| /** |
| * <p>Test: Zoom an unstacked part and close it.</p> |
| * <p>Expected result: The page is unzoomed and the previously active part becomes active</p> |
| * <p>Note: This ensures that the activation list is used if there is nothing available |
| * in the currently zoomed stack.</p> |
| */ |
| public void testCloseZoomedUnstackedPartAfterActivatingEditor() { |
| IWorkbenchPart previousActive = editor1; |
| IWorkbenchPart zoomedPart = getUnstackedPart(); |
| |
| page.activate(previousActive); |
| zoom(zoomedPart); |
| close(zoomedPart); |
| |
| assertZoomed(null); |
| assertActive(previousActive); |
| } |
| |
| /** |
| * <p>Test: Zoom a stacked part and close an inactive, unstacked editor.</p> |
| * <p>Expected result: No change in activation or zoom</p> |
| */ |
| public void testCloseHiddenUnstackedEditor() { |
| IWorkbenchPart zoomedPart = getStackedPart1(); |
| |
| // Activate another editor to ensure that we aren't closing the active editor |
| page.activate(editor1); |
| zoom(zoomedPart); |
| close(editor3); |
| |
| assertZoomed(zoomedPart); |
| assertActive(zoomedPart); |
| } |
| |
| /** |
| * <p>Test: Zoom a stacked part and close an inactive, unstacked view.</p> |
| * <p>Expected result: No change in activation or zoom</p> |
| */ |
| public void testCloseHiddenUnstackedView() { |
| IWorkbenchPart zoomedPart = getStackedPart1(); |
| |
| zoom(zoomedPart); |
| close(unstackedView); |
| |
| assertZoomed(zoomedPart); |
| assertActive(zoomedPart); |
| } |
| |
| } |