mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 565142 - Support using CDT in Eclipse flatpak
- modify ProcessFactory to prefix commands with flatpak-spawn when running under Eclipse flatpak - add new FlatpakLaunch class to dsf.gdb to do a prelaunch of gdbserver and set up remote port settings when debugging local C/C++ application under Eclipse flatpak - add new tab to gdb when running under Eclipse flatpak to allow user to specify gdbserver and port number - add new org.eclipse.cdt.flatpak.launcher plug-in which contains a FlatpakCommandLauncherFactory to handle copying header files from host to workspace when developing under Eclipse flatpak - add new FlatpakCommandLauncher class which simply extends CommandLauncher and can be used for debugging purposes to distinguish from regular command launcher - also add new FlatpakHeaderPreferencePage to allow C/C++ users to delete copied headers if needed - dynamically add the headers preference page from FlatpakCommandLaunchFactory if running under Eclipse flatpak - add new ICommandLaunchFactory3 to add an interface to check if headers have been modified/removed and scanner info refresh is required - add new org.eclipse.cdt.flatpak.launcher-feature - give higher priority to ContainerCommandLauncherFactory so if running on Eclipse flatpak, the flatpak factory won't be chosen if both apply (i.e. building in a container but running on Eclipse flatpak) Change-Id: Id68e60c4dd37c4494af10440231ac7b7bbec8d17
This commit is contained in:
parent
aa5d565542
commit
05c45c0bae
43 changed files with 2966 additions and 17 deletions
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2014 QNX Software Systems and others.
|
||||
* Copyright (c) 2000, 2020 QNX Software Systems and others.
|
||||
*
|
||||
* This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License 2.0
|
||||
|
@ -11,6 +11,7 @@
|
|||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
* Martin Oberhuber (Wind River) - [303083] Split out the Spawner
|
||||
* Red Hat Inc. - add flatpak support
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.utils.spawner;
|
||||
|
||||
|
@ -30,6 +31,7 @@ public class ProcessFactory {
|
|||
static private ProcessFactory instance;
|
||||
private boolean hasSpawner;
|
||||
private Runtime runtime;
|
||||
private final static String FLATPAK_CMD = "flatpak-spawn --host --watch-bus "; //$NON-NLS-1$
|
||||
|
||||
private ProcessFactory() {
|
||||
hasSpawner = false;
|
||||
|
@ -57,44 +59,70 @@ public class ProcessFactory {
|
|||
}
|
||||
|
||||
public Process exec(String cmd) throws IOException {
|
||||
cmd = modifyCmdIfFlatpak(cmd);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmd);
|
||||
return runtime.exec(cmd);
|
||||
}
|
||||
|
||||
public Process exec(String[] cmdarray) throws IOException {
|
||||
cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmdarray);
|
||||
return runtime.exec(cmdarray);
|
||||
}
|
||||
|
||||
public Process exec(String[] cmdarray, String[] envp) throws IOException {
|
||||
cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmdarray, envp);
|
||||
return runtime.exec(cmdarray, envp);
|
||||
}
|
||||
|
||||
public Process exec(String cmd, String[] envp) throws IOException {
|
||||
cmd = modifyCmdIfFlatpak(cmd);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmd, envp);
|
||||
return runtime.exec(cmd, envp);
|
||||
}
|
||||
|
||||
public Process exec(String cmd, String[] envp, File dir) throws IOException {
|
||||
cmd = modifyCmdIfFlatpak(cmd);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmd, envp, dir);
|
||||
return runtime.exec(cmd, envp, dir);
|
||||
}
|
||||
|
||||
public Process exec(String cmdarray[], String[] envp, File dir) throws IOException {
|
||||
cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmdarray, envp, dir);
|
||||
return runtime.exec(cmdarray, envp, dir);
|
||||
}
|
||||
|
||||
public Process exec(String cmdarray[], String[] envp, File dir, PTY pty) throws IOException {
|
||||
cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
|
||||
if (hasSpawner)
|
||||
return new Spawner(cmdarray, envp, dir, pty);
|
||||
throw new UnsupportedOperationException(Messages.Util_exception_cannotCreatePty);
|
||||
}
|
||||
|
||||
private String modifyCmdIfFlatpak(String cmd) {
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
cmd = FLATPAK_CMD + cmd;
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
private String[] modifyCmdArrayIfFlatpak(String[] cmdarray) {
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
String[] newArray = new String[cmdarray.length + 3];
|
||||
System.arraycopy(cmdarray, 0, newArray, 3, cmdarray.length);
|
||||
newArray[0] = "flatpak-spawn"; //$NON-NLS-1$
|
||||
newArray[1] = "--host"; //$NON-NLS-1$
|
||||
newArray[2] = "--watch-bus"; //$NON-NLS-1$
|
||||
cmdarray = newArray;
|
||||
}
|
||||
return cmdarray;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -334,6 +334,14 @@ public class CommandLauncherManager {
|
|||
return includePaths;
|
||||
}
|
||||
|
||||
public boolean checkIfIncludesChanged(ICBuildConfiguration config) {
|
||||
ICommandLauncherFactory factory = getBestFactory(config);
|
||||
if (factory != null && factory instanceof ICommandLauncherFactory3) {
|
||||
return ((ICommandLauncherFactory3) factory).checkIfIncludesChanged(config);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setLanguageSettingEntries(IProject project, List<? extends ICLanguageSettingEntry> entries) {
|
||||
ICommandLauncherFactory factory = getBestFactory(project);
|
||||
if (factory != null) {
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat Inc. 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:
|
||||
* Red Hat Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core;
|
||||
|
||||
import org.eclipse.cdt.core.build.ICBuildConfiguration;
|
||||
|
||||
/**
|
||||
* @since 7.0
|
||||
*
|
||||
*/
|
||||
public interface ICommandLauncherFactory3 {
|
||||
|
||||
/**
|
||||
* Check if any copied header files have changed. This applies when using
|
||||
* Flatpak which needs to copy the host's header files to the workspace.
|
||||
*
|
||||
* @param cfg - C Build configuration to check for
|
||||
* @return true if headers have been removed/changed since last copy, false otherwise
|
||||
*/
|
||||
public boolean checkIfIncludesChanged(ICBuildConfiguration cfg);
|
||||
|
||||
}
|
|
@ -37,6 +37,7 @@ import java.util.Map.Entry;
|
|||
import java.util.Set;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.CommandLauncherManager;
|
||||
import org.eclipse.cdt.core.IConsoleParser;
|
||||
import org.eclipse.cdt.core.IConsoleParser2;
|
||||
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||
|
@ -497,6 +498,13 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
|
|||
}
|
||||
commands.set(0, commandPath.toString());
|
||||
|
||||
// check if includes have been removed/refreshed and scanner info refresh is needed
|
||||
boolean needRefresh = CommandLauncherManager.getInstance().checkIfIncludesChanged(this);
|
||||
IToolChain t = getToolChain();
|
||||
if (t != null) {
|
||||
t.setProperty(NEED_REFRESH, Boolean.valueOf(needRefresh).toString());
|
||||
}
|
||||
|
||||
ProcessBuilder processBuilder = new ProcessBuilder(commands).directory(buildDirectory.toFile());
|
||||
// Override environment variables
|
||||
Map<String, String> environment = processBuilder.environment();
|
||||
|
@ -894,11 +902,9 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
|
|||
|
||||
boolean needScannerRefresh = false;
|
||||
|
||||
if (toolChain instanceof IToolChain2) {
|
||||
String needRefresh = toolChain.getProperty(NEED_REFRESH);
|
||||
if ("true".equals(needRefresh)) { //$NON-NLS-1$
|
||||
needScannerRefresh = true;
|
||||
}
|
||||
String needRefresh = toolChain.getProperty(NEED_REFRESH);
|
||||
if ("true".equals(needRefresh)) { //$NON-NLS-1$
|
||||
needScannerRefresh = true;
|
||||
}
|
||||
|
||||
for (IResource resource : resources) {
|
||||
|
@ -1024,11 +1030,9 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
|
|||
|
||||
boolean needScannerRefresh = false;
|
||||
|
||||
if (toolChain instanceof IToolChain2) {
|
||||
String needRefresh = toolChain.getProperty(NEED_REFRESH);
|
||||
if ("true".equals(needRefresh)) { //$NON-NLS-1$
|
||||
needScannerRefresh = true;
|
||||
}
|
||||
String needRefresh = toolChain.getProperty(NEED_REFRESH);
|
||||
if ("true".equals(needRefresh)) { //$NON-NLS-1$
|
||||
needScannerRefresh = true;
|
||||
}
|
||||
|
||||
for (IResource resource : resources) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008, 2017 QNX Software Systems and others.
|
||||
* Copyright (c) 2008, 2020 QNX Software Systems and others.
|
||||
*
|
||||
* This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License 2.0
|
||||
|
@ -22,6 +22,7 @@ import java.util.Observable;
|
|||
import java.util.Observer;
|
||||
|
||||
import org.eclipse.cdt.debug.ui.AbstractCDebuggerPage;
|
||||
import org.eclipse.cdt.dsf.gdb.IGDBFlatpakLaunchConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
|
||||
|
@ -42,6 +43,7 @@ import org.eclipse.swt.widgets.Button;
|
|||
import org.eclipse.swt.widgets.Combo;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.FileDialog;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.TabFolder;
|
||||
import org.eclipse.swt.widgets.TabItem;
|
||||
|
@ -66,6 +68,12 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
|
|||
|
||||
protected Button fUpdateThreadlistOnSuspend;
|
||||
protected Button fDebugOnFork;
|
||||
|
||||
protected Text fGDBServerCommandText;
|
||||
protected Text fGDBServerPortNumberText;
|
||||
protected Button fRemoteTimeoutEnabledCheckbox;
|
||||
protected Text fRemoteTimeoutValueText;
|
||||
|
||||
/**
|
||||
* Checkbox for using GDB's new-console -- only displayed on Windows. Will be null if unsupported.
|
||||
*/
|
||||
|
@ -118,6 +126,18 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
|
|||
|
||||
if (fSolibBlock != null)
|
||||
fSolibBlock.setDefaults(configuration);
|
||||
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
|
||||
IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
|
||||
configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
|
||||
IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT);
|
||||
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_ENABLED,
|
||||
IGDBLaunchConfigurationConstants.DEBUGGER_REMOTE_TIMEOUT_ENABLED_DEFAULT);
|
||||
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE,
|
||||
IGDBLaunchConfigurationConstants.DEBUGGER_REMOTE_TIMEOUT_VALUE_DEFAULT);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -188,6 +208,23 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
|
|||
fExternalConsole.setSelection(externalConsole);
|
||||
}
|
||||
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
String gdbServerCommand = getStringAttr(configuration, IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
|
||||
IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
|
||||
boolean remoteTimeoutEnabled = getBooleanAttr(configuration,
|
||||
IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_ENABLED,
|
||||
preferenceStore.getBoolean(IGdbDebugPreferenceConstants.PREF_DEFAULT_REMOTE_TIMEOUT_ENABLED));
|
||||
String remoteTimeOut = getStringAttr(configuration,
|
||||
IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE,
|
||||
preferenceStore.getString(IGdbDebugPreferenceConstants.PREF_DEFAULT_REMOTE_TIMEOUT_VALUE));
|
||||
String port = getStringAttr(configuration, IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
|
||||
IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT);
|
||||
fGDBServerCommandText.setText(gdbServerCommand);
|
||||
fRemoteTimeoutEnabledCheckbox.setSelection(remoteTimeoutEnabled);
|
||||
fRemoteTimeoutValueText.setText(remoteTimeOut);
|
||||
fGDBServerPortNumberText.setText(port);
|
||||
}
|
||||
|
||||
updateTracepointModeFromConfig(configuration);
|
||||
|
||||
setInitializing(false);
|
||||
|
@ -289,6 +326,18 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
|
|||
|
||||
if (fSolibBlock != null)
|
||||
fSolibBlock.performApply(configuration);
|
||||
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
|
||||
fGDBServerCommandText.getText());
|
||||
configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
|
||||
fGDBServerPortNumberText.getText());
|
||||
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_ENABLED,
|
||||
fRemoteTimeoutEnabledCheckbox.getSelection());
|
||||
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE,
|
||||
fRemoteTimeoutValueText.getText());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -327,6 +376,87 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
|
|||
public void createTabs(TabFolder tabFolder) {
|
||||
createMainTab(tabFolder);
|
||||
createSolibTab(tabFolder);
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
createFlatpakTab(tabFolder);
|
||||
}
|
||||
}
|
||||
|
||||
public void createFlatpakTab(TabFolder tabFolder) {
|
||||
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
|
||||
tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.flatpak_tab_name")); //$NON-NLS-1$
|
||||
Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
|
||||
((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
|
||||
tabItem.setControl(comp);
|
||||
|
||||
Composite subComp = new Composite(comp, SWT.NULL);
|
||||
subComp.setLayout(new GridLayout(2, true));
|
||||
subComp.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
((GridLayout) subComp.getLayout()).makeColumnsEqualWidth = false;
|
||||
subComp.setFont(tabFolder.getFont());
|
||||
|
||||
Label label = new Label(subComp, SWT.LEFT);
|
||||
label.setText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_name_textfield_label")); //$NON-NLS-1$
|
||||
GridData gd = new GridData();
|
||||
label.setLayoutData(gd);
|
||||
|
||||
fGDBServerCommandText = new Text(subComp, SWT.SINGLE | SWT.BORDER);
|
||||
GridData data = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
fGDBServerCommandText.setLayoutData(data);
|
||||
fGDBServerCommandText.addModifyListener(new ModifyListener() {
|
||||
|
||||
@Override
|
||||
public void modifyText(ModifyEvent evt) {
|
||||
updateLaunchConfigurationDialog();
|
||||
}
|
||||
});
|
||||
label = new Label(subComp, SWT.LEFT);
|
||||
label.setText(LaunchUIMessages.getString("GDBDebuggerPage.port_number_textfield_label")); //$NON-NLS-1$
|
||||
gd = new GridData();
|
||||
label.setLayoutData(gd);
|
||||
|
||||
fGDBServerPortNumberText = new Text(subComp, SWT.SINGLE | SWT.BORDER);
|
||||
data = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
fGDBServerPortNumberText.setLayoutData(data);
|
||||
fGDBServerPortNumberText.addModifyListener(new ModifyListener() {
|
||||
|
||||
@Override
|
||||
public void modifyText(ModifyEvent evt) {
|
||||
updateLaunchConfigurationDialog();
|
||||
}
|
||||
});
|
||||
|
||||
fRemoteTimeoutEnabledCheckbox = new Button(subComp, SWT.CHECK);
|
||||
fRemoteTimeoutEnabledCheckbox
|
||||
.setText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_Settings_Remotetimeout_label")); //$NON-NLS-1$
|
||||
fRemoteTimeoutEnabledCheckbox
|
||||
.setToolTipText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_Settings_Remotetimeout_tooltip")); //$NON-NLS-1$
|
||||
gd = new GridData();
|
||||
fRemoteTimeoutEnabledCheckbox.setLayoutData(gd);
|
||||
fRemoteTimeoutEnabledCheckbox.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
remoteTimeoutEnabledChanged();
|
||||
updateLaunchConfigurationDialog();
|
||||
}
|
||||
});
|
||||
|
||||
fRemoteTimeoutValueText = new Text(subComp, SWT.SINGLE | SWT.BORDER);
|
||||
data = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
fRemoteTimeoutValueText.setLayoutData(data);
|
||||
fRemoteTimeoutValueText
|
||||
.setToolTipText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_Settings_Remotetimeout_tooltip")); //$NON-NLS-1$
|
||||
fRemoteTimeoutValueText.addModifyListener(new ModifyListener() {
|
||||
|
||||
@Override
|
||||
public void modifyText(ModifyEvent evt) {
|
||||
updateLaunchConfigurationDialog();
|
||||
}
|
||||
});
|
||||
remoteTimeoutEnabledChanged();
|
||||
}
|
||||
|
||||
private void remoteTimeoutEnabledChanged() {
|
||||
fRemoteTimeoutValueText.setEnabled(fRemoteTimeoutEnabledCheckbox.getSelection());
|
||||
}
|
||||
|
||||
public void createMainTab(TabFolder tabFolder) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2003, 2018 QNX Software Systems and others.
|
||||
# Copyright (c) 2003, 2020 QNX Software Systems and others.
|
||||
#
|
||||
# This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License 2.0
|
||||
|
@ -37,6 +37,13 @@ GDBDebuggerPage.tracepoint_mode_label=Tracepoint mode:
|
|||
GDBDebuggerPage.tracepoint_mode_fast=Fast
|
||||
GDBDebuggerPage.tracepoint_mode_normal=Normal
|
||||
GDBDebuggerPage.tracepoint_mode_auto=Automatic
|
||||
|
||||
GDBDebuggerPage.flatpak_tab_name=Flatpak
|
||||
GDBDebuggerPage.gdbserver_name_textfield_label=GDB server:
|
||||
GDBDebuggerPage.port_number_textfield_label=Port:
|
||||
GDBDebuggerPage.gdbserver_Settings_Remotetimeout_label=Remote timeout (seconds):
|
||||
GDBDebuggerPage.gdbserver_Settings_Remotetimeout_tooltip=Timeout for the remote target to respond. If unchecked, uses GDB default value. See GDB's help for "set remotetimeout num".
|
||||
|
||||
StandardGDBDebuggerPage.0=Debugger executable must be specified.
|
||||
StandardGDBDebuggerPage.1=GDB Debugger Options
|
||||
StandardGDBDebuggerPage.2=Main
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat.
|
||||
*
|
||||
* 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:
|
||||
* Red Hat - Initial Contribution
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.dsf.gdb;
|
||||
|
||||
import org.eclipse.debug.core.DebugPlugin;
|
||||
|
||||
/**
|
||||
* Flatpak debugging constants
|
||||
*
|
||||
* @since 6.0
|
||||
*/
|
||||
public interface IGDBFlatpakLaunchConstants {
|
||||
|
||||
// Attributes that need to match CDT attribute names
|
||||
public static final String ATTR_GDBSERVER_PORT = DebugPlugin.getUniqueIdentifier() + ".ATTR_GDBSERVER_PORT"; //$NON-NLS-1$
|
||||
public static final String ATTR_GDBSERVER_COMMAND = DebugPlugin.getUniqueIdentifier() + ".ATTR_GDBSERVER_COMMAND"; //$NON-NLS-1$
|
||||
|
||||
public static final String ATTR_GDBSERVER_PORT_DEFAULT = "2345"; //$NON-NLS-1$
|
||||
public static final String ATTR_GDBSERVER_COMMAND_DEFAULT = "gdbserver"; //$NON-NLS-1$
|
||||
|
||||
}
|
|
@ -0,0 +1,310 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat 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:
|
||||
* Red Hat - Initial Contribution
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.dsf.gdb.internal.launching;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
|
||||
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
||||
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.IGDBFlatpakLaunchConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
|
||||
import org.eclipse.cdt.dsf.gdb.launching.LaunchMessages;
|
||||
import org.eclipse.cdt.utils.pty.PTY;
|
||||
import org.eclipse.cdt.utils.spawner.ProcessFactory;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.variables.VariablesPlugin;
|
||||
import org.eclipse.debug.core.DebugException;
|
||||
import org.eclipse.debug.core.DebugPlugin;
|
||||
import org.eclipse.debug.core.ILaunch;
|
||||
import org.eclipse.debug.core.ILaunchConfiguration;
|
||||
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
|
||||
import org.eclipse.debug.core.model.IProcess;
|
||||
|
||||
public class FlatpakLaunch {
|
||||
|
||||
private final static String LOCAL_HOST = "localhost"; //$NON-NLS-1$
|
||||
private final static String FLATPAK_DEBUG_PROCESS_LABEL = "FlatpakDebugProcess_label"; //$NON-NLS-1$
|
||||
|
||||
public FlatpakLaunch() {
|
||||
}
|
||||
|
||||
private String[] getLaunchEnvironment(IProject project, ILaunchConfiguration config) throws CoreException {
|
||||
HashMap<String, String> envMap = new HashMap<>();
|
||||
ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(project, false);
|
||||
if (projDesc != null) {
|
||||
String buildConfigID = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID,
|
||||
""); //$NON-NLS-1$
|
||||
ICConfigurationDescription cfg = null;
|
||||
if (buildConfigID.length() != 0) {
|
||||
cfg = projDesc.getConfigurationById(buildConfigID);
|
||||
}
|
||||
|
||||
// if configuration is null fall-back to active
|
||||
if (cfg == null) {
|
||||
cfg = projDesc.getActiveConfiguration();
|
||||
}
|
||||
|
||||
// Environment variables and inherited vars
|
||||
IEnvironmentVariable[] vars = CCorePlugin.getDefault().getBuildEnvironmentManager().getVariables(cfg, true);
|
||||
for (IEnvironmentVariable var : vars) {
|
||||
envMap.put(var.getName(), var.getValue());
|
||||
}
|
||||
|
||||
// Add variables from build info
|
||||
ICdtVariableManager manager = CCorePlugin.getDefault().getCdtVariableManager();
|
||||
ICdtVariable[] buildVars = manager.getVariables(cfg);
|
||||
for (ICdtVariable var : buildVars) {
|
||||
try {
|
||||
// The project_classpath variable contributed by JDT is
|
||||
// useless for running C/C++ binaries, but it can be lethal
|
||||
// if it has a very large value that exceeds shell limit. See
|
||||
// http://bugs.eclipse.org/bugs/show_bug.cgi?id=408522
|
||||
if (!"project_classpath".equals(var.getName())) {//$NON-NLS-1$
|
||||
String value = manager.resolveValue(var.getStringValue(), "", File.pathSeparator, cfg); //$NON-NLS-1$
|
||||
envMap.put(var.getName(), value);
|
||||
}
|
||||
} catch (CdtVariableException e) {
|
||||
// Some Eclipse dynamic variables can't be resolved
|
||||
// dynamically... we don't care.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Turn it into an envp format
|
||||
List<String> strings = new ArrayList<>(envMap.size());
|
||||
for (Entry<String, String> entry : envMap.entrySet()) {
|
||||
StringBuilder buffer = new StringBuilder(entry.getKey());
|
||||
buffer.append('=').append(entry.getValue());
|
||||
strings.add(buffer.toString());
|
||||
}
|
||||
|
||||
return strings.toArray(new String[strings.size()]);
|
||||
}
|
||||
|
||||
protected Map<String, String> createProcessAttributes() {
|
||||
Map<String, String> attributes = new HashMap<>();
|
||||
|
||||
// Specify that the process factory (GdbProcessFactory) should use
|
||||
// InferiorRuntimeProcess to wrap
|
||||
// the process that we are about to run.
|
||||
// Note that GdbProcessFactory is only used for launches created using
|
||||
// DSF-GDB not CDI
|
||||
attributes.put("org.eclipse.cdt.dsf.gdb.createProcessType" /* IGdbDebugConstants.PROCESS_TYPE_CREATION_ATTR */, //$NON-NLS-1$
|
||||
"org.eclipse.cdt.dsf.gdb.inferiorProcess" /* IGdbDebugConstants.INFERIOR_PROCESS_CREATION_VALUE */); //$NON-NLS-1$
|
||||
|
||||
// Show the exit code of the process in the console title once it has
|
||||
// terminated
|
||||
attributes.put("org.eclipse.cdt.dsf.gdb.inferiorExited" /* IGdbDebugConstants.INFERIOR_EXITED_ATTR */, //$NON-NLS-1$
|
||||
""); //$NON-NLS-1$
|
||||
return attributes;
|
||||
}
|
||||
|
||||
public int prelaunch(ILaunchConfiguration configuration, ILaunch launch, IProgressMonitor monitor)
|
||||
throws CoreException {
|
||||
|
||||
IPath commandPath = getCommandPath(configuration);
|
||||
if (commandPath != null) {
|
||||
String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$
|
||||
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
|
||||
String gdbserverPortNumber = configuration.getAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
|
||||
IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT);
|
||||
|
||||
String gdbserverPort = gdbserverPortNumber + "/tcp"; //$NON-NLS-1$
|
||||
String gdbserverCommand = configuration.getAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
|
||||
IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
|
||||
|
||||
String commandString = commandPath.toPortableString();
|
||||
String commandDir = commandPath.removeLastSegments(1).toPortableString();
|
||||
|
||||
if (commandPath.getDevice() != null) {
|
||||
commandDir = "/" + commandDir.replace(':', '/'); //$NON-NLS-1$
|
||||
commandString = "/" + commandString.replace(':', '/'); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
String commandArguments = ":" + gdbserverPortNumber + " " //$NON-NLS-1$ //$NON-NLS-2$
|
||||
+ spaceEscapify(commandString);
|
||||
|
||||
StringBuilder b = new StringBuilder();
|
||||
|
||||
String[] commandArray = new String[3];
|
||||
commandArray[0] = "/bin/sh"; //$NON-NLS-1$
|
||||
commandArray[1] = "-c"; //$NON-NLS-1$
|
||||
commandArray[2] = b.append(gdbserverCommand).append(' ').append(commandArguments).toString();
|
||||
|
||||
String arguments = getProgramArguments(configuration);
|
||||
if (arguments.trim().length() > 0) {
|
||||
b.append(" "); //$NON-NLS-1$
|
||||
b.append(arguments);
|
||||
}
|
||||
|
||||
String workingDir = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
|
||||
(String) null);
|
||||
// if we don't have a working directory, the default is to use
|
||||
// the project
|
||||
if (workingDir == null && projectName != null) {
|
||||
workingDir = project.getLocation().toOSString();
|
||||
}
|
||||
if (workingDir != null) {
|
||||
IPath workingPath = new Path(workingDir);
|
||||
if (workingPath.getDevice() != null) {
|
||||
workingDir = "/" + workingPath.toPortableString() //$NON-NLS-1$
|
||||
.replace(':', '/');
|
||||
}
|
||||
}
|
||||
|
||||
String[] envp = getLaunchEnvironment(project, configuration);
|
||||
boolean gdbserverStarted = false;
|
||||
try {
|
||||
Process p = ProcessFactory.getFactory().exec(commandArray, envp, new File(workingDir),
|
||||
new PTY(PTY.Mode.TERMINAL));
|
||||
IProcess gdbserver = DebugPlugin.newProcess(launch, p,
|
||||
LaunchMessages.getString(FLATPAK_DEBUG_PROCESS_LABEL), createProcessAttributes());
|
||||
Thread.sleep(200); // pause to allow gdbserver to start
|
||||
try {
|
||||
@SuppressWarnings("unused")
|
||||
int rc = gdbserver.getExitValue(); // verify gdbserver is started
|
||||
} catch (DebugException e2) {
|
||||
gdbserverStarted = true;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
GdbPlugin.log(e);
|
||||
} catch (InterruptedException e) {
|
||||
DebugPlugin.log(e);
|
||||
}
|
||||
|
||||
// if gdbserver started successfully launch the debugger
|
||||
if (gdbserverStarted) {
|
||||
// Let debugger know how gdbserver was started on the remote
|
||||
// container
|
||||
ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
|
||||
wc.setAttribute(IGDBLaunchConfigurationConstants.ATTR_REMOTE_TCP, true);
|
||||
wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_START_MODE,
|
||||
IGDBLaunchConfigurationConstants.DEBUGGER_MODE_REMOTE);
|
||||
wc.setAttribute(IGDBLaunchConfigurationConstants.ATTR_HOST, LOCAL_HOST);
|
||||
wc.setAttribute(IGDBLaunchConfigurationConstants.ATTR_PORT, gdbserverPort);
|
||||
wc.doSave();
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the program arguments and perform substitution.
|
||||
*
|
||||
* @param config
|
||||
* launch configuration
|
||||
* @return argument String
|
||||
* @throws CoreException
|
||||
*/
|
||||
private String getProgramArguments(ILaunchConfiguration config) throws CoreException {
|
||||
String args = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, ""); //$NON-NLS-1$
|
||||
if (args != null && args.length() > 0) {
|
||||
args = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(args);
|
||||
}
|
||||
return args;
|
||||
}
|
||||
|
||||
/**
|
||||
* Form command path using the project and program name.
|
||||
*
|
||||
* @param configuration
|
||||
* @return command path
|
||||
* @throws CoreException
|
||||
*/
|
||||
private IPath getCommandPath(ILaunchConfiguration configuration) throws CoreException {
|
||||
String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$
|
||||
if (projectName.length() > 0) {
|
||||
IProject project = CCorePlugin.getWorkspace().getRoot().getProject(projectName);
|
||||
if (project == null)
|
||||
return null;
|
||||
|
||||
String name = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, ""); //$NON-NLS-1$
|
||||
|
||||
if (name.length() == 0)
|
||||
return null;
|
||||
|
||||
IPath exePath = new Path(name);
|
||||
if (!exePath.isAbsolute()) {
|
||||
IPath location = project.getLocation();
|
||||
if (location == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
exePath = location.append(name);
|
||||
if (!exePath.toFile().exists()) {
|
||||
// Try the old way, which is required to support linked
|
||||
// resources.
|
||||
IFile projFile = null;
|
||||
try {
|
||||
projFile = project.getFile(name);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// thrown if relative path that resolves to a root file
|
||||
// ("..\somefile")
|
||||
}
|
||||
if (projFile == null || !projFile.exists()) {
|
||||
return null;
|
||||
} else {
|
||||
exePath = projFile.getLocation();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!exePath.toFile().exists()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!exePath.toFile().isFile()) {
|
||||
return null;
|
||||
}
|
||||
return exePath;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String spaceEscapify(String inputString) {
|
||||
if (inputString == null)
|
||||
return null;
|
||||
|
||||
return inputString.replaceAll(" ", "\\\\ "); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
|
||||
public static IProject getProject(ILaunchConfiguration configuration) throws CoreException {
|
||||
// TODO - make sure this is really the correct project
|
||||
return configuration.getMappedResources()[0].getProject();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008, 2016 QNX Software Systems and others.
|
||||
* Copyright (c) 2008, 2020 QNX Software Systems and others.
|
||||
*
|
||||
* This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License 2.0
|
||||
|
@ -20,6 +20,7 @@
|
|||
* Marc-Andre Laperle - Bug 382462
|
||||
* Marc Khouzam (Ericsson - Show GDB version in debug view node label (Bug 455408)
|
||||
* Samuel Hultgren (STMicroelectronics) - Bug 533769
|
||||
* Red Hat Inc. - add Flatpak support
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.dsf.gdb.launching;
|
||||
|
||||
|
@ -37,6 +38,7 @@ import org.eclipse.cdt.dsf.debug.service.IDsfDebugServicesFactory;
|
|||
import org.eclipse.cdt.dsf.debug.sourcelookup.DsfSourceLookupDirector;
|
||||
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
|
||||
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
|
||||
import org.eclipse.cdt.dsf.gdb.internal.launching.FlatpakLaunch;
|
||||
import org.eclipse.cdt.dsf.gdb.service.GdbDebugServicesFactory;
|
||||
import org.eclipse.cdt.dsf.gdb.service.SessionType;
|
||||
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
|
||||
|
@ -116,6 +118,13 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
|
|||
return;
|
||||
}
|
||||
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
FlatpakLaunch flatpak = new FlatpakLaunch();
|
||||
if (flatpak.prelaunch(config, l, monitor) != 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
SessionType sessionType = LaunchUtils.getSessionType(config);
|
||||
boolean attach = LaunchUtils.getIsAttach(config);
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2008, 2018 QNX Software Systems and others.
|
||||
# Copyright (c) 2008, 2020 QNX Software Systems and others.
|
||||
#
|
||||
# This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License 2.0
|
||||
|
@ -184,3 +184,5 @@ ServicesLaunchSequence_0=Initializing debugger services
|
|||
ServicesLaunchSequence_1=Aborting debugger services initialization
|
||||
|
||||
InferiorRuntimeProcess_ExitValue=(exit value: {0})\u0020
|
||||
|
||||
FlatpakDebugProcess_label=Flatpak Debug
|
||||
|
|
|
@ -99,8 +99,9 @@
|
|||
name="%ContainerCommandLauncherFactory.name"
|
||||
point="org.eclipse.cdt.core.CommandLauncherFactory">
|
||||
<factory
|
||||
id="ContainerCommandLauncherFactory"
|
||||
class="org.eclipse.cdt.docker.launcher.ContainerCommandLauncherFactory">
|
||||
class="org.eclipse.cdt.docker.launcher.ContainerCommandLauncherFactory"
|
||||
id="ContainerCommandLauncherFactory"
|
||||
priority="5">
|
||||
</factory>
|
||||
</extension>
|
||||
<extension
|
||||
|
|
17
launch/org.eclipse.cdt.flatpak.launcher-feature/.project
Normal file
17
launch/org.eclipse.cdt.flatpak.launcher-feature/.project
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.cdt.flatpak.launcher-feature</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,2 @@
|
|||
bin.includes = feature.xml,\
|
||||
feature.properties
|
|
@ -0,0 +1,22 @@
|
|||
#################################################################################
|
||||
# Copyright (c) 2020 Red Hat, Inc.
|
||||
#
|
||||
# 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:
|
||||
# Red Hat Incorporated - initial API and implementation
|
||||
#################################################################################
|
||||
featureName=C/C++ Flatpak Launch Support
|
||||
description=Plugins for launching C/C++ applications in Eclipse Flatpak.
|
||||
provider=Eclipse CDT
|
||||
copyright=\
|
||||
Copyright (c) 2020 Red Hat, Inc. and others.\n\
|
||||
This program and the accompanying materials\n\
|
||||
are made available under the terms of the Eclipse Public License 2.0\n\
|
||||
which accompanies this distribution, and is available at\n\
|
||||
https://www.eclipse.org/legal/epl-2.0/
|
29
launch/org.eclipse.cdt.flatpak.launcher-feature/feature.xml
Normal file
29
launch/org.eclipse.cdt.flatpak.launcher-feature/feature.xml
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.cdt.flatpak.launcher"
|
||||
label="%featureName"
|
||||
version="10.0.0.qualifier"
|
||||
provider-name="%provider"
|
||||
license-feature="org.eclipse.license"
|
||||
license-feature-version="0.0.0">
|
||||
|
||||
<description url="http://www.example.com/description">
|
||||
%description
|
||||
</description>
|
||||
|
||||
<copyright>
|
||||
%copyright
|
||||
</copyright>
|
||||
|
||||
<license url="%licenseURL">
|
||||
%license
|
||||
</license>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.cdt.flatpak.launcher"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
17
launch/org.eclipse.cdt.flatpak.launcher-feature/pom.xml
Normal file
17
launch/org.eclipse.cdt.flatpak.launcher-feature/pom.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.cdt</groupId>
|
||||
<artifactId>cdt-parent</artifactId>
|
||||
<version>10.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<groupId>org.eclipse.cdt.features</groupId>
|
||||
<artifactId>org.eclipse.cdt.flatpak.launcher</artifactId>
|
||||
<packaging>eclipse-feature</packaging>
|
||||
</project>
|
7
launch/org.eclipse.cdt.flatpak.launcher/.classpath
Normal file
7
launch/org.eclipse.cdt.flatpak.launcher/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
1
launch/org.eclipse.cdt.flatpak.launcher/.gitignore
vendored
Normal file
1
launch/org.eclipse.cdt.flatpak.launcher/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/bin/
|
34
launch/org.eclipse.cdt.flatpak.launcher/.project
Normal file
34
launch/org.eclipse.cdt.flatpak.launcher/.project
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.cdt.flatpak.launcher</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,486 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
|
||||
org.eclipse.jdt.core.builder.duplicateResourceTask=warning
|
||||
org.eclipse.jdt.core.builder.invalidClasspath=abort
|
||||
org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
|
||||
org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
|
||||
org.eclipse.jdt.core.circularClasspath=error
|
||||
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
|
||||
org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
|
||||
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
|
||||
org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
|
||||
org.eclipse.jdt.core.codeComplete.argumentPrefixes=
|
||||
org.eclipse.jdt.core.codeComplete.argumentSuffixes=
|
||||
org.eclipse.jdt.core.codeComplete.fieldPrefixes=
|
||||
org.eclipse.jdt.core.codeComplete.fieldSuffixes=
|
||||
org.eclipse.jdt.core.codeComplete.localPrefixes=
|
||||
org.eclipse.jdt.core.codeComplete.localSuffixes=
|
||||
org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
|
||||
org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
|
||||
org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
|
||||
org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
|
||||
org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
|
||||
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
|
||||
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
|
||||
org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
|
||||
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
|
||||
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
|
||||
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
|
||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=11
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
|
||||
org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
|
||||
org.eclipse.jdt.core.compiler.problem.APILeak=warning
|
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deadCode=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
|
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
|
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
|
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
|
||||
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
|
||||
org.eclipse.jdt.core.compiler.problem.nullReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
|
||||
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
|
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
|
||||
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
|
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=11
|
||||
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
|
||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.align_with_spaces=false
|
||||
org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
|
||||
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
|
||||
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
|
||||
org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||
org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_block_comments=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_header=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_html=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_line_comments=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_source_code=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
|
||||
org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.comment.line_length=80
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
|
||||
org.eclipse.jdt.core.formatter.compact_else_if=true
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation=2
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
|
||||
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
|
||||
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_empty_lines=false
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||
org.eclipse.jdt.core.formatter.indentation.size=4
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
|
||||
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
|
||||
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
|
||||
org.eclipse.jdt.core.formatter.lineSplit=120
|
||||
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
|
||||
org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
|
||||
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
|
||||
org.eclipse.jdt.core.formatter.tabulation.char=tab
|
||||
org.eclipse.jdt.core.formatter.tabulation.size=4
|
||||
org.eclipse.jdt.core.formatter.use_on_off_tags=true
|
||||
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
||||
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
|
||||
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
|
||||
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
|
||||
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
|
||||
org.eclipse.jdt.core.incompleteClasspath=error
|
||||
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
|
|
@ -0,0 +1,3 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
|
||||
org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
|
|
@ -0,0 +1,133 @@
|
|||
cleanup.add_default_serial_version_id=true
|
||||
cleanup.add_generated_serial_version_id=false
|
||||
cleanup.add_missing_annotations=true
|
||||
cleanup.add_missing_deprecated_annotations=true
|
||||
cleanup.add_missing_methods=false
|
||||
cleanup.add_missing_nls_tags=false
|
||||
cleanup.add_missing_override_annotations=true
|
||||
cleanup.add_missing_override_annotations_interface_methods=true
|
||||
cleanup.add_serial_version_id=false
|
||||
cleanup.always_use_blocks=true
|
||||
cleanup.always_use_parentheses_in_expressions=false
|
||||
cleanup.always_use_this_for_non_static_field_access=false
|
||||
cleanup.always_use_this_for_non_static_method_access=false
|
||||
cleanup.convert_functional_interfaces=false
|
||||
cleanup.convert_to_enhanced_for_loop=false
|
||||
cleanup.correct_indentation=false
|
||||
cleanup.format_source_code=true
|
||||
cleanup.format_source_code_changes_only=false
|
||||
cleanup.insert_inferred_type_arguments=false
|
||||
cleanup.make_local_variable_final=true
|
||||
cleanup.make_parameters_final=false
|
||||
cleanup.make_private_fields_final=true
|
||||
cleanup.make_type_abstract_if_missing_method=false
|
||||
cleanup.make_variable_declarations_final=false
|
||||
cleanup.never_use_blocks=false
|
||||
cleanup.never_use_parentheses_in_expressions=true
|
||||
cleanup.organize_imports=true
|
||||
cleanup.qualify_static_field_accesses_with_declaring_class=false
|
||||
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
|
||||
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
|
||||
cleanup.qualify_static_member_accesses_with_declaring_class=false
|
||||
cleanup.qualify_static_method_accesses_with_declaring_class=false
|
||||
cleanup.remove_private_constructors=true
|
||||
cleanup.remove_redundant_modifiers=false
|
||||
cleanup.remove_redundant_semicolons=true
|
||||
cleanup.remove_redundant_type_arguments=true
|
||||
cleanup.remove_trailing_whitespaces=true
|
||||
cleanup.remove_trailing_whitespaces_all=true
|
||||
cleanup.remove_trailing_whitespaces_ignore_empty=false
|
||||
cleanup.remove_unnecessary_casts=true
|
||||
cleanup.remove_unnecessary_nls_tags=false
|
||||
cleanup.remove_unused_imports=true
|
||||
cleanup.remove_unused_local_variables=false
|
||||
cleanup.remove_unused_private_fields=true
|
||||
cleanup.remove_unused_private_members=false
|
||||
cleanup.remove_unused_private_methods=true
|
||||
cleanup.remove_unused_private_types=true
|
||||
cleanup.sort_members=false
|
||||
cleanup.sort_members_all=false
|
||||
cleanup.use_anonymous_class_creation=false
|
||||
cleanup.use_blocks=false
|
||||
cleanup.use_blocks_only_for_return_and_throw=false
|
||||
cleanup.use_lambda=true
|
||||
cleanup.use_parentheses_in_expressions=false
|
||||
cleanup.use_this_for_non_static_field_access=false
|
||||
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
|
||||
cleanup.use_this_for_non_static_method_access=false
|
||||
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
|
||||
cleanup_profile=_CDT
|
||||
cleanup_settings_version=2
|
||||
eclipse.preferences.version=1
|
||||
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
|
||||
formatter_profile=_CDT
|
||||
formatter_settings_version=14
|
||||
internal.default.compliance=user
|
||||
org.eclipse.jdt.ui.exception.name=e
|
||||
org.eclipse.jdt.ui.gettersetter.use.is=true
|
||||
org.eclipse.jdt.ui.ignorelowercasenames=true
|
||||
org.eclipse.jdt.ui.importorder=java;javax;org;com;
|
||||
org.eclipse.jdt.ui.keywordthis=false
|
||||
org.eclipse.jdt.ui.ondemandthreshold=1000
|
||||
org.eclipse.jdt.ui.overrideannotation=true
|
||||
org.eclipse.jdt.ui.staticondemandthreshold=1000
|
||||
org.eclipse.jdt.ui.text.custom_code_templates=
|
||||
sp_cleanup.add_default_serial_version_id=true
|
||||
sp_cleanup.add_generated_serial_version_id=false
|
||||
sp_cleanup.add_missing_annotations=true
|
||||
sp_cleanup.add_missing_deprecated_annotations=true
|
||||
sp_cleanup.add_missing_methods=false
|
||||
sp_cleanup.add_missing_nls_tags=false
|
||||
sp_cleanup.add_missing_override_annotations=true
|
||||
sp_cleanup.add_missing_override_annotations_interface_methods=true
|
||||
sp_cleanup.add_serial_version_id=false
|
||||
sp_cleanup.always_use_blocks=true
|
||||
sp_cleanup.always_use_parentheses_in_expressions=false
|
||||
sp_cleanup.always_use_this_for_non_static_field_access=false
|
||||
sp_cleanup.always_use_this_for_non_static_method_access=false
|
||||
sp_cleanup.convert_functional_interfaces=false
|
||||
sp_cleanup.convert_to_enhanced_for_loop=false
|
||||
sp_cleanup.correct_indentation=false
|
||||
sp_cleanup.format_source_code=true
|
||||
sp_cleanup.format_source_code_changes_only=false
|
||||
sp_cleanup.insert_inferred_type_arguments=false
|
||||
sp_cleanup.make_local_variable_final=true
|
||||
sp_cleanup.make_parameters_final=false
|
||||
sp_cleanup.make_private_fields_final=true
|
||||
sp_cleanup.make_type_abstract_if_missing_method=false
|
||||
sp_cleanup.make_variable_declarations_final=false
|
||||
sp_cleanup.never_use_blocks=false
|
||||
sp_cleanup.never_use_parentheses_in_expressions=true
|
||||
sp_cleanup.on_save_use_additional_actions=true
|
||||
sp_cleanup.organize_imports=true
|
||||
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
|
||||
sp_cleanup.remove_private_constructors=true
|
||||
sp_cleanup.remove_redundant_modifiers=false
|
||||
sp_cleanup.remove_redundant_semicolons=true
|
||||
sp_cleanup.remove_redundant_type_arguments=true
|
||||
sp_cleanup.remove_trailing_whitespaces=true
|
||||
sp_cleanup.remove_trailing_whitespaces_all=true
|
||||
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
|
||||
sp_cleanup.remove_unnecessary_casts=true
|
||||
sp_cleanup.remove_unnecessary_nls_tags=false
|
||||
sp_cleanup.remove_unused_imports=true
|
||||
sp_cleanup.remove_unused_local_variables=false
|
||||
sp_cleanup.remove_unused_private_fields=true
|
||||
sp_cleanup.remove_unused_private_members=false
|
||||
sp_cleanup.remove_unused_private_methods=true
|
||||
sp_cleanup.remove_unused_private_types=true
|
||||
sp_cleanup.sort_members=false
|
||||
sp_cleanup.sort_members_all=false
|
||||
sp_cleanup.use_anonymous_class_creation=false
|
||||
sp_cleanup.use_blocks=false
|
||||
sp_cleanup.use_blocks_only_for_return_and_throw=false
|
||||
sp_cleanup.use_lambda=true
|
||||
sp_cleanup.use_parentheses_in_expressions=false
|
||||
sp_cleanup.use_this_for_non_static_field_access=false
|
||||
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
|
||||
sp_cleanup.use_this_for_non_static_method_access=false
|
||||
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
|
|
@ -0,0 +1,184 @@
|
|||
ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
|
||||
ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
|
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
|
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
|
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
|
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
|
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
|
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
|
||||
API_USE_SCAN_FIELD_SEVERITY=Error
|
||||
API_USE_SCAN_METHOD_SEVERITY=Error
|
||||
API_USE_SCAN_TYPE_SEVERITY=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
|
||||
CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
|
||||
CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
|
||||
CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
|
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
|
||||
ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
|
||||
ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
|
||||
ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
|
||||
ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
|
||||
ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
|
||||
ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
|
||||
ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
|
||||
ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
|
||||
ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
|
||||
ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
|
||||
FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
|
||||
FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
|
||||
FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
|
||||
FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
|
||||
FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
|
||||
ILLEGAL_EXTEND=Warning
|
||||
ILLEGAL_IMPLEMENT=Warning
|
||||
ILLEGAL_INSTANTIATE=Warning
|
||||
ILLEGAL_OVERRIDE=Warning
|
||||
ILLEGAL_REFERENCE=Warning
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
|
||||
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
|
||||
INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
|
||||
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
|
||||
INVALID_ANNOTATION=Ignore
|
||||
INVALID_JAVADOC_TAG=Error
|
||||
INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
|
||||
LEAK_EXTEND=Warning
|
||||
LEAK_FIELD_DECL=Warning
|
||||
LEAK_IMPLEMENT=Warning
|
||||
LEAK_METHOD_PARAM=Warning
|
||||
LEAK_METHOD_RETURN_TYPE=Warning
|
||||
METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
|
||||
METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
|
||||
METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
|
||||
METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
|
||||
METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
|
||||
METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
|
||||
METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
|
||||
METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
|
||||
METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
|
||||
METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
|
||||
METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
|
||||
METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
|
||||
MISSING_EE_DESCRIPTIONS=Warning
|
||||
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
|
||||
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
|
||||
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
|
||||
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
|
||||
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
|
||||
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
|
||||
UNUSED_PROBLEM_FILTERS=Warning
|
||||
automatically_removed_unused_problem_filters=false
|
||||
changed_execution_env=Error
|
||||
eclipse.preferences.version=1
|
||||
incompatible_api_component_version=Error
|
||||
incompatible_api_component_version_include_major_without_breaking_change=Disabled
|
||||
incompatible_api_component_version_include_minor_without_api_change=Disabled
|
||||
incompatible_api_component_version_report_major_without_breaking_change=Warning
|
||||
incompatible_api_component_version_report_minor_without_api_change=Warning
|
||||
invalid_since_tag_version=Error
|
||||
malformed_since_tag=Error
|
||||
missing_since_tag=Error
|
||||
report_api_breakage_when_major_version_incremented=Disabled
|
||||
report_resolution_errors_api_component=Warning
|
|
@ -0,0 +1,35 @@
|
|||
compilers.f.unresolved-features=1
|
||||
compilers.f.unresolved-plugins=1
|
||||
compilers.incompatible-environment=1
|
||||
compilers.p.build=1
|
||||
compilers.p.build.bin.includes=1
|
||||
compilers.p.build.encodings=2
|
||||
compilers.p.build.java.compiler=2
|
||||
compilers.p.build.java.compliance=1
|
||||
compilers.p.build.missing.output=2
|
||||
compilers.p.build.output.library=1
|
||||
compilers.p.build.source.library=1
|
||||
compilers.p.build.src.includes=1
|
||||
compilers.p.deprecated=1
|
||||
compilers.p.discouraged-class=1
|
||||
compilers.p.internal=1
|
||||
compilers.p.missing-packages=2
|
||||
compilers.p.missing-version-export-package=2
|
||||
compilers.p.missing-version-import-package=2
|
||||
compilers.p.missing-version-require-bundle=2
|
||||
compilers.p.no-required-att=0
|
||||
compilers.p.no.automatic.module=1
|
||||
compilers.p.not-externalized-att=1
|
||||
compilers.p.service.component.without.lazyactivation=1
|
||||
compilers.p.unknown-attribute=1
|
||||
compilers.p.unknown-class=1
|
||||
compilers.p.unknown-element=1
|
||||
compilers.p.unknown-identifier=1
|
||||
compilers.p.unknown-resource=1
|
||||
compilers.p.unresolved-ex-points=0
|
||||
compilers.p.unresolved-import=0
|
||||
compilers.s.create-docs=false
|
||||
compilers.s.doc-folder=doc
|
||||
compilers.s.open-tags=1
|
||||
compilers.use-project=true
|
||||
eclipse.preferences.version=1
|
34
launch/org.eclipse.cdt.flatpak.launcher/META-INF/MANIFEST.MF
Normal file
34
launch/org.eclipse.cdt.flatpak.launcher/META-INF/MANIFEST.MF
Normal file
|
@ -0,0 +1,34 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %Plugin.name
|
||||
Bundle-SymbolicName: org.eclipse.cdt.flatpak.launcher;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: org.eclipse.cdt.flatpak.launcher.FlatpakLaunchPlugin
|
||||
Bundle-Vendor: %Plugin.vendor
|
||||
Bundle-Localization: plugin
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
org.eclipse.cdt.launch;bundle-version="7.1.0",
|
||||
org.eclipse.debug.core;bundle-version="3.9.1",
|
||||
org.eclipse.debug.ui;bundle-version="3.10.1",
|
||||
org.eclipse.cdt.core;bundle-version="6.5.0",
|
||||
org.eclipse.cdt.debug.core;bundle-version="7.5.0",
|
||||
org.eclipse.cdt.ui;bundle-version="5.8.0",
|
||||
org.eclipse.ui.ide;bundle-version="3.10.1",
|
||||
org.eclipse.cdt.debug.ui;bundle-version="7.5.0",
|
||||
org.eclipse.cdt.dsf.gdb;bundle-version="4.6.0",
|
||||
org.eclipse.cdt.dsf.gdb.ui;bundle-version="2.4.0",
|
||||
org.eclipse.core.variables,
|
||||
org.eclipse.cdt.managedbuilder.ui,
|
||||
org.eclipse.cdt.managedbuilder.core,
|
||||
org.eclipse.core.databinding.observable,
|
||||
org.eclipse.core.databinding.beans,
|
||||
org.eclipse.jface.databinding,
|
||||
org.eclipse.core.databinding;bundle-version="1.6.0",
|
||||
org.eclipse.core.databinding.property;bundle-version="1.6.0",
|
||||
org.eclipse.launchbar.ui;bundle-version="2.2.0",
|
||||
com.google.gson
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-11
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: org.eclipse.cdt.flatpak.launcher
|
||||
Automatic-Module-Name: org.eclipse.cdt.flatpak.launcher
|
36
launch/org.eclipse.cdt.flatpak.launcher/about.html
Normal file
36
launch/org.eclipse.cdt.flatpak.launcher/about.html
Normal file
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>November 30, 2017</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>
|
||||
The Eclipse Foundation makes available all content in this plug-in
|
||||
("Content"). Unless otherwise indicated below, the Content
|
||||
is provided to you under the terms and conditions of the Eclipse
|
||||
Public License Version 2.0 ("EPL"). A copy of the EPL is
|
||||
available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you did not receive this Content directly from the Eclipse
|
||||
Foundation, the Content is being redistributed by another party
|
||||
("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the
|
||||
Redistributor's license that was provided with the Content. If no such
|
||||
license exists, contact the Redistributor. Unless otherwise indicated
|
||||
below, the terms and conditions of the EPL still apply to any source
|
||||
code in the Content and such source code may be obtained at <a
|
||||
href="http://www.eclipse.org/">http://www.eclipse.org</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
24
launch/org.eclipse.cdt.flatpak.launcher/about.ini
Normal file
24
launch/org.eclipse.cdt.flatpak.launcher/about.ini
Normal file
|
@ -0,0 +1,24 @@
|
|||
# about.ini
|
||||
# contains information about a feature
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# "%key" are externalized strings defined in about.properties
|
||||
# This file does not need to be translated.
|
||||
|
||||
# Property "aboutText" contains blurb for "About" dialog (translated)
|
||||
aboutText=%blurb
|
||||
|
||||
# Property "windowImage" contains path to window icon (16x16)
|
||||
# needed for primary features only
|
||||
|
||||
# Property "featureImage" contains path to feature image (32x32)
|
||||
featureImage=cdt_logo_icon32.png
|
||||
|
||||
# Property "aboutImage" contains path to product image (500x330 or 115x164)
|
||||
# needed for primary features only
|
||||
|
||||
# Property "appName" contains name of the application (translated)
|
||||
# needed for primary features only
|
||||
|
||||
# Property "welcomePerspective" contains the id of the perspective in which the
|
||||
# welcome page is to be opened.
|
||||
# optional
|
9
launch/org.eclipse.cdt.flatpak.launcher/about.mappings
Normal file
9
launch/org.eclipse.cdt.flatpak.launcher/about.mappings
Normal file
|
@ -0,0 +1,9 @@
|
|||
# about.mappings
|
||||
# contains fill-ins for about.properties
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# This file does not need to be translated.
|
||||
|
||||
# The following should contain the build version.
|
||||
# e.g. "0=20200106-1728"
|
||||
# This value will be added automatically via the build scripts
|
||||
0=${buildId}
|
32
launch/org.eclipse.cdt.flatpak.launcher/about.properties
Normal file
32
launch/org.eclipse.cdt.flatpak.launcher/about.properties
Normal file
|
@ -0,0 +1,32 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2020, 2020 Contributors to the Eclipse Foundation
|
||||
#
|
||||
# See the NOTICE file(s) distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
#
|
||||
# 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
|
||||
###############################################################################
|
||||
# about.properties
|
||||
# contains externalized strings for about.ini
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# fill-ins are supplied by about.mappings
|
||||
# This file should be translated.
|
||||
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
|
||||
|
||||
|
||||
blurb=C/C++ Flatpak Launch Support\n\
|
||||
\n\
|
||||
Version: {featureVersion}\n\
|
||||
Build id: {0}\n\
|
||||
\n\
|
||||
Copyright (c) 2020, 2020 Contributors to the Eclipse Foundation
|
||||
\n\
|
||||
See the NOTICE file(s) distributed with this work for additional\n\
|
||||
information regarding copyright ownership.\n\
|
||||
\n\
|
||||
Visit http://www.eclipse.org/cdt
|
26
launch/org.eclipse.cdt.flatpak.launcher/build.properties
Normal file
26
launch/org.eclipse.cdt.flatpak.launcher/build.properties
Normal file
|
@ -0,0 +1,26 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2020 Red Hat Inc. 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:
|
||||
# Red Hat Inc. - initial API and implementation
|
||||
###############################################################################
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = plugin.xml,\
|
||||
META-INF/,\
|
||||
.,\
|
||||
plugin.properties,\
|
||||
about.html,\
|
||||
cdt_logo_icon32.png,\
|
||||
about.properties,\
|
||||
about.mappings,\
|
||||
about.ini,\
|
||||
schema/
|
||||
src.includes = about.html
|
BIN
launch/org.eclipse.cdt.flatpak.launcher/cdt_logo_icon32.png
Normal file
BIN
launch/org.eclipse.cdt.flatpak.launcher/cdt_logo_icon32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
19
launch/org.eclipse.cdt.flatpak.launcher/plugin.properties
Normal file
19
launch/org.eclipse.cdt.flatpak.launcher/plugin.properties
Normal file
|
@ -0,0 +1,19 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2020 Red Hat Inc. 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:
|
||||
# Red Hat Inc. - initial API and implementation
|
||||
###############################################################################
|
||||
Plugin.name=C/C++ Flatpak Launch Plug-in
|
||||
Plugin.vendor=Eclipse CDT
|
||||
Delegate.name=C/C++ Flatpak Launcher
|
||||
Delegate.desc=This launcher supports C/C++ development on Eclipse flatpak.
|
||||
FlatpakHeaderPreferencePage.name=Workspace Cached Headers
|
||||
FlatpakPreferencePages.name=Flatpak Preference Pages
|
88
launch/org.eclipse.cdt.flatpak.launcher/plugin.xml
Normal file
88
launch/org.eclipse.cdt.flatpak.launcher/plugin.xml
Normal file
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse version="3.0"?>
|
||||
<plugin
|
||||
>
|
||||
<extension-point id="flatpakPreferencePages" name="%FlatpakPreferencePages.name" schema="schema/flatpakPreferencePages.exsd"/>
|
||||
<!--
|
||||
<extension
|
||||
point="org.eclipse.debug.core.launchConfigurationTypes">
|
||||
<launchConfigurationType
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
|
||||
name="%LaunchConfigurationType.name"
|
||||
public="true">
|
||||
</launchConfigurationType>
|
||||
</extension>
|
||||
<extension point="org.eclipse.debug.core.launchDelegates">
|
||||
<launchDelegate
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
|
||||
type="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
|
||||
modes="run,debug"
|
||||
name="%LaunchConfigurationType.name"
|
||||
delegate="org.eclipse.cdt.internal.flatpak.launcher.FlatpakLaunchConfigurationDelegate"
|
||||
delegateDescription="%Delegate.desc"
|
||||
sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
|
||||
sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
|
||||
</launchDelegate>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.debug.ui.launchConfigurationTabGroups">
|
||||
<launchConfigurationTabGroup
|
||||
class="org.eclipse.cdt.internal.flatpak.launcher.FlatpakLaunchConfigurationTabGroup"
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchConfigurationTabGroup"
|
||||
type="org.eclipse.cdt.flatpak.launcher.launchConfigurationType">
|
||||
</launchConfigurationTabGroup>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.core.runtime.preferences">
|
||||
<initializer
|
||||
class="org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.PreferenceInitializer">
|
||||
</initializer>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.debug.ui.launchConfigurationTypeImages">
|
||||
<launchConfigurationTypeImage
|
||||
configTypeID="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
|
||||
icon="icons/c_app.gif"
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchConfigurationTypeImage1">
|
||||
</launchConfigurationTypeImage>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.launchbar.core.launchTargetTypes">
|
||||
<launchTargetType
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchTargetType.flatpak"
|
||||
provider="org.eclipse.cdt.flatpak.launcher.FlatpakTargetTypeProvider">
|
||||
</launchTargetType>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.launchbar.ui.launchTargetTypeUI">
|
||||
<launchTargetTypeUI
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchTargetType.flatpak"
|
||||
labelProvider="org.eclipse.cdt.internal.flatpak.launcher.ui.launchbar.FlatpakTargetLabelProvider">
|
||||
</launchTargetTypeUI>
|
||||
<wizard2
|
||||
class="org.eclipse.cdt.internal.flatpak.launcher.ui.launchbar.NewFlatpakTargetWizard"
|
||||
icon="icons/repository-middle.gif"
|
||||
id="org.eclipse.cdt.flatpak.launcher.launchTargetType.flatpak"
|
||||
name="%ContainerTarget.name">
|
||||
</wizard2>
|
||||
</extension>
|
||||
-->
|
||||
<extension
|
||||
point="org.eclipse.cdt.core.CommandLauncherFactory">
|
||||
<factory
|
||||
class="org.eclipse.cdt.flatpak.launcher.FlatpakCommandLauncherFactory"
|
||||
id="FlatpakCommandLauncherFactory"
|
||||
priority="0">
|
||||
</factory>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.cdt.flatpak.launcher.flatpakPreferencePages">
|
||||
<page
|
||||
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
||||
class="org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.FlatpakHeaderPreferencePage"
|
||||
id="org.eclipse.cdt.flatpak.launcher.page2"
|
||||
name="%FlatpakHeaderPreferencePage.name">
|
||||
</page>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
|
@ -0,0 +1,175 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Schema file written by PDE -->
|
||||
<schema targetNamespace="org.eclipse.cdt.flatpak.launcher" xmlns="http://www.w3.org/2001/XMLSchema">
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.schema plugin="org.eclipse.cdt.flatpak.launcher" id="flatpakPreferencePages" name="flatpakPreferencePages"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
Specify a Preference page which only gets added if running under Eclipse flatpak
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="extension">
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element ref="page" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="point" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
a fully qualified identifier of the target extension point
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
an optional identifier of the extension instance
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="name" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
an optional name of the extension instance
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute translatable="true"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<element name="page">
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.element labelAttribute="name"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element ref="keywordReference" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
a unique name that will be used to identify the page
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="name" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
a translatable name that will be used in the UI for this page
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute translatable="true"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="class" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
A class that implements org.eclipse.ui.IWorkbenchPreferencePage
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="java" basedOn="org.eclipse.jface.preference.PreferencePage:org.eclipse.ui.IWorkbenchPreferencePage"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="category" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
a path indicating the location of the page in the preference tree. The path may either be a parent node ID or a sequence
|
||||
of IDs separated by &apos;/&apos;, representing the full path from the root node.
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="identifier" basedOn="org.eclipse.ui.preferencePages/page/@id"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<element name="keywordReference">
|
||||
<annotation>
|
||||
<documentation>
|
||||
A reference by a preference page to a keyword. See the keywords extension point.
|
||||
</documentation>
|
||||
</annotation>
|
||||
<complexType>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
The id of the keyword being referred to.
|
||||
</documentation>
|
||||
<appinfo>
|
||||
<meta.attribute kind="identifier" basedOn="org.eclipse.ui.keywords/keyword/@id"/>
|
||||
</appinfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="since"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
10.0.0
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="examples"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
The following is an example for the preference extension point:
|
||||
<p>
|
||||
<pre>
|
||||
<extension
|
||||
point="org.eclipse.cdt.flatpak.launch.preferencePages">
|
||||
<page
|
||||
id="com.xyz.prefpage1"
|
||||
name="XYZ"
|
||||
class="com.xyz.prefpages.PrefPage1">
|
||||
<keywordReference id="xyz.Keyword"/>
|
||||
</page>
|
||||
<page
|
||||
id="com.xyz.prefpage2"
|
||||
name="Keyboard Settings"
|
||||
class="com.xyz.prefpages.PrefPage2"
|
||||
category="com.xyz.prefpage1">
|
||||
</page>
|
||||
</extension>
|
||||
</pre>
|
||||
</p>
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="apiinfo"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
The value of the attribute class must represent a fully qualified name of the class that implements
|
||||
<samp>org.eclipse.ui.IWorkbenchPreferencePage</samp>.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="implementation"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
The workbench adds several pages for setting the preferences of the platform. Pages registered
|
||||
through this extension will be added after them according to their category information but only if
|
||||
running under Eclipse flatpak.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
|
||||
</schema>
|
|
@ -0,0 +1,22 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat Inc. 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:
|
||||
* Red Hat Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.flatpak.launcher;
|
||||
|
||||
import org.eclipse.cdt.core.CommandLauncher;
|
||||
|
||||
public class FlatpakCommandLauncher extends CommandLauncher {
|
||||
|
||||
// placeholder for now to distinguish from regular local command launcher
|
||||
|
||||
}
|
|
@ -0,0 +1,371 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat Inc. 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:
|
||||
* Red Hat Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.flatpak.launcher;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.cdt.core.ICommandLauncher;
|
||||
import org.eclipse.cdt.core.ICommandLauncherFactory;
|
||||
import org.eclipse.cdt.core.ICommandLauncherFactory2;
|
||||
import org.eclipse.cdt.core.ICommandLauncherFactory3;
|
||||
import org.eclipse.cdt.core.build.ICBuildConfiguration;
|
||||
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICIncludePathEntry;
|
||||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||
import org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.FlatpakPreferenceNode;
|
||||
import org.eclipse.cdt.utils.spawner.ProcessFactory;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExtensionPoint;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jface.preference.PreferenceNode;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
||||
public class FlatpakCommandLauncherFactory
|
||||
implements ICommandLauncherFactory, ICommandLauncherFactory2, ICommandLauncherFactory3 {
|
||||
|
||||
private static Set<String> copiedDirs = null;
|
||||
private static Set<String> removedDirs = new HashSet<>();
|
||||
private static Object lockObject = new Object();
|
||||
private final static String HEADERS = "HEADERS"; //$NON-NLS-1$
|
||||
private final static String COPIED = ".copied"; //$NON-NLS-1$
|
||||
private final static String REMOVED = ".removed"; //$NON-NLS-1$
|
||||
|
||||
public static final String FLATPAK_PREFERENCE_PAGES = "flatpakPreferencePages"; //$NON-NLS-1$
|
||||
|
||||
public FlatpakCommandLauncherFactory() {
|
||||
initialize();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
synchronized (lockObject) {
|
||||
if (copiedDirs == null) {
|
||||
copiedDirs = new HashSet<>();
|
||||
IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
|
||||
.append(HEADERS);
|
||||
IPath copiedPath = pluginPath.append(COPIED);
|
||||
File copiedFile = copiedPath.toFile();
|
||||
if (copiedFile.exists()) {
|
||||
try (FileReader reader = new FileReader(copiedFile);
|
||||
BufferedReader bufferedReader = new BufferedReader(reader)) {
|
||||
String dir = bufferedReader.readLine();
|
||||
while (dir != null) {
|
||||
if (!dir.isEmpty()) {
|
||||
copiedDirs.add(dir);
|
||||
}
|
||||
dir = bufferedReader.readLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
}
|
||||
IPath removedPath = pluginPath.append(REMOVED);
|
||||
File removedFile = removedPath.toFile();
|
||||
if (removedFile.exists()) {
|
||||
try (FileReader reader = new FileReader(removedFile);
|
||||
BufferedReader bufferedReader = new BufferedReader(reader)) {
|
||||
String dir = bufferedReader.readLine();
|
||||
while (dir != null) {
|
||||
if (!dir.isEmpty()) {
|
||||
removedDirs.add(dir);
|
||||
}
|
||||
dir = bufferedReader.readLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(FlatpakLaunchPlugin.PLUGIN_ID,
|
||||
FLATPAK_PREFERENCE_PAGES);
|
||||
IConfigurationElement[] elements = ep.getConfigurationElements();
|
||||
for (int i = 0; i < elements.length; i++) {
|
||||
String id = elements[i].getAttribute("id"); //$NON-NLS-1$
|
||||
String category = elements[i].getAttribute("category"); //$NON-NLS-1$
|
||||
String className = elements[i].getAttribute("class"); //$NON-NLS-1$
|
||||
String name = elements[i].getAttribute("name"); //$NON-NLS-1$
|
||||
if (category != null && name != null && id != null && className != null) {
|
||||
PreferenceNode node = new FlatpakPreferenceNode(id, name, null, className);
|
||||
PlatformUI.getWorkbench().getPreferenceManager().addTo(category, node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void removeDir(String path) throws IOException {
|
||||
synchronized (lockObject) {
|
||||
List<String> removedEntries = new ArrayList<>();
|
||||
for (String copiedDir : copiedDirs) {
|
||||
if (copiedDir.startsWith(path)) {
|
||||
removedEntries.add(copiedDir);
|
||||
}
|
||||
}
|
||||
for (String removedEntry : removedEntries) {
|
||||
copiedDirs.remove(removedEntry);
|
||||
removedDirs.add(removedEntry);
|
||||
}
|
||||
updateFiles();
|
||||
}
|
||||
}
|
||||
|
||||
public static List<String> getDirs() {
|
||||
synchronized (lockObject) {
|
||||
List<String> newDirs = new ArrayList<>(copiedDirs);
|
||||
return newDirs;
|
||||
}
|
||||
}
|
||||
|
||||
private IProject project;
|
||||
|
||||
@Override
|
||||
public ICommandLauncher getCommandLauncher(IProject project) {
|
||||
this.project = project;
|
||||
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
return new FlatpakCommandLauncher();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICommandLauncher getCommandLauncher(ICConfigurationDescription cfgd) {
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
return new FlatpakCommandLauncher();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICommandLauncher getCommandLauncher(ICBuildConfiguration cfgd) {
|
||||
if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
|
||||
return new FlatpakCommandLauncher();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerLanguageSettingEntries(IProject project, List<? extends ICLanguageSettingEntry> langEntries) {
|
||||
synchronized (lockObject) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<ICLanguageSettingEntry> entries = (List<ICLanguageSettingEntry>) langEntries;
|
||||
List<String> paths = new ArrayList<>();
|
||||
for (ICLanguageSettingEntry entry : entries) {
|
||||
if (entry instanceof ICIncludePathEntry) {
|
||||
paths.add(entry.getValue());
|
||||
}
|
||||
}
|
||||
if (paths.size() > 0) {
|
||||
// Create a directory to put the header files for
|
||||
// the host.
|
||||
IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
|
||||
.append(HEADERS);
|
||||
pluginPath.toFile().mkdir();
|
||||
for (String path : paths) {
|
||||
if (path.startsWith(project.getWorkspace().getRoot().getLocation().toString())) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
Process p1 = ProcessFactory.getFactory()
|
||||
.exec("mkdir -p " + pluginPath.append(path).toOSString()); //$NON-NLS-1$
|
||||
int rc1 = waitFor(p1);
|
||||
if (rc1 == 0) {
|
||||
Process p2 = ProcessFactory.getFactory().exec("cp -ru " + path //$NON-NLS-1$
|
||||
+ " " + pluginPath.append(path).removeLastSegments(1).toOSString()); //$NON-NLS-1$
|
||||
int rc2 = waitFor(p2);
|
||||
if (rc2 == 0) {
|
||||
copiedDirs.add(path);
|
||||
String[] removedEntries = removedDirs.toArray(new String[0]);
|
||||
for (String removedDir : removedEntries) {
|
||||
if (removedDir.startsWith(path)) {
|
||||
removedDirs.remove(removedDir);
|
||||
copiedDirs.add(removedDir);
|
||||
}
|
||||
}
|
||||
updateFiles();
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected static void updateFiles() throws IOException {
|
||||
IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID)).append(HEADERS);
|
||||
pluginPath.toFile().mkdir();
|
||||
IPath copiedListPath = pluginPath.append(COPIED);
|
||||
try (FileWriter writer = new FileWriter(copiedListPath.toFile());
|
||||
BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
|
||||
for (String copiedDir : copiedDirs) {
|
||||
bufferedWriter.write(copiedDir);
|
||||
bufferedWriter.newLine();
|
||||
}
|
||||
}
|
||||
IPath removedListPath = pluginPath.append(REMOVED);
|
||||
try (FileWriter writer = new FileWriter(removedListPath.toFile());
|
||||
BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
|
||||
for (String removedDir : removedDirs) {
|
||||
bufferedWriter.write(removedDir);
|
||||
bufferedWriter.newLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int waitFor(Process p) {
|
||||
int rc = -1;
|
||||
boolean finished = false;
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
while (!finished) {
|
||||
rc = p.exitValue();
|
||||
finished = true;
|
||||
}
|
||||
} catch (IllegalThreadStateException e) {
|
||||
// do nothing
|
||||
} catch (InterruptedException e) {
|
||||
finished = true;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> verifyIncludePaths(ICBuildConfiguration cfgd, List<String> includePaths) {
|
||||
synchronized (lockObject) {
|
||||
if (includePaths.size() > 0) {
|
||||
IPath copiedPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
|
||||
.append(HEADERS);
|
||||
copiedPath.toFile().mkdir();
|
||||
List<String> newEntries = new ArrayList<>();
|
||||
for (String path : includePaths) {
|
||||
if (path.startsWith(project.getWorkspace().getRoot().getLocation().toString())) {
|
||||
continue;
|
||||
}
|
||||
if (!copiedDirs.contains(path)) {
|
||||
try {
|
||||
Process p1 = ProcessFactory.getFactory()
|
||||
.exec("mkdir -p " + copiedPath.append(path).toOSString()); //$NON-NLS-1$
|
||||
int rc1 = waitFor(p1);
|
||||
if (rc1 == 0) {
|
||||
Process p2 = ProcessFactory.getFactory().exec("cp -ru " + path //$NON-NLS-1$
|
||||
+ " " + copiedPath.append(path).removeLastSegments(1).toOSString()); //$NON-NLS-1$
|
||||
int rc2 = waitFor(p2);
|
||||
if (rc2 == 0) {
|
||||
copiedDirs.add(path);
|
||||
newEntries.add(copiedPath.append(path).toOSString());
|
||||
String[] removedEntries = removedDirs.toArray(new String[0]);
|
||||
for (String removedDir : removedEntries) {
|
||||
if (removedDir.startsWith(path)) {
|
||||
removedDirs.remove(removedDir);
|
||||
copiedDirs.add(removedDir);
|
||||
}
|
||||
}
|
||||
updateFiles();
|
||||
} else {
|
||||
newEntries.add(path);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
} else {
|
||||
newEntries.add(copiedPath.append(path).toOSString());
|
||||
}
|
||||
}
|
||||
return newEntries;
|
||||
}
|
||||
return includePaths;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ICLanguageSettingEntry> verifyLanguageSettingEntries(IProject project,
|
||||
List<ICLanguageSettingEntry> entries) {
|
||||
if (entries == null) {
|
||||
return null;
|
||||
}
|
||||
synchronized (lockObject) {
|
||||
List<ICLanguageSettingEntry> newEntries = new ArrayList<>();
|
||||
IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID));
|
||||
IPath hostDir = pluginPath.append(HEADERS);
|
||||
|
||||
for (ICLanguageSettingEntry entry : entries) {
|
||||
if (entry instanceof ICIncludePathEntry) {
|
||||
String path = entry.getName().toString();
|
||||
if (removedDirs.contains(path)) {
|
||||
try {
|
||||
Process p1 = ProcessFactory.getFactory()
|
||||
.exec("mkdir -p " + hostDir.append(path).toOSString()); //$NON-NLS-1$
|
||||
int rc1 = waitFor(p1);
|
||||
if (rc1 == 0) {
|
||||
Process p2 = ProcessFactory.getFactory().exec("cp -ru " + path //$NON-NLS-1$
|
||||
+ " " + hostDir.append(path).removeLastSegments(1).toOSString()); //$NON-NLS-1$
|
||||
int rc2 = waitFor(p2);
|
||||
if (rc2 == 0) {
|
||||
copiedDirs.add(path);
|
||||
String[] removedEntries = removedDirs.toArray(new String[0]);
|
||||
for (String removedDir : removedEntries) {
|
||||
if (removedDir.startsWith(path)) {
|
||||
removedDirs.remove(removedDir);
|
||||
copiedDirs.add(removedDir);
|
||||
}
|
||||
}
|
||||
updateFiles();
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
|
||||
}
|
||||
if (copiedDirs.contains(path)) {
|
||||
// //$NON-NLS-2$
|
||||
IPath newPath = hostDir.append(entry.getName());
|
||||
CIncludePathEntry newEntry = new CIncludePathEntry(newPath.toString(), entry.getFlags());
|
||||
newEntries.add(newEntry);
|
||||
continue;
|
||||
} else {
|
||||
newEntries.add(entry);
|
||||
}
|
||||
} else {
|
||||
newEntries.add(entry);
|
||||
}
|
||||
}
|
||||
return newEntries;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkIfIncludesChanged(ICBuildConfiguration cfg) {
|
||||
synchronized (lockObject) {
|
||||
return !removedDirs.isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat.
|
||||
*
|
||||
* 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:
|
||||
* Red Hat - Initial Contribution
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.flatpak.launcher;
|
||||
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.resource.ResourceLocator;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.IWorkbenchWindow;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*
|
||||
* @noextend This class is not intended to be subclassed by Clients
|
||||
*/
|
||||
public class FlatpakLaunchPlugin extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "org.eclipse.cdt.flatpak.launcher"; //$NON-NLS-1$
|
||||
|
||||
// The shared instance
|
||||
private static FlatpakLaunchPlugin plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public FlatpakLaunchPlugin() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
plugin = null;
|
||||
super.stop(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance
|
||||
*
|
||||
* @return the shared instance
|
||||
*/
|
||||
public static FlatpakLaunchPlugin getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public static Shell getActiveWorkbenchShell() {
|
||||
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
|
||||
if (window != null) {
|
||||
return window.getShell();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Shell getShell() {
|
||||
if (getActiveWorkbenchShell() != null) {
|
||||
return getActiveWorkbenchShell();
|
||||
}
|
||||
IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
|
||||
return windows[0].getShell();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method which returns the unique identifier of this plugin.
|
||||
*
|
||||
* @return The identifier.
|
||||
*/
|
||||
public static String getUniqueIdentifier() {
|
||||
if (getDefault() == null) {
|
||||
// If the default instance is not yet initialized,
|
||||
// return a static identifier. This identifier must
|
||||
// match the plugin id defined in plugin.xml
|
||||
return PLUGIN_ID;
|
||||
}
|
||||
return getDefault().getBundle().getSymbolicName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs the specified status with this plug-in's log.
|
||||
*
|
||||
* @param status
|
||||
* status to log
|
||||
* @since 1.1
|
||||
*/
|
||||
public static void log(IStatus status) {
|
||||
getDefault().getLog().log(status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs an internal error with the specified message.
|
||||
*
|
||||
* @param message
|
||||
* the error message to log
|
||||
* @since 1.1
|
||||
*/
|
||||
public static void logErrorMessage(String message) {
|
||||
log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs an internal error with the specified throwable
|
||||
*
|
||||
* @param e
|
||||
* the exception to be logged
|
||||
*/
|
||||
public static void log(Throwable e) {
|
||||
log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
|
||||
}
|
||||
|
||||
public static void log(int status, String msg, Throwable e) {
|
||||
plugin.getLog().log(new Status(status, PLUGIN_ID, IStatus.OK, msg, e));
|
||||
}
|
||||
|
||||
public static void log(int status, String msg) {
|
||||
log(status, msg, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an image descriptor for the image file at the given plug-in
|
||||
* relative path
|
||||
*
|
||||
* @param path
|
||||
* the path
|
||||
* @return the image descriptor
|
||||
*/
|
||||
public static ImageDescriptor getImageDescriptor(String path) {
|
||||
return ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, path).get();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,311 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat.
|
||||
*
|
||||
* 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:
|
||||
* Red Hat - Initial Contribution
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.flatpak.launcher.ui.preferences;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.flatpak.launcher.FlatpakCommandLauncherFactory;
|
||||
import org.eclipse.cdt.flatpak.launcher.FlatpakLaunchPlugin;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jface.dialogs.MessageDialog;
|
||||
import org.eclipse.jface.preference.PreferencePage;
|
||||
import org.eclipse.jface.viewers.ColumnWeightData;
|
||||
import org.eclipse.jface.viewers.ILabelProviderListener;
|
||||
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
||||
import org.eclipse.jface.viewers.ITableLabelProvider;
|
||||
import org.eclipse.jface.viewers.TableLayout;
|
||||
import org.eclipse.jface.viewers.TableViewer;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.eclipse.swt.widgets.TableColumn;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
|
||||
public class FlatpakHeaderPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, Listener {
|
||||
|
||||
// SWT Widgets and content providers
|
||||
private Table hdrTable;
|
||||
private TableViewer hdrTableViewer;
|
||||
private HeaderContentProvider provider;
|
||||
private Button removeButton;
|
||||
private List<String> directories;
|
||||
|
||||
private final class HeaderContentProvider implements IStructuredContentProvider, ITableLabelProvider {
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
|
||||
*/
|
||||
@Override
|
||||
public Object[] getElements(Object inputElement) {
|
||||
return directories.toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
|
||||
*/
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer,
|
||||
* Object, Object)
|
||||
*/
|
||||
@Override
|
||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(Object,
|
||||
* int)
|
||||
*/
|
||||
@Override
|
||||
public Image getColumnImage(Object element, int columnIndex) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(Object,
|
||||
* int)
|
||||
*/
|
||||
@Override
|
||||
public String getColumnText(Object element, int columnIndex) {
|
||||
return element.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(ILabelProviderListener)
|
||||
*/
|
||||
@Override
|
||||
public void addListener(ILabelProviderListener listener) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(Object,
|
||||
* String)
|
||||
*/
|
||||
@Override
|
||||
public boolean isLabelProperty(Object element, String property) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(ILabelProviderListener)
|
||||
*/
|
||||
@Override
|
||||
public void removeListener(ILabelProviderListener listener) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public FlatpakHeaderPreferencePage() {
|
||||
noDefaultAndApplyButton();
|
||||
provider = new HeaderContentProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(IWorkbench workbench) {
|
||||
directories = FlatpakCommandLauncherFactory.getDirs();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
Composite page = createComposite(parent, 1, 2, false, null, -1, -1, GridData.FILL);
|
||||
GridData gd = (GridData) page.getLayoutData();
|
||||
gd.grabExcessHorizontalSpace = true;
|
||||
gd.grabExcessVerticalSpace = true;
|
||||
|
||||
// SystemWidgetHelpers.createLabel(page,
|
||||
// SystemResources.RESID_PREF_SIGNON_DESCRIPTION, 2);
|
||||
|
||||
// Header table
|
||||
hdrTable = new Table(page, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
|
||||
hdrTable.setLinesVisible(true);
|
||||
hdrTable.setHeaderVisible(true);
|
||||
hdrTable.addListener(SWT.Selection, this);
|
||||
|
||||
TableLayout tableLayout = new TableLayout();
|
||||
tableLayout.addColumnData(new ColumnWeightData(100, true));
|
||||
hdrTable.setLayout(tableLayout);
|
||||
|
||||
gd = new GridData(GridData.FILL_BOTH);
|
||||
gd.grabExcessHorizontalSpace = true;
|
||||
gd.grabExcessVerticalSpace = true;
|
||||
|
||||
hdrTable.setLayoutData(gd);
|
||||
|
||||
// Connection column
|
||||
TableColumn directoriesColumn = new TableColumn(hdrTable, SWT.NONE);
|
||||
directoriesColumn.setText(Messages.FlatpakDirectories_label);
|
||||
|
||||
hdrTableViewer = new TableViewer(hdrTable);
|
||||
hdrTableViewer.setContentProvider(provider);
|
||||
hdrTableViewer.setLabelProvider(provider);
|
||||
hdrTableViewer.setInput(directories);
|
||||
|
||||
// Create the Button bar for add, change and remove
|
||||
Composite buttonBar = createComposite(page, 1, 1, false, null, -1, -1, GridData.FILL);
|
||||
gd = (GridData) buttonBar.getLayoutData();
|
||||
gd.grabExcessHorizontalSpace = false;
|
||||
gd.grabExcessVerticalSpace = true;
|
||||
|
||||
removeButton = createPushButton(buttonBar, this, Messages.FlatpakRemoveHeaders_label,
|
||||
Messages.FlatpakRemoveHeaders_tooltip);
|
||||
|
||||
removeButton.setEnabled(false);
|
||||
return parent;
|
||||
}
|
||||
|
||||
private static Composite createComposite(Composite parent, int parentSpan, int numColumns, boolean border,
|
||||
String label, int marginSize, int spacingSize, int verticalAlignment) {
|
||||
// border = true;
|
||||
boolean borderNeeded = border;
|
||||
if (label != null)
|
||||
borderNeeded = true; // force the case
|
||||
int style = SWT.NULL;
|
||||
if (borderNeeded)
|
||||
style |= SWT.SHADOW_ETCHED_IN;
|
||||
Composite composite = null;
|
||||
if (borderNeeded) {
|
||||
composite = new Group(parent, style);
|
||||
if (label != null)
|
||||
((Group) composite).setText(label);
|
||||
} else {
|
||||
composite = new Composite(parent, style);
|
||||
}
|
||||
// GridLayout
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.numColumns = numColumns;
|
||||
if (marginSize != -1) {
|
||||
layout.marginWidth = 0;
|
||||
layout.marginHeight = 0;
|
||||
}
|
||||
if (spacingSize != -1) {
|
||||
layout.horizontalSpacing = 0;
|
||||
layout.verticalSpacing = 0;
|
||||
}
|
||||
composite.setLayout(layout);
|
||||
// GridData
|
||||
GridData data = new GridData();
|
||||
data.horizontalSpan = parentSpan;
|
||||
data.horizontalAlignment = GridData.FILL;
|
||||
data.grabExcessHorizontalSpace = true;
|
||||
|
||||
data.verticalAlignment = verticalAlignment;
|
||||
data.grabExcessVerticalSpace = false;
|
||||
|
||||
composite.setLayoutData(data);
|
||||
return composite;
|
||||
}
|
||||
|
||||
public static Button createPushButton(Composite group, Listener listener, String label, String tooltip) {
|
||||
Button button = new Button(group, SWT.PUSH);
|
||||
button.setText(label);
|
||||
if (listener != null)
|
||||
button.addListener(SWT.Selection, listener);
|
||||
GridData data = new GridData();
|
||||
data.horizontalAlignment = GridData.FILL;
|
||||
data.grabExcessHorizontalSpace = true;
|
||||
button.setLayoutData(data);
|
||||
if (tooltip != null)
|
||||
button.setToolTipText(tooltip);
|
||||
return button;
|
||||
}
|
||||
|
||||
private class DialogStatus {
|
||||
private boolean status;
|
||||
|
||||
public DialogStatus(boolean status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public void setStatus(boolean status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public boolean getStatus() {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.swt.widgets.Listener#handleEvent(Event)
|
||||
*/
|
||||
@Override
|
||||
public void handleEvent(Event event) {
|
||||
if (event.type == SWT.Selection) {
|
||||
if (event.widget == removeButton) {
|
||||
final DialogStatus confirmed = new DialogStatus(false);
|
||||
Display.getDefault().syncExec(() -> {
|
||||
boolean status = MessageDialog.openConfirm(getShell(), Messages.FlatpakConfirmRemoval_title,
|
||||
Messages.FlatpakConfirmRemoval_msg);
|
||||
confirmed.setStatus(status);
|
||||
});
|
||||
if (!confirmed.getStatus()) {
|
||||
return;
|
||||
}
|
||||
int[] indicies = hdrTable.getSelectionIndices();
|
||||
IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
|
||||
.append("HEADERS"); //$NON-NLS-1$
|
||||
for (int idx = indicies.length - 1; idx >= 0; idx--) {
|
||||
String dirPath = directories.get(indicies[idx]);
|
||||
File f = pluginPath.append(dirPath).toFile();
|
||||
if (f.exists() && f.isDirectory()) {
|
||||
recursiveDelete(f);
|
||||
}
|
||||
directories.remove(dirPath);
|
||||
try {
|
||||
FlatpakCommandLauncherFactory.removeDir(dirPath);
|
||||
} catch (IOException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
}
|
||||
hdrTable.remove(indicies);
|
||||
hdrTable.redraw();
|
||||
hdrTableViewer.refresh();
|
||||
}
|
||||
|
||||
// Update table buttons based on changes
|
||||
if (hdrTable.getSelectionCount() > 0) {
|
||||
removeButton.setEnabled(true);
|
||||
} else {
|
||||
removeButton.setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void recursiveDelete(File dir) {
|
||||
File[] contents = dir.listFiles();
|
||||
if (contents != null) {
|
||||
for (File f : contents) {
|
||||
recursiveDelete(f);
|
||||
}
|
||||
}
|
||||
dir.delete();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat Inc. 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:
|
||||
* Red Hat Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.flatpak.launcher.ui.preferences;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.eclipse.cdt.flatpak.launcher.FlatpakLaunchPlugin;
|
||||
import org.eclipse.jface.preference.PreferenceNode;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
||||
public class FlatpakPreferenceNode extends PreferenceNode {
|
||||
|
||||
private String label;
|
||||
private String className;
|
||||
|
||||
public FlatpakPreferenceNode(String id, String label, ImageDescriptor image, String className) {
|
||||
super(id, label, image, className);
|
||||
this.label = label;
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createPage() {
|
||||
IWorkbenchPreferencePage page = (IWorkbenchPreferencePage) getPage();
|
||||
if (page == null) {
|
||||
try {
|
||||
Class<?> cl = Class.forName(className);
|
||||
page = (IWorkbenchPreferencePage) cl.getDeclaredConstructor().newInstance();
|
||||
if (page != null) {
|
||||
page.setTitle(label);
|
||||
page.init(PlatformUI.getWorkbench());
|
||||
setPage(page);
|
||||
}
|
||||
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodError
|
||||
| IllegalArgumentException | InvocationTargetException | NoSuchMethodException
|
||||
| SecurityException e) {
|
||||
FlatpakLaunchPlugin.log(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2020 Red Hat, Inc.
|
||||
*
|
||||
* 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:
|
||||
* Red Hat initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.flatpak.launcher.ui.preferences;
|
||||
|
||||
import org.eclipse.osgi.util.NLS;
|
||||
|
||||
public class Messages extends NLS {
|
||||
private static final String BUNDLE_NAME = "org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.messages"; //$NON-NLS-1$
|
||||
|
||||
public static String FlatpakDebugProcess_label;
|
||||
public static String FlatpakRemoveHeaders_label;
|
||||
public static String FlatpakRemoveHeaders_tooltip;
|
||||
public static String FlatpakConfirmRemoval_title;
|
||||
public static String FlatpakConfirmRemoval_msg;
|
||||
public static String FlatpakDirectories_label;
|
||||
|
||||
static {
|
||||
// initialize resource bundle
|
||||
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
|
||||
}
|
||||
|
||||
private Messages() {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
#*******************************************************************************
|
||||
# Copyright (c) 2020 Red Hat.
|
||||
#
|
||||
# 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:
|
||||
# Red Hat - Initial Contribution
|
||||
#*****************************************************************************/
|
||||
|
||||
FlatpakDebugProcess_label=Debug
|
||||
FlatpakRemoveHeaders_label=Remove
|
||||
FlatpakRemoveHeaders_tooltip=Remove headers cached from local host
|
||||
FlatpakConfirmRemoval_title=Confirm Header File Removal
|
||||
FlatpakConfirmRemoval_msg=Confirm removal of cached header files
|
||||
FlatpakDirectories_label=Cached Directories
|
||||
|
2
pom.xml
2
pom.xml
|
@ -194,6 +194,8 @@
|
|||
<module>launch/org.eclipse.cdt.launch</module>
|
||||
<module>launch/org.eclipse.cdt.docker.launcher</module>
|
||||
<module>launch/org.eclipse.cdt.docker.launcher-feature</module>
|
||||
<module>launch/org.eclipse.cdt.flatpak.launcher</module>
|
||||
<module>launch/org.eclipse.cdt.flatpak.launcher-feature</module>
|
||||
|
||||
<module>llvm/org.eclipse.cdt.managedbuilder.llvm.ui</module>
|
||||
<module>llvm/org.eclipse.cdt.managedbuilder.llvm-feature</module>
|
||||
|
|
|
@ -150,6 +150,13 @@
|
|||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.cdt.flatpak.launcher"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.cdt.native.serial"
|
||||
download-size="0"
|
||||
|
|
Loading…
Add table
Reference in a new issue