Закрыть приложение Eclipse программно - PullRequest
3 голосов
/ 11 мая 2010

У меня есть приложение Eclipse, которое я хочу закрыть. Подвох в том, что это безголовое приложение, поэтому я не могу использовать следующий метод:

PlatformUI.getWorkbench().close();

Какую альтернативу я могу использовать, чтобы закрыть приложение?

Мой основной плагин, который определяет продукт и приложение, содержит следующие зависимости:

  • org.eclipse.core.runtime

И это все.

Я использую точки расширения:

  • org.eclipse.core.runtime.applications

Чтобы определить мое приложение.

Я создаю для него пользовательский интерфейс Swing и хочу иметь возможность закрыть приложение после выполнения определенного процесса или в результате действий пользователя. Интересно, есть ли в Eclipse какой-либо API для этого, или в этом случае, когда я обрабатываю пользовательский интерфейс самостоятельно, нужно ли закрывать приложение, выходя из класса, реализующего IApplication.

1 Ответ

1 голос
/ 11 мая 2010

Может использовать услуги ResourcesPlugin?

См. этот класс для примера метода остановки (я знаю, что это AbstractUI класс, но в основном это Плагин , и если такой класс, производный от плагина, вы можете реализовать метод org.osgi.framework.BundleActivator#stop.

/**
 * Shuts down this plug-in and discards all plug-in state.
 * 
 * @exception CoreException
 *                If this method fails to shut down this plug-in.
 * 
 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
 */
public final void stop(BundleContext context) throws Exception {
    try {

        /* Unregister as a save participant */
        if (ResourcesPlugin.getWorkspace() != null) {
            ResourcesPlugin.getWorkspace().removeSaveParticipant(this);
        }

    } catch (Exception e) {
        throw new CoreException(new Status(IStatus.ERROR,
            getSymbolicName(), CommonUIStatusCodes.PLUGIN_SHUTDOWN_FAILURE,
            getShutdownErrorMessage(getPluginName()), e));
    } finally {
        super.stop(context);
    }
}

(очевидно, не используйте CommonUIStatusCodes)

...