1 /*******************************************************************************
2  * Copyright (c) 2000, 2013 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.ui.tests.api;
15 
16 import org.eclipse.swt.widgets.Shell;
17 import org.eclipse.ui.IWorkbenchActionConstants;
18 import org.eclipse.ui.IWorkbenchPage;
19 import org.eclipse.ui.IWorkbenchWindow;
20 import org.eclipse.ui.tests.harness.util.ArrayUtil;
21 import org.eclipse.ui.tests.harness.util.UITestCase;
22 import org.junit.Ignore;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25 import org.junit.runners.JUnit4;
26 
27 @RunWith(JUnit4.class)
28 public class IWorkbenchWindowTest extends UITestCase {
29 
30 	private IWorkbenchWindow fWin;
31 
IWorkbenchWindowTest()32 	public IWorkbenchWindowTest() {
33 		super(IWorkbenchWindowTest.class.getSimpleName());
34 	}
35 
36 	@Override
doSetUp()37 	protected void doSetUp() throws Exception {
38 		super.doSetUp();
39 		fWin = openTestWindow();
40 	}
41 
42 	@Test
testClose()43 	public void testClose() throws Throwable {
44 		assertEquals(fWin.close(), true);
45 		assertEquals(
46 				ArrayUtil.contains(fWorkbench.getWorkbenchWindows(), fWin),
47 				false);
48 	}
49 
50 	@Test
testGetActivePage()51 	public void testGetActivePage() throws Throwable {
52 		/*
53 		 * Commented out because until test case can be updated to work
54 		 * with new window/page/perspective implementation
55 		 *
56 		 IWorkbenchPage page1, page2;
57 		 page1 = openTestPage(fWin);
58 		 assertEquals(fWin.getActivePage(), page1);
59 
60 		 page2 = openTestPage(fWin);
61 		 assertEquals(fWin.getActivePage(), page2);
62 
63 		 fWin.setActivePage(page1);
64 		 assertEquals(fWin.getActivePage(), page1);
65 
66 		 fWin.setActivePage(page2);
67 		 assertEquals(fWin.getActivePage(), page2);
68 
69 		 //no pages
70 		 closeAllPages(fWin);
71 		 assertNull(fWin.getActivePage());
72 		 */
73 	}
74 
75 	@Test
76 	@Ignore
XXXtestSetActivePage()77 	public void XXXtestSetActivePage() throws Throwable {
78 		openTestPage(fWin, 5);
79 		IWorkbenchPage[] pages = fWin.getPages();
80 
81 		for (IWorkbenchPage page : pages) {
82 			fWin.setActivePage(page);
83 			assertEquals(page, fWin.getActivePage());
84 		}
85 
86 		fWin.setActivePage(null);
87 		assertNull(fWin.getActivePage());
88 	}
89 
90 	@Test
testGetPages()91 	public void testGetPages() throws Throwable {
92 		/*
93 		 * Commented out because until test case can be updated to work
94 		 * with new window/page/perspective implementation
95 		 *
96 		 int totalBefore;
97 		 IWorkbenchPage[] pages, domainPages;
98 
99 		 totalBefore = fWin.getPages().length;
100 		 int num = 5;
101 		 pages = openTestPage(fWin, num);
102 		 assertEquals(fWin.getPages().length, totalBefore + num);
103 
104 		 domainPages = fWin.getPages();
105 		 for (int i = 0; i < pages.length; i++)
106 		 assertEquals(ArrayUtil.contains(domainPages, pages[i]), true);
107 
108 		 closeAllPages(fWin);
109 		 assertEquals(fWin.getPages().length, 0);
110 		 */
111 	}
112 
113 	@Test
testGetShell()114 	public void testGetShell() {
115 		Shell sh = fWin.getShell();
116 		assertNotNull(sh);
117 	}
118 
119 	@Test
testGetWorkbench()120 	public void testGetWorkbench() {
121 		IWorkbenchWindow win = fWorkbench.getActiveWorkbenchWindow();
122 		assertEquals(win.getWorkbench(), fWorkbench);
123 	}
124 
125 	/**
126 	 * tests openPage(String)
127 	 */
128 	@Test
testOpenPage()129 	public void testOpenPage() throws Throwable {
130 		/*
131 		 * Commented out because until test case can be updated to work
132 		 * with new window/page/perspective implementation
133 		 *
134 		 IWorkbenchPage page = null;
135 		 try {
136 		 page = fWin.openPage(ResourcesPlugin.getWorkspace());
137 		 assertNotNull(page);
138 		 assertEquals(fWin.getActivePage(), page);
139 		 } finally {
140 		 if (page != null)
141 		 page.close();
142 		 }
143 		 */
144 	}
145 
146 	/**
147 	 * tests openPage(String, IAdaptable)
148 	 */
149 	@Test
testOpenPage2()150 	public void testOpenPage2() throws Throwable {
151 		/*
152 		 * Commented out because until test case can be updated to work
153 		 * with new window/page/perspective implementation
154 		 *
155 		 IWorkbenchPage page = null;
156 		 try {
157 		 page = fWin.openPage(EmptyPerspective.PERSP_ID, ResourcesPlugin.getWorkspace());
158 		 assertNotNull(page);
159 		 assertEquals(fWin.getActivePage(), page);
160 		 assertEquals(
161 		 fWin.getActivePage().getPerspective().getId(),
162 		 EmptyPerspective.PERSP_ID);
163 		 } finally {
164 		 if (page != null)
165 		 page.close();
166 		 }
167 
168 		 //test openPage() fails
169 		 try {
170 		 page = fWin.openPage("*************", ResourcesPlugin.getWorkspace());
171 		 fail();
172 		 } catch (WorkbenchException ex) {
173 		 }
174 
175 		 page.close();
176 		 */
177 	}
178 
179 	@Test
testIsApplicationMenu()180 	public void testIsApplicationMenu() {
181 		String[] ids = { IWorkbenchActionConstants.M_FILE,
182 				IWorkbenchActionConstants.M_WINDOW, };
183 
184 		for (String id : ids) {
185 			assertEquals(fWin.isApplicationMenu(id), true);
186 		}
187 
188 		ids = new String[] { IWorkbenchActionConstants.M_EDIT,
189 				IWorkbenchActionConstants.M_HELP,
190 				IWorkbenchActionConstants.M_LAUNCH };
191 
192 		for (String id : ids) {
193 			assertEquals(fWin.isApplicationMenu(id), false);
194 		}
195 	}
196 }
197