Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2019-03-29 13:29:55 +0000
committerMickael Istria2019-05-08 17:41:38 +0000
commit7d5d115ce594f8f8379b1311a9d63a535f292484 (patch)
tree2b566cf6ecdacd3bd538bd085bd62d3a7c03d784
parent194c7e64b3eb37217a6b880827c4def091ffd888 (diff)
downloadeclipse.platform.debug-7d5d115ce594f8f8379b1311a9d63a535f292484.tar.gz
eclipse.platform.debug-7d5d115ce594f8f8379b1311a9d63a535f292484.tar.xz
eclipse.platform.debug-7d5d115ce594f8f8379b1311a9d63a535f292484.zip
Bug 545544 - Contribute Launch/Debug configuration to Quick AccessI20190509-1800I20190508-1800
Change-Id: I046fb61551c60a54c6a726f32f2f3b01ba129e91 Signed-off-by: Mickael Istria <mistria@redhat.com>
-rw-r--r--org.eclipse.debug.ui/META-INF/MANIFEST.MF4
-rw-r--r--org.eclipse.debug.ui/plugin.xml12
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/AbstractLaunchQuickAccessComputer.java82
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/DebugQuickAccessComputer.java25
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/LaunchQuickAccessElement.java65
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/ProfileQuickAccessComputer.java24
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/RunQuickAccessComputer.java24
7 files changed, 235 insertions, 1 deletions
diff --git a/org.eclipse.debug.ui/META-INF/MANIFEST.MF b/org.eclipse.debug.ui/META-INF/MANIFEST.MF
index 69deca556..6596629d4 100644
--- a/org.eclipse.debug.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.debug.ui/META-INF/MANIFEST.MF
@@ -39,6 +39,7 @@ Export-Package: org.eclipse.debug.internal.ui;
org.eclipse.debug.internal.ui.memory.provisional;x-internal:=true,
org.eclipse.debug.internal.ui.model.elements;x-friends:="org.eclipse.debug.examples.ui,org.eclipse.jdt.debug.ui,org.eclipse.wst.jsdt.debug.ui",
org.eclipse.debug.internal.ui.preferences;x-internal:=true,
+ org.eclipse.debug.internal.ui.quickaccess;x-internal:=true,
org.eclipse.debug.internal.ui.sourcelookup;x-friends:="org.eclipse.debug.tests",
org.eclipse.debug.internal.ui.sourcelookup.browsers;x-internal:=true,
org.eclipse.debug.internal.ui.stringsubstitution;x-friends:="org.eclipse.jdt.debug.ui",
@@ -78,7 +79,7 @@ Export-Package: org.eclipse.debug.internal.ui;
org.eclipse.debug.ui.stringsubstitution
Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
org.eclipse.core.variables;bundle-version="[3.2.800,4.0.0)",
- org.eclipse.ui;bundle-version="[3.111.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.113.0,4.0.0)",
org.eclipse.ui.console;bundle-version="[3.5.300,4.0.0)",
org.eclipse.help;bundle-version="[3.4.0,4.0.0)",
org.eclipse.debug.core;bundle-version="[3.9.0,4.0.0)";visibility:=reexport,
@@ -86,6 +87,7 @@ Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
org.eclipse.ui.editors;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.115.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
org.eclipse.core.filesystem;bundle-version="[1.2.0,2.0.0)",
org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
diff --git a/org.eclipse.debug.ui/plugin.xml b/org.eclipse.debug.ui/plugin.xml
index 03c0cabfe..2c6264e83 100644
--- a/org.eclipse.debug.ui/plugin.xml
+++ b/org.eclipse.debug.ui/plugin.xml
@@ -3316,4 +3316,16 @@ M4 = Platform-specific fourth key
</enablement>
</decorator>
</extension>
+ <extension
+ point="org.eclipse.ui.quickAccess">
+ <computer
+ class="org.eclipse.debug.internal.ui.quickaccess.RunQuickAccessComputer"
+ name="%RunDropDownAction.label"/>
+ <computer
+ class="org.eclipse.debug.internal.ui.quickaccess.DebugQuickAccessComputer"
+ name="%DebugDropDownAction.label"/>
+ <computer
+ class="org.eclipse.debug.internal.ui.quickaccess.ProfileQuickAccessComputer"
+ name="%ProfileDropDownAction.label"/>
+ </extension>
</plugin>
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/AbstractLaunchQuickAccessComputer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/AbstractLaunchQuickAccessComputer.java
new file mode 100644
index 000000000..c4bd6b22b
--- /dev/null
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/AbstractLaunchQuickAccessComputer.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. 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:
+ * - Mickael Istria (Red Hat Inc.)
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.quickaccess;
+
+import java.util.Arrays;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationListener;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.ui.quickaccess.IQuickAccessComputer;
+import org.eclipse.ui.quickaccess.QuickAccessElement;
+
+public abstract class AbstractLaunchQuickAccessComputer implements IQuickAccessComputer {
+
+ protected final ILaunchManager manager;
+ protected final ILaunchMode launchMode;
+
+ private boolean launchConfigurationsChanged = false;
+
+ public AbstractLaunchQuickAccessComputer(ILaunchMode launchMode) {
+ super();
+ manager = DebugPlugin.getDefault().getLaunchManager();
+ this.launchMode = launchMode;
+ manager.addLaunchConfigurationListener(new ILaunchConfigurationListener() {
+ @Override
+ public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
+ launchConfigurationsChanged = true;
+ }
+
+ @Override
+ public void launchConfigurationChanged(ILaunchConfiguration configuration) {
+ launchConfigurationsChanged = true;
+ }
+
+ @Override
+ public void launchConfigurationAdded(ILaunchConfiguration configuration) {
+ launchConfigurationsChanged = true;
+ }
+ });
+ }
+
+ @Override
+ public QuickAccessElement[] computeElements() {
+ try {
+ return Arrays.stream(manager.getLaunchConfigurations()).filter(config -> {
+ try {
+ return config.getType().supportsMode(launchMode.getIdentifier());
+ } catch (CoreException e) {
+ DebugUIPlugin.log(e);
+ return false;
+ }
+ }).map(config -> new LaunchQuickAccessElement(config, launchMode)).toArray(QuickAccessElement[]::new);
+ } catch (CoreException e) {
+ DebugUIPlugin.log(e);
+ return new QuickAccessElement[0];
+ }
+ }
+
+ @Override
+ public void resetState() {
+ }
+
+ @Override
+ public boolean needsRefresh() {
+ return launchConfigurationsChanged;
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/DebugQuickAccessComputer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/DebugQuickAccessComputer.java
new file mode 100644
index 000000000..185bf9fa2
--- /dev/null
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/DebugQuickAccessComputer.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. 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:
+ * - Mickael Istria (Red Hat Inc.)
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.quickaccess;
+
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchManager;
+
+public class DebugQuickAccessComputer extends AbstractLaunchQuickAccessComputer {
+
+ public DebugQuickAccessComputer() {
+ super(DebugPlugin.getDefault().getLaunchManager().getLaunchMode(ILaunchManager.DEBUG_MODE));
+ }
+
+}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/LaunchQuickAccessElement.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/LaunchQuickAccessElement.java
new file mode 100644
index 000000000..0bc425f7d
--- /dev/null
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/LaunchQuickAccessElement.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. 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:
+ * - Mickael Istria (Red Hat Inc.)
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.quickaccess;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.internal.ui.DebugPluginImages;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.quickaccess.QuickAccessElement;
+
+public class LaunchQuickAccessElement extends QuickAccessElement {
+
+ private ILaunchConfiguration launch;
+ private ILaunchMode launchMode;
+
+ public LaunchQuickAccessElement(ILaunchConfiguration launch, ILaunchMode launchMode) {
+ this.launch = launch;
+ this.launchMode = launchMode;
+ }
+
+ @Override
+ public String getLabel() {
+ return launch.getName();
+ }
+
+ @Override
+ public String getMatchLabel() {
+ return getLabel() + ' ' + launchMode.getLabel();
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ try {
+ return DebugPluginImages.getImageDescriptor(launch.getType().getIdentifier());
+ } catch (CoreException e) {
+ DebugUIPlugin.log(e);
+ return null;
+ }
+ }
+
+ @Override
+ public String getId() {
+ return launch.getName() + '/' + launchMode.getIdentifier();
+ }
+
+ @Override
+ public void execute() {
+ DebugUITools.launch(launch, launchMode.getIdentifier());
+ }
+
+}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/ProfileQuickAccessComputer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/ProfileQuickAccessComputer.java
new file mode 100644
index 000000000..01d3f41bb
--- /dev/null
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/ProfileQuickAccessComputer.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. 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:
+ * - Mickael Istria (Red Hat Inc.)
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.quickaccess;
+
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchManager;
+
+public class ProfileQuickAccessComputer extends AbstractLaunchQuickAccessComputer {
+
+ public ProfileQuickAccessComputer() {
+ super(DebugPlugin.getDefault().getLaunchManager().getLaunchMode(ILaunchManager.PROFILE_MODE));
+ }
+}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/RunQuickAccessComputer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/RunQuickAccessComputer.java
new file mode 100644
index 000000000..fced026d0
--- /dev/null
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/quickaccess/RunQuickAccessComputer.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. 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:
+ * - Mickael Istria (Red Hat Inc.)
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.quickaccess;
+
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchManager;
+
+public class RunQuickAccessComputer extends AbstractLaunchQuickAccessComputer {
+
+ public RunQuickAccessComputer() {
+ super(DebugPlugin.getDefault().getLaunchManager().getLaunchMode(ILaunchManager.RUN_MODE));
+ }
+}

Back to the top