| /******************************************************************************* |
| * Copyright (c) 2004, 2013 Tasktop Technologies and others. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * https://www.eclipse.org/legal/epl-2.0 |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Tasktop Technologies - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.tasks.tests; |
| |
| import java.lang.reflect.Field; |
| import java.util.Date; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.mylyn.commons.ui.PlatformUiUtil; |
| import org.eclipse.mylyn.commons.workbench.browser.BrowserUtil; |
| import org.eclipse.mylyn.internal.tasks.core.AbstractTask; |
| import org.eclipse.mylyn.internal.tasks.core.TaskCategory; |
| import org.eclipse.mylyn.internal.tasks.core.TaskList; |
| import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; |
| import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; |
| import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; |
| import org.eclipse.mylyn.tasks.core.ITask; |
| import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel; |
| import org.eclipse.mylyn.tasks.ui.TasksUiUtil; |
| import org.eclipse.mylyn.tasks.ui.editors.TaskEditor; |
| import org.eclipse.mylyn.tests.util.TasksUiTestUtil; |
| import org.eclipse.ui.IEditorPart; |
| import org.eclipse.ui.IWorkbenchPage; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.internal.browser.WebBrowserEditor; |
| import org.eclipse.ui.internal.browser.WebBrowserEditorInput; |
| |
| /** |
| * @author Shawn Minto |
| * @author Steffen Pingel |
| */ |
| public class TasksUiUtilTest extends TestCase { |
| |
| private TaskCategory cat1; |
| |
| private AbstractTask cat1task1; |
| |
| private AbstractTask cat1task2; |
| |
| private IWorkbenchPage activePage; |
| |
| private TaskList taskList; |
| |
| @Override |
| public void setUp() throws Exception { |
| taskList = TasksUiPlugin.getTaskList(); |
| |
| TaskTestUtil.resetTaskListAndRepositories(); |
| TasksUiPlugin.getDefault().getLocalTaskRepository(); |
| |
| cat1 = new TaskCategory("First Category"); |
| taskList.addCategory(cat1); |
| |
| cat1task1 = TasksUiInternal.createNewLocalTask("task 1"); |
| cat1task1.setPriority(PriorityLevel.P1.toString()); |
| cat1task1.setCompletionDate(new Date()); |
| taskList.addTask(cat1task1, cat1); |
| |
| cat1task2 = TasksUiInternal.createNewLocalTask("task 2"); |
| cat1task2.setPriority(PriorityLevel.P2.toString()); |
| taskList.addTask(cat1task2, cat1); |
| |
| assertEquals(cat1.getChildren().size(), 2); |
| |
| activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); |
| assertTrue(activePage.closeAllEditors(false)); |
| assertEquals(0, activePage.getEditorReferences().length); |
| |
| TasksUiTestUtil.ensureTasksUiInitialization(); |
| } |
| |
| @Override |
| public void tearDown() throws Exception { |
| TaskTestUtil.resetTaskListAndRepositories(); |
| activePage.closeAllEditors(false); |
| } |
| |
| public void testOpenTaskFromTask() { |
| TasksUiUtil.openTask(cat1task1); |
| assertEquals(1, activePage.getEditorReferences().length); |
| IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertNotNull(editor); |
| assertEquals(TaskEditor.class, editor.getClass()); |
| |
| TasksUiUtil.openTask(cat1task2); |
| assertEquals(2, activePage.getEditorReferences().length); |
| editor = activePage.getEditorReferences()[1].getEditor(true); |
| assertNotNull(editor); |
| assertEquals(TaskEditor.class, editor.getClass()); |
| } |
| |
| public void testOpenTaskFromString() { |
| if (!PlatformUiUtil.hasInternalBrowser()) { |
| return; |
| } |
| TasksUiUtil.openTask((String) null); |
| assertEquals(1, activePage.getEditorReferences().length); |
| IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor.getClass()); |
| } |
| |
| public void testOpenUrl() { |
| if (!PlatformUiUtil.hasInternalBrowser()) { |
| return; |
| } |
| |
| TasksUiUtil.openUrl(null); |
| assertEquals(1, activePage.getEditorReferences().length); |
| IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor.getEditorInput().getClass()); |
| assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL()); |
| |
| TasksUiUtil.openUrl("http://eclipse.org/mylyn"); |
| assertEquals(2, activePage.getEditorReferences().length); |
| editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor.getEditorInput().getClass()); |
| assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL()); |
| |
| IEditorPart editor2 = activePage.getEditorReferences()[1].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor2.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor2.getEditorInput().getClass()); |
| assertNotNull(((WebBrowserEditorInput) editor2.getEditorInput()).getURL()); |
| assertEquals("http://eclipse.org/mylyn", ((WebBrowserEditorInput) editor2.getEditorInput()).getURL().toString()); |
| } |
| |
| public void testFlagNoRichEditor() throws Exception { |
| if (!PlatformUiUtil.hasInternalBrowser()) { |
| return; |
| } |
| |
| TasksUiUtil.openUrl(null); |
| assertEquals(1, activePage.getEditorReferences().length); |
| IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor.getEditorInput().getClass()); |
| assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL()); |
| WebBrowserEditorInput input = ((WebBrowserEditorInput) editor.getEditorInput()); |
| Field f = input.getClass().getDeclaredField("style"); |
| f.setAccessible(true); |
| int style = (Integer) f.get(input); |
| assertFalse((style & BrowserUtil.NO_RICH_EDITOR) == 0); |
| |
| TasksUiUtil.openUrl("http://eclipse.org/mylyn"); |
| assertEquals(2, activePage.getEditorReferences().length); |
| editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor.getEditorInput().getClass()); |
| assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL()); |
| input = ((WebBrowserEditorInput) editor.getEditorInput()); |
| f = input.getClass().getDeclaredField("style"); |
| f.setAccessible(true); |
| style = (Integer) f.get(input); |
| assertFalse((style & BrowserUtil.NO_RICH_EDITOR) == 0); |
| |
| IEditorPart editor2 = activePage.getEditorReferences()[1].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor2.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor2.getEditorInput().getClass()); |
| assertNotNull(((WebBrowserEditorInput) editor2.getEditorInput()).getURL()); |
| assertEquals("http://eclipse.org/mylyn", ((WebBrowserEditorInput) editor2.getEditorInput()).getURL().toString()); |
| input = ((WebBrowserEditorInput) editor.getEditorInput()); |
| f = input.getClass().getDeclaredField("style"); |
| f.setAccessible(true); |
| style = (Integer) f.get(input); |
| assertFalse((style & BrowserUtil.NO_RICH_EDITOR) == 0); |
| |
| // open task should not set FLAG_NO_RICH_EDITOR |
| TasksUiUtil.openTask("http://eclipse.org/mylyn/test"); |
| assertEquals(3, activePage.getEditorReferences().length); |
| editor = activePage.getEditorReferences()[2].getEditor(true); |
| assertEquals(WebBrowserEditor.class, editor.getClass()); |
| assertEquals(WebBrowserEditorInput.class, editor.getEditorInput().getClass()); |
| assertEquals("http://eclipse.org/mylyn/test", ((WebBrowserEditorInput) editor.getEditorInput()).getURL() |
| .toString()); |
| input = ((WebBrowserEditorInput) editor.getEditorInput()); |
| f = input.getClass().getDeclaredField("style"); |
| f.setAccessible(true); |
| style = (Integer) f.get(input); |
| assertTrue((style & BrowserUtil.NO_RICH_EDITOR) == 0); |
| } |
| |
| public void testOpenLocalTask() { |
| ITask localTask = TasksUiInternal.createNewLocalTask("summary"); |
| TasksUiUtil.openTask(localTask); |
| assertEquals(1, activePage.getEditorReferences().length); |
| IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(TaskEditor.class, editor.getClass()); |
| } |
| |
| public void testOpenLocalTaskWebBrowserDefault() { |
| ITask localTask = TasksUiInternal.createNewLocalTask("summary"); |
| try { |
| TasksUiPlugin.getDefault() |
| .getPreferenceStore() |
| .setValue(ITasksUiPreferenceConstants.EDITOR_TASKS_RICH, false); |
| TasksUiUtil.openTask(localTask); |
| assertEquals(1, activePage.getEditorReferences().length); |
| IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true); |
| assertEquals(TaskEditor.class, editor.getClass()); |
| } finally { |
| TasksUiPlugin.getDefault().getPreferenceStore().setToDefault(ITasksUiPreferenceConstants.EDITOR_TASKS_RICH); |
| } |
| } |
| |
| } |