blob: 23130b0fdfc157b824f1cab612195021c0d06455 [file] [log] [blame]
/*******************************************************************************
* 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);
// }
}