| /******************************************************************************* |
| * Copyright (c) 2009, 2015 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 |
| * Manumitting Technologies - bug 394036 |
| ******************************************************************************/ |
| |
| package org.eclipse.ui.tests.progress; |
| |
| import org.eclipse.core.commands.Category; |
| import org.eclipse.core.commands.Command; |
| import org.eclipse.core.commands.IParameter; |
| import org.eclipse.core.commands.ParameterizedCommand; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.core.runtime.jobs.Job; |
| import org.eclipse.e4.core.commands.ECommandService; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.commands.ICommandService; |
| import org.eclipse.ui.handlers.IHandlerActivation; |
| import org.eclipse.ui.handlers.IHandlerService; |
| import org.eclipse.ui.internal.progress.JobInfo; |
| import org.eclipse.ui.internal.progress.ProgressInfoItem; |
| import org.eclipse.ui.progress.IProgressConstants; |
| import org.eclipse.ui.progress.IProgressConstants2; |
| |
| /** |
| * @since 3.6 |
| * @author Prakash G.R. (grprakash@in.ibm.com) |
| */ |
| public class ProgressContantsTest extends ProgressTestCase { |
| |
| /** |
| * |
| * @param testName |
| * |
| */ |
| public ProgressContantsTest(String testName) { |
| super(testName); |
| } |
| |
| public void testCommandProperty() throws Exception { |
| |
| openProgressView(); |
| |
| DummyJob okJob = new DummyJob("OK Job", Status.OK_STATUS); |
| |
| IWorkbench workbench = PlatformUI.getWorkbench(); |
| ICommandService commandService = workbench.getService(ICommandService.class); |
| String commandId = "org.eclipse.ui.tests.progressViewCommand"; |
| Command command = commandService.getCommand(commandId); |
| ParameterizedCommand parameterizedCommand = new ParameterizedCommand(command, null); |
| okJob.setProperty(IProgressConstants2.COMMAND_PROPERTY, parameterizedCommand); |
| okJob.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); |
| okJob.schedule(); |
| |
| IHandlerService service = workbench.getService(IHandlerService.class); |
| CommandHandler handler = new CommandHandler(); |
| IHandlerActivation record = service.activateHandler(commandId, handler); |
| |
| waitForJobs(100, 1000); |
| okJob.join(); |
| processEvents(); |
| |
| ProgressInfoItem item = findProgressInfoItem(okJob); |
| if (item == null) { |
| waitForJobs(100, 1000); |
| okJob.join(); |
| processEvents(); |
| item = findProgressInfoItem(okJob); |
| } |
| assertNotNull(item); |
| item.executeTrigger(); |
| assertTrue(handler.executed); |
| |
| service.deactivateHandler(record); |
| } |
| |
| public void testCommandPropertyEnablement() throws Exception { |
| openProgressView(); |
| |
| DummyJob okJob = new DummyJob("OK Job", Status.OK_STATUS); |
| okJob.shouldFinish = false; |
| |
| IWorkbench workbench = PlatformUI.getWorkbench(); |
| ECommandService commandService = workbench.getService(ECommandService.class); |
| String commandId = "org.eclipse.ui.tests.progressEnableViewCommand"; |
| // Must use ECommandService#defineCommand to have the proper legacy |
| // handler hookup beforehand, such as for handler changes |
| Category category = commandService.defineCategory("org.eclipse.ui.tests.progress.category", "test", "test"); |
| Command command = commandService.defineCommand(commandId, "test", "test", category, new IParameter[0]); |
| ParameterizedCommand parameterizedCommand = new ParameterizedCommand(command, null); |
| okJob.setProperty(IProgressConstants2.COMMAND_PROPERTY, parameterizedCommand); |
| okJob.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); |
| okJob.schedule(); |
| |
| ProgressInfoItem item = null; |
| while ((item = findProgressInfoItem(okJob)) == null) { |
| // wait for the job to show up in the progress view |
| processEvents(); |
| } |
| |
| assertNotNull(item); |
| assertFalse(item.isTriggerEnabled()); |
| |
| IHandlerService service = workbench.getService(IHandlerService.class); |
| CommandHandler handler = new CommandHandler(); |
| IHandlerActivation activation = service.activateHandler(commandId, handler); |
| assertTrue(item.isTriggerEnabled()); |
| |
| service.deactivateHandler(activation); |
| assertFalse(item.isTriggerEnabled()); |
| |
| okJob.cancel(); |
| okJob.join(); |
| } |
| |
| private ProgressInfoItem findProgressInfoItem(Job job) { |
| for (ProgressInfoItem progressInfoItem : progressView.getViewer().getProgressInfoItems()) { |
| JobInfo[] jobInfos = progressInfoItem.getJobInfos(); |
| for (JobInfo jobInfo : jobInfos) { |
| if (job.equals(jobInfo.getJob())) { |
| return progressInfoItem; |
| } |
| } |
| } |
| return null; |
| } |
| |
| // Commented out due to https://bugs.eclipse.org/bugs/show_bug.cgi?id=288358 |
| |
| // public void testKeepProperty() throws Exception { |
| // |
| // openProgressView(); |
| // |
| // DummyJob okJob = new DummyJob("OK Job", Status.OK_STATUS); |
| // okJob.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); |
| // okJob.schedule(); |
| // |
| // DummyJob warningJob = new DummyJob("Warning Job", new Status(IStatus.WARNING, TestPlugin.PLUGIN_ID, "Warning message")); |
| // warningJob.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); |
| // warningJob.schedule(); |
| // |
| // processEvents(); |
| // |
| // okJob.join(); |
| // warningJob.join(); |
| // |
| // processEvents(); |
| // |
| // boolean okJobFound = false; |
| // boolean warningJobFound = false; |
| // |
| // ProgressInfoItem[] progressInfoItems = progressView.getViewer().getProgressInfoItems(); |
| // for (int i = 0; i < progressInfoItems.length; i++) { |
| // JobInfo[] jobInfos = progressInfoItems[i].getJobInfos(); |
| // for (int j = 0; j < jobInfos.length; j++) { |
| // Job job = jobInfos[j].getJob(); |
| // if (job.equals(okJob)) { |
| // okJobFound = true; |
| // } |
| // if (job.equals(warningJob)) { |
| // warningJobFound = true; |
| // } |
| // } |
| // } |
| // |
| // assertTrue(okJobFound); |
| // assertTrue(warningJobFound); |
| // } |
| } |