diff options
author | Markus Duft | 2021-09-24 07:30:09 +0000 |
---|---|---|
committer | Lars Vogel | 2021-10-01 14:17:01 +0000 |
commit | bafaf82d058afcb6206c541de34c7905dff142e7 (patch) | |
tree | b29b03641e428fb76ab1ec6f557bd6a196d0ecc2 | |
parent | 1c1475498bc6c1d69f802612d1ae1a8f789150fd (diff) | |
download | eclipse.platform.debug-bafaf82d058afcb6206c541de34c7905dff142e7.tar.gz eclipse.platform.debug-bafaf82d058afcb6206c541de34c7905dff142e7.tar.xz eclipse.platform.debug-bafaf82d058afcb6206c541de34c7905dff142e7.zip |
Bug 576225 - API for Launch Configuration ViewI20211002-0220I20211001-1800
The public API of the Launch Configuration View consists of three
interfaces.
* ILaunchObjectProvider. This is the main interface implemented by
extending contributions. It must be registered as a service, most
easily using @Component annotation for declarative services.
* ILaunchObject. This is provided the the ILaunchObjectProvider
implementation and describes a launch-able "thing".
* IBackgroundLaunchExecutor. This is a small helper which allows other
extensions convenient access to the logic for launching a specific
launch configuration as a background job.
Both interfaces have default implementations inside the view plugin
which handle "default" Eclipse launch configurations. External
extensions may provide additional logic, for an example see
https://github.com/ssi-schaefer/lcdsl
The LaunchConfigurationViewPlugin Activator is introduced to allow
access the the default implementation of the IBackgroundLaunchExecutor
which is provided by the view.
Change-Id: Iad47ec7e96fbf89709f0b46ef5aa1125d6789dea
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.debug/+/185799
Tested-by: Lars Vogel <Lars.Vogel@vogella.com>
Reviewed-by: Lars Vogel <Lars.Vogel@vogella.com>
16 files changed, 122 insertions, 35 deletions
diff --git a/org.eclipse.debug.ui.launchview/META-INF/MANIFEST.MF b/org.eclipse.debug.ui.launchview/META-INF/MANIFEST.MF index 61aaf4f31..2ec5eb709 100644 --- a/org.eclipse.debug.ui.launchview/META-INF/MANIFEST.MF +++ b/org.eclipse.debug.ui.launchview/META-INF/MANIFEST.MF @@ -20,9 +20,5 @@ Import-Package: javax.annotation;version="1.0.0";resolution:=optional, Bundle-ActivationPolicy: lazy Service-Component: OSGI-INF/org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel.xml, OSGI-INF/org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider.xml -Export-Package: org.eclipse.debug.ui.launchview.internal;x-internal:=true, - org.eclipse.debug.ui.launchview.internal.impl;x-internal:=true, - org.eclipse.debug.ui.launchview.internal.launcher;x-internal:=true, - org.eclipse.debug.ui.launchview.internal.model;x-internal:=true, - org.eclipse.debug.ui.launchview.internal.services;x-internal:=true, - org.eclipse.debug.ui.launchview.internal.view;x-internal:=true +Export-Package: org.eclipse.debug.ui.launchview;x-internal:=true, + org.eclipse.debug.ui.launchview.services;x-internal:=true diff --git a/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider.xml b/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider.xml index c95bd5ae8..cf17032a3 100644 --- a/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider.xml +++ b/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="createService" deactivate="destroyService" name="org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider"> <service> - <provide interface="org.eclipse.debug.ui.launchview.internal.services.ILaunchObjectProvider"/> + <provide interface="org.eclipse.debug.ui.launchview.services.ILaunchObjectProvider"/> </service> <implementation class="org.eclipse.debug.ui.launchview.internal.impl.DebugCoreProvider"/> </scr:component>
\ No newline at end of file diff --git a/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel.xml b/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel.xml index 290833cc6..0eb619af3 100644 --- a/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel.xml +++ b/org.eclipse.debug.ui.launchview/OSGI-INF/org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel"> <service> - <provide interface="org.eclipse.debug.ui.launchview.internal.services.LaunchModel"/> + <provide interface="org.eclipse.debug.ui.launchview.internal.model.ILaunchModel"/> </service> - <reference bind="addLaunchObjectProvider" cardinality="0..n" interface="org.eclipse.debug.ui.launchview.internal.services.ILaunchObjectProvider" name="LaunchObjectProvider" policy="dynamic" policy-option="greedy" unbind="removeLaunchObjectProvider"/> + <reference bind="addLaunchObjectProvider" cardinality="0..n" interface="org.eclipse.debug.ui.launchview.services.ILaunchObjectProvider" name="LaunchObjectProvider" policy="dynamic" policy-option="greedy" unbind="removeLaunchObjectProvider"/> <reference bind="setWorkbench" cardinality="1..1" interface="org.eclipse.ui.IWorkbench" name="Workbench" policy="static" unbind="unsetWorkbench"/> <implementation class="org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel"/> </scr:component>
\ No newline at end of file diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/IBackgroundLaunchExecutor.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/IBackgroundLaunchExecutor.java new file mode 100644 index 000000000..f08d92540 --- /dev/null +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/IBackgroundLaunchExecutor.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2021 SSI Schaefer IT Solutions GmbH and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * SSI Schaefer IT Solutions GmbH + *******************************************************************************/ +package org.eclipse.debug.ui.launchview; + +import java.io.File; + +import org.eclipse.debug.core.ILaunchConfiguration; + +/** + * Allows to execute a specified launch configuration in the background, i.e. + * non-blocking. + * <p> + * The launch configuration is started as a background job. + * + * @since 1.0.2 + */ +public interface IBackgroundLaunchExecutor { + + /** + * Starts a launch configuration. The return value is only valid if wait is + * <code>true</code>. Otherwise the launch is not awaited and the method + * returns immediately. + * + * @param launchConf the launch configuration + * @param mode the launch mode to use. + * @param build whether to perform a build before launch + * @param wait whether to wait for completion + * @param logFile an optional {@link File} to write console output to. May + * be <code>null</code>. + * @return process exit value if wait is <code>true</code>, always 0 if wait + * is <code>false</code>. -1 in case waiting was interrupted. + */ + int launchProcess(ILaunchConfiguration launchConf, String mode, boolean build, boolean wait, File logFile); + +}
\ No newline at end of file diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/LaunchConfigurationViewPlugin.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/LaunchConfigurationViewPlugin.java new file mode 100644 index 000000000..3af0316c1 --- /dev/null +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/LaunchConfigurationViewPlugin.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2021 SSI Schaefer IT Solutions GmbH and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * SSI Schaefer IT Solutions GmbH + *******************************************************************************/ +package org.eclipse.debug.ui.launchview; + +import org.eclipse.debug.ui.launchview.internal.launcher.StandaloneLaunchConfigExecutor; + +/** + * Static Helper which provides access to internal implementations of externally + * available API. + * + * @since 1.0.2 + */ +public class LaunchConfigurationViewPlugin { + + /** + * @return an {@link IBackgroundLaunchExecutor} which can be used to launch + * launch configurations as background jobs. + */ + public static IBackgroundLaunchExecutor getExecutor() { + return new StandaloneLaunchConfigExecutor(); + } + +} diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreLaunchObject.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreLaunchObject.java index a696ec648..de8ebd447 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreLaunchObject.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreLaunchObject.java @@ -31,10 +31,10 @@ import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.debug.ui.ILaunchGroup; +import org.eclipse.debug.ui.launchview.LaunchConfigurationViewPlugin; import org.eclipse.debug.ui.launchview.internal.LaunchViewBundleInfo; import org.eclipse.debug.ui.launchview.internal.LaunchViewMessages; -import org.eclipse.debug.ui.launchview.internal.launcher.StandaloneLaunchConfigExecutor; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObject; +import org.eclipse.debug.ui.launchview.services.ILaunchObject; import org.eclipse.jface.viewers.StyledString; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.PlatformUI; @@ -69,7 +69,7 @@ public class DebugCoreLaunchObject implements ILaunchObject, Comparable<ILaunchO @Override public void launch(ILaunchMode mode) { - StandaloneLaunchConfigExecutor.launchProcess(config, mode.getIdentifier(), true, false, null); + LaunchConfigurationViewPlugin.getExecutor().launchProcess(config, mode.getIdentifier(), true, false, null); } @Override @@ -117,13 +117,13 @@ public class DebugCoreLaunchObject implements ILaunchObject, Comparable<ILaunchO String launchMode = launch.getLaunchMode(); try { launch.terminate(); - StandaloneLaunchConfigExecutor.launchProcess(config, launchMode, true, false, null); + LaunchConfigurationViewPlugin.getExecutor().launchProcess(config, launchMode, true, false, null); } catch (Exception e) { throw new RuntimeException(NLS.bind(LaunchViewMessages.DebugCoreLaunchObject_CannotRelaunch, config.getName()), e); } } - public static ILaunch findLaunch(String name) { + private static ILaunch findLaunch(String name) { for (ILaunch l : DebugPlugin.getDefault().getLaunchManager().getLaunches()) { if (l.getLaunchConfiguration() == null || l.isTerminated()) { continue; diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreProvider.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreProvider.java index 4b025e602..44f9180a2 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreProvider.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/impl/DebugCoreProvider.java @@ -30,9 +30,9 @@ import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchesListener2; import org.eclipse.debug.ui.launchview.internal.LaunchViewBundleInfo; import org.eclipse.debug.ui.launchview.internal.LaunchViewMessages; -import org.eclipse.debug.ui.launchview.internal.services.AbstractLaunchObjectProvider; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObject; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObjectProvider; +import org.eclipse.debug.ui.launchview.services.AbstractLaunchObjectProvider; +import org.eclipse.debug.ui.launchview.services.ILaunchObject; +import org.eclipse.debug.ui.launchview.services.ILaunchObjectProvider; import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem; diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/launcher/StandaloneLaunchConfigExecutor.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/launcher/StandaloneLaunchConfigExecutor.java index ac4700d6e..4f76c74f0 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/launcher/StandaloneLaunchConfigExecutor.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/launcher/StandaloneLaunchConfigExecutor.java @@ -27,6 +27,7 @@ import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.model.IProcess; +import org.eclipse.debug.ui.launchview.IBackgroundLaunchExecutor; import org.eclipse.debug.ui.launchview.internal.FileLogger; import org.eclipse.debug.ui.launchview.internal.LaunchViewMessages; import org.eclipse.debug.ui.launchview.internal.SpecificLaunchListener; @@ -36,7 +37,7 @@ import org.eclipse.osgi.util.NLS; /** * Wraps launching a certain ILaunchConfiguration into a job */ -public class StandaloneLaunchConfigExecutor { +public class StandaloneLaunchConfigExecutor implements IBackgroundLaunchExecutor { /** * Starts a launch configuration. The return value is only valid if wait is @@ -51,7 +52,8 @@ public class StandaloneLaunchConfigExecutor { * @return process exit value if wait is <code>true</code>, always 0 if wait * is <code>false</code>. -1 in case waiting was interrupted. */ - public static int launchProcess(ILaunchConfiguration launchConf, String mode, boolean build, boolean wait, File logFile) { + @Override + public int launchProcess(ILaunchConfiguration launchConf, String mode, boolean build, boolean wait, File logFile) { StandaloneLauncherJob launch = new StandaloneLauncherJob(launchConf, mode, build, wait, logFile); launch.setPriority(Job.SHORT); diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/LaunchModel.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/ILaunchModel.java index 89d979a3b..3acfa28c9 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/LaunchModel.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/ILaunchModel.java @@ -11,14 +11,12 @@ * Contributors: * SSI Schaefer IT Solutions GmbH *******************************************************************************/ -package org.eclipse.debug.ui.launchview.internal.services; - -import org.eclipse.debug.ui.launchview.internal.model.LaunchObjectContainerModel; +package org.eclipse.debug.ui.launchview.internal.model; /** * Service which controls the lifecycle of the model which the view is based on. */ -public interface LaunchModel { +public interface ILaunchModel { /** * @return the current model. Never <code>null</code>. Always created from diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchObjectModel.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchObjectModel.java index 80bf5d21a..298f5c361 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchObjectModel.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchObjectModel.java @@ -13,7 +13,7 @@ *******************************************************************************/ package org.eclipse.debug.ui.launchview.internal.model; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObject; +import org.eclipse.debug.ui.launchview.services.ILaunchObject; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchViewModel.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchViewModel.java index 4f2fb9251..a017d99c1 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchViewModel.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/model/LaunchViewModel.java @@ -19,8 +19,7 @@ import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObjectProvider; -import org.eclipse.debug.ui.launchview.internal.services.LaunchModel; +import org.eclipse.debug.ui.launchview.services.ILaunchObjectProvider; import org.eclipse.ui.IWorkbench; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; @@ -31,7 +30,7 @@ import org.osgi.service.component.annotations.ReferencePolicy; import org.osgi.service.component.annotations.ReferencePolicyOption; @Component(immediate = true) -public class LaunchViewModel implements LaunchModel { +public class LaunchViewModel implements ILaunchModel { public Set<ILaunchObjectProvider> providers = new TreeSet<>((a, b) -> { int x = Integer.compare(b.getPriority(), a.getPriority()); diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchAction.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchAction.java index 71b24f36f..df876f7d9 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchAction.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchAction.java @@ -23,7 +23,7 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.ui.launchview.internal.LaunchViewBundleInfo; import org.eclipse.debug.ui.launchview.internal.LaunchViewMessages; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObject; +import org.eclipse.debug.ui.launchview.services.ILaunchObject; import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem; diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchViewImpl.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchViewImpl.java index 6cc629b72..3a76ffbe2 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchViewImpl.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/view/LaunchViewImpl.java @@ -38,7 +38,7 @@ import org.eclipse.debug.ui.launchview.internal.model.LaunchObjectContainerModel import org.eclipse.debug.ui.launchview.internal.model.LaunchObjectFavoriteContainerModel; import org.eclipse.debug.ui.launchview.internal.model.LaunchObjectModel; import org.eclipse.debug.ui.launchview.internal.model.LaunchViewModel; -import org.eclipse.debug.ui.launchview.internal.services.ILaunchObject; +import org.eclipse.debug.ui.launchview.services.ILaunchObject; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.di.Focus; import org.eclipse.e4.ui.model.application.ui.basic.MPart; diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/AbstractLaunchObjectProvider.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/services/AbstractLaunchObjectProvider.java index af1e6c31b..c8de59cad 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/AbstractLaunchObjectProvider.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/services/AbstractLaunchObjectProvider.java @@ -11,7 +11,7 @@ * Contributors: * SSI Schaefer IT Solutions GmbH *******************************************************************************/ -package org.eclipse.debug.ui.launchview.internal.services; +package org.eclipse.debug.ui.launchview.services; import java.util.ArrayList; import java.util.List; @@ -19,6 +19,8 @@ import java.util.List; /** * Base class for {@link ILaunchObjectProvider} implementations which require * listeners to be notified on updates. + * + * @since 1.0.2 */ public abstract class AbstractLaunchObjectProvider implements ILaunchObjectProvider { diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/ILaunchObject.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/services/ILaunchObject.java index 279323fca..7dc815338 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/ILaunchObject.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/services/ILaunchObject.java @@ -11,7 +11,7 @@ * Contributors: * SSI Schaefer IT Solutions GmbH *******************************************************************************/ -package org.eclipse.debug.ui.launchview.internal.services; +package org.eclipse.debug.ui.launchview.services; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchMode; @@ -21,6 +21,11 @@ import org.eclipse.swt.graphics.Image; /** * A {@link ILaunchObject} describes a single launch-able "thing". + * <p> + * Instances of this interface are provided by extensions by a custom + * {@link ILaunchObjectProvider} implementation in the extension. + * + * @since 1.0.2 */ public interface ILaunchObject extends Comparable<ILaunchObject> { diff --git a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/ILaunchObjectProvider.java b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/services/ILaunchObjectProvider.java index 70e78ff61..653f42449 100644 --- a/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/internal/services/ILaunchObjectProvider.java +++ b/org.eclipse.debug.ui.launchview/src/org/eclipse/debug/ui/launchview/services/ILaunchObjectProvider.java @@ -11,7 +11,7 @@ * Contributors: * SSI Schaefer IT Solutions GmbH *******************************************************************************/ -package org.eclipse.debug.ui.launchview.internal.services; +package org.eclipse.debug.ui.launchview.services; import java.util.Set; import java.util.function.Supplier; @@ -20,9 +20,14 @@ import org.eclipse.debug.ui.launchview.internal.view.LaunchViewImpl; import org.eclipse.e4.ui.model.application.ui.menu.MMenu; /** - * Provides different {@link ILaunchObject} implementations to the view for - * display. Also allows some interaction with the view by means of an update - * listener and menu contributions. + * Provides different {@link ILaunchObject} instances to the view for display. + * Also allows some interaction with the view by means of an update listener and + * menu contributions. + * <p> + * Contribute extensions to the view by implementing this interface and + * registering it as a {@literal @Component} (declarative service). + * + * @since 1.0.2 */ public interface ILaunchObjectProvider { |