| /******************************************************************************* |
| * Copyright (c) 2007, 2012 Oracle. 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: |
| * Oracle - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.jpt.common.ui.internal.utility; |
| |
| import org.eclipse.jpt.common.ui.internal.util.SWTUtil; |
| import org.eclipse.jpt.common.utility.command.Command; |
| import org.eclipse.jpt.common.utility.command.ExtendedCommandExecutor; |
| |
| /** |
| * This command executor asynchronously executes a {@link Command command} |
| * on the UI thread. |
| * <p> |
| * This command executor allows a non-UI process to modify any objects |
| * associated with documents that are currently displayed in the UI. |
| */ |
| public final class AsynchronousUiCommandExecutor |
| extends AbstractUiCommandExecutor |
| { |
| public static final ExtendedCommandExecutor INSTANCE = new AsynchronousUiCommandExecutor(); |
| |
| public static ExtendedCommandExecutor instance() { |
| return INSTANCE; |
| } |
| |
| // ensure single instance |
| private AsynchronousUiCommandExecutor() { |
| super(); |
| } |
| |
| public void execute(Command command) { |
| SWTUtil.asyncExec(this.buildRunnable(command)); |
| } |
| |
| public void waitToExecute(Command command) { |
| SWTUtil.syncExec(this.buildRunnable(command)); |
| } |
| } |