mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 548350 - meson projects fail
- add meson 0.50.support - fix MesonPropertyPage to look for meson-info directory if the project is already configured and use the intro-buildoptions.json file to parse the various options and default values etc... - fix description of MesonPropertyCheckbox to only show the first sentence of any description - fix tooltip to show on option name, not just the widget - bump up version of meson ui Change-Id: Id0a528d4ffb000bc63a007037c5e216c956a199c
This commit is contained in:
parent
0d5325df4e
commit
cc466a2e49
7 changed files with 153 additions and 42 deletions
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name.0
|
Bundle-Name: %Bundle-Name.0
|
||||||
Bundle-SymbolicName: org.eclipse.cdt.meson.ui;singleton:=true
|
Bundle-SymbolicName: org.eclipse.cdt.meson.ui;singleton:=true
|
||||||
Bundle-Version: 1.0.300.qualifier
|
Bundle-Version: 1.0.400.qualifier
|
||||||
Bundle-Vendor: %vendorName
|
Bundle-Vendor: %vendorName
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||||
Bundle-Activator: org.eclipse.cdt.meson.ui.Activator
|
Bundle-Activator: org.eclipse.cdt.meson.ui.Activator
|
||||||
|
@ -19,5 +19,8 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.13.0",
|
||||||
org.eclipse.core.resources;bundle-version="3.12.0",
|
org.eclipse.core.resources;bundle-version="3.12.0",
|
||||||
org.eclipse.debug.core;bundle-version="3.11.0",
|
org.eclipse.debug.core;bundle-version="3.11.0",
|
||||||
org.eclipse.cdt.launch;bundle-version="9.2.0",
|
org.eclipse.cdt.launch;bundle-version="9.2.0",
|
||||||
org.eclipse.debug.ui;bundle-version="3.12.50"
|
org.eclipse.debug.ui;bundle-version="3.12.50",
|
||||||
|
com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider;bundle-version="2.9.9",
|
||||||
|
com.fasterxml.jackson.core.jackson-databind;bundle-version="2.9.93",
|
||||||
|
com.fasterxml.jackson.core.jackson-core;bundle-version="2.9.9"
|
||||||
Automatic-Module-Name: org.eclipse.cdt.meson.ui
|
Automatic-Module-Name: org.eclipse.cdt.meson.ui
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2018 Red Hat Inc. and others.
|
* Copyright (c) 2018, 2020 Red Hat Inc. and others.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License 2.0
|
* are made available under the terms of the Eclipse Public License 2.0
|
||||||
|
@ -23,7 +23,6 @@ public class MesonPropertyArgs extends MesonPropertyText {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getConfiguredString() {
|
public String getConfiguredString() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return "-D" + getFieldName() + "='" + getFieldValue() + "'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
return "-D" + getFieldName() + "='" + getFieldValue() + "'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2018 Red Hat Inc. and others.
|
* Copyright (c) 2018, 2020 Red Hat Inc. and others.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License 2.0
|
* are made available under the terms of the Eclipse Public License 2.0
|
||||||
|
@ -40,7 +40,14 @@ public class MesonPropertyCheckbox implements IMesonPropertyPageControl {
|
||||||
data2.grabExcessHorizontalSpace = true;
|
data2.grabExcessHorizontalSpace = true;
|
||||||
data2.horizontalSpan = 1;
|
data2.horizontalSpan = 1;
|
||||||
Label label = new Label(composite, SWT.NONE);
|
Label label = new Label(composite, SWT.NONE);
|
||||||
label.setText(tooltip);
|
String labelText = tooltip;
|
||||||
|
if (tooltip.length() > 15) {
|
||||||
|
int period = labelText.indexOf("."); //$NON-NLS-1$
|
||||||
|
if (period > 0 && period < tooltip.length() - 1) {
|
||||||
|
labelText = tooltip.substring(0, period + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
label.setText(labelText);
|
||||||
label.setLayoutData(data2);
|
label.setLayoutData(data2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2018 Red Hat Inc. and others.
|
* Copyright (c) 2018, 2020 Red Hat Inc. and others.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License 2.0
|
* are made available under the terms of the Eclipse Public License 2.0
|
||||||
|
@ -30,6 +30,7 @@ public class MesonPropertyCombo implements IMesonPropertyPageControl {
|
||||||
this.initialValue = initialValue;
|
this.initialValue = initialValue;
|
||||||
Label label = new Label(composite, SWT.NONE);
|
Label label = new Label(composite, SWT.NONE);
|
||||||
label.setText(name);
|
label.setText(name);
|
||||||
|
label.setToolTipText(tooltip);
|
||||||
label.setLayoutData(new GridData());
|
label.setLayoutData(new GridData());
|
||||||
combo = new Combo(composite, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY);
|
combo = new Combo(composite, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY);
|
||||||
GridData data = new GridData(GridData.FILL_BOTH);
|
GridData data = new GridData(GridData.FILL_BOTH);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2016,2018 IAR Systems AB
|
* Copyright (c) 2016,2020 IAR Systems AB
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License 2.0
|
* are made available under the terms of the Eclipse Public License 2.0
|
||||||
|
@ -53,6 +53,10 @@ import org.eclipse.swt.widgets.Label;
|
||||||
import org.eclipse.swt.widgets.Text;
|
import org.eclipse.swt.widgets.Text;
|
||||||
import org.eclipse.ui.dialogs.PropertyPage;
|
import org.eclipse.ui.dialogs.PropertyPage;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Property page for Meson projects. For unconfigured projects, we use the meson command and parse
|
* Property page for Meson projects. For unconfigured projects, we use the meson command and parse
|
||||||
* the output of the --help option. Otherwise, we use the meson configure command to find current
|
* the output of the --help option. Otherwise, we use the meson configure command to find current
|
||||||
|
@ -89,28 +93,40 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
configured = buildPath.toFile().exists();
|
configured = buildPath.toFile().exists();
|
||||||
if (configured) {
|
if (configured) {
|
||||||
|
|
||||||
ICommandLauncher launcher = CommandLauncherManager.getInstance()
|
IPath infoPath = new Path(buildDir).append("meson-info"); //$NON-NLS-1$
|
||||||
.getCommandLauncher(project.getActiveBuildConfig().getAdapter(ICBuildConfiguration.class));
|
boolean newerMeson = infoPath.toFile().exists();
|
||||||
launcher.setProject(project);
|
if (newerMeson) {
|
||||||
if (launcher instanceof ICBuildCommandLauncher) {
|
IPath optionsPath = infoPath.append("intro-buildoptions.json"); //$NON-NLS-1$
|
||||||
((ICBuildCommandLauncher) launcher).setBuildConfiguration(buildConfig);
|
if (optionsPath.toFile().exists()) {
|
||||||
}
|
componentList = parseInfoOptions(optionsPath, composite);
|
||||||
Process p = launcher.execute(new Path("meson"), new String[] { "configure", buildDir }, //$NON-NLS-1$ //$NON-NLS-2$
|
} else {
|
||||||
new String[0], sourceDir, new NullProgressMonitor());
|
return null;
|
||||||
if (p != null) {
|
|
||||||
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
|
|
||||||
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
|
|
||||||
int rc = -1;
|
|
||||||
try {
|
|
||||||
if (launcher.waitAndRead(stdout, stderr, new NullProgressMonitor()) == ICommandLauncher.OK) {
|
|
||||||
p.waitFor();
|
|
||||||
}
|
|
||||||
rc = p.exitValue();
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
// ignore for now
|
|
||||||
}
|
}
|
||||||
if (rc == 0) {
|
} else {
|
||||||
componentList = parseConfigureOutput(stdout, composite);
|
ICommandLauncher launcher = CommandLauncherManager.getInstance()
|
||||||
|
.getCommandLauncher(project.getActiveBuildConfig().getAdapter(ICBuildConfiguration.class));
|
||||||
|
launcher.setProject(project);
|
||||||
|
if (launcher instanceof ICBuildCommandLauncher) {
|
||||||
|
((ICBuildCommandLauncher) launcher).setBuildConfiguration(buildConfig);
|
||||||
|
}
|
||||||
|
Process p = launcher.execute(new Path("meson"), new String[] { "configure", buildDir }, //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
new String[0], sourceDir, new NullProgressMonitor());
|
||||||
|
if (p != null) {
|
||||||
|
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
|
||||||
|
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
|
||||||
|
int rc = -1;
|
||||||
|
try {
|
||||||
|
if (launcher.waitAndRead(stdout, stderr,
|
||||||
|
new NullProgressMonitor()) == ICommandLauncher.OK) {
|
||||||
|
p.waitFor();
|
||||||
|
}
|
||||||
|
rc = p.exitValue();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// ignore for now
|
||||||
|
}
|
||||||
|
if (rc == 0) {
|
||||||
|
componentList = parseConfigureOutput(stdout, composite);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -249,7 +265,7 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
args.add("configure"); //$NON-NLS-1$
|
args.add("configure"); //$NON-NLS-1$
|
||||||
for (IMesonPropertyPageControl control : componentList) {
|
for (IMesonPropertyPageControl control : componentList) {
|
||||||
if (control.isValueChanged()) {
|
if (control.isValueChanged()) {
|
||||||
args.add(control.getConfiguredString()); //$NON-NLS-1$ //$NON-NLS-2$
|
args.add(control.getConfiguredString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (args.size() == 2) {
|
if (args.size() == 2) {
|
||||||
|
@ -268,7 +284,7 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
}
|
}
|
||||||
args.add(buildDir);
|
args.add(buildDir);
|
||||||
Process p = launcher.execute(new Path("meson"), args.toArray(new String[0]), new String[0], sourceDir, //$NON-NLS-1$
|
Process p = launcher.execute(new Path("meson"), args.toArray(new String[0]), new String[0], sourceDir, //$NON-NLS-1$
|
||||||
new NullProgressMonitor()); //$NON-NLS-2$
|
new NullProgressMonitor());
|
||||||
int rc = -1;
|
int rc = -1;
|
||||||
IConsole console = CCorePlugin.getDefault().getConsole();
|
IConsole console = CCorePlugin.getDefault().getConsole();
|
||||||
console.start(project);
|
console.start(project);
|
||||||
|
@ -345,12 +361,12 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
try {
|
try {
|
||||||
String output = stdout.toString(StandardCharsets.UTF_8.name()).replaceAll("\\r?\\n\\s+", " "); //$NON-NLS-1$ //$NON-NLS-2$
|
String output = stdout.toString(StandardCharsets.UTF_8.name()).replaceAll("\\r?\\n\\s+", " "); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
String[] lines = output.split("--"); //$NON-NLS-1$
|
String[] lines = output.split("--"); //$NON-NLS-1$
|
||||||
Pattern optionPattern = Pattern.compile("(([a-z-]+)\\s+(([A-Z_][A-Z_]+))?\\s*(\\{.*?\\})?([^\\[\\]]*))");
|
Pattern optionPattern = Pattern.compile("(([a-z-]+)\\s+(([A-Z_][A-Z_]+))?\\s*(\\{.*?\\})?([^\\[\\]]*))"); //$NON-NLS-1$
|
||||||
Pattern descPattern1 = Pattern.compile("([^\\.]+).*");
|
Pattern descPattern1 = Pattern.compile("([^\\.]+).*"); //$NON-NLS-1$
|
||||||
Pattern descPattern = Pattern.compile("([^\\(]*)(\\(default\\:\\s+([^\\)]+)\\).*)");
|
Pattern descPattern = Pattern.compile("([^\\(]*)(\\(default\\:\\s+([^\\)]+)\\).*)"); //$NON-NLS-1$
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
Matcher optionMatcher = optionPattern.matcher(line);
|
Matcher optionMatcher = optionPattern.matcher(line);
|
||||||
if (optionMatcher.matches() && !optionMatcher.group(2).equals("help")) {
|
if (optionMatcher.matches() && !optionMatcher.group(2).equals("help")) { //$NON-NLS-1$
|
||||||
if (optionMatcher.group(3) != null) {
|
if (optionMatcher.group(3) != null) {
|
||||||
String defaultValue = argMap.get(optionMatcher.group(2));
|
String defaultValue = argMap.get(optionMatcher.group(2));
|
||||||
String description = optionMatcher.group(6);
|
String description = optionMatcher.group(6);
|
||||||
|
@ -409,7 +425,7 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
Pattern optionWithValuesPattern = Pattern.compile(Messages.MesonPropertyPage_option_with_values_pattern);
|
Pattern optionWithValuesPattern = Pattern.compile(Messages.MesonPropertyPage_option_with_values_pattern);
|
||||||
Pattern optionLine = Pattern.compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+(.*)$"); //$NON-NLS-1$
|
Pattern optionLine = Pattern.compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+(.*)$"); //$NON-NLS-1$
|
||||||
Pattern optionWithValuesLine = Pattern
|
Pattern optionWithValuesLine = Pattern
|
||||||
.compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+\\[([\\w,\\-,/]+)((,\\s+[\\w,\\-]+)*)\\]\\s+(.*)$");
|
.compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+\\[([\\w,\\-,/]+)((,\\s+[\\w,\\-]+)*)\\]\\s+(.*)$"); //$NON-NLS-1$
|
||||||
Pattern compilerOrLinkerArgs = Pattern.compile(Messages.MesonPropertyPage_compiler_or_link_args);
|
Pattern compilerOrLinkerArgs = Pattern.compile(Messages.MesonPropertyPage_compiler_or_link_args);
|
||||||
Pattern argLine = Pattern.compile("(\\w+)\\s+\\[([^\\]]*)\\]"); //$NON-NLS-1$
|
Pattern argLine = Pattern.compile("(\\w+)\\s+\\[([^\\]]*)\\]"); //$NON-NLS-1$
|
||||||
Pattern groupPattern = Pattern.compile("(([^:]*)):"); //$NON-NLS-1$
|
Pattern groupPattern = Pattern.compile("(([^:]*)):"); //$NON-NLS-1$
|
||||||
|
@ -550,7 +566,7 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
String description = m4.group(6);
|
String description = m4.group(6);
|
||||||
String[] values = new String[] { possibleValue };
|
String[] values = new String[] { possibleValue };
|
||||||
if (!extraValues.isEmpty()) {
|
if (!extraValues.isEmpty()) {
|
||||||
values = extraValues.split(",\\s+");
|
values = extraValues.split(",\\s+"); //$NON-NLS-1$
|
||||||
values[0] = possibleValue;
|
values[0] = possibleValue;
|
||||||
}
|
}
|
||||||
IMesonPropertyPageControl control = new MesonPropertyCombo(parent, name, values, value,
|
IMesonPropertyPageControl control = new MesonPropertyCombo(parent, name, values, value,
|
||||||
|
@ -576,4 +592,89 @@ public class MesonPropertyPage extends PropertyPage {
|
||||||
return controls;
|
return controls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<IMesonPropertyPageControl> parseInfoOptions(IPath optionsPath, Composite composite) {
|
||||||
|
List<IMesonPropertyPageControl> controls = new ArrayList<>();
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
Composite parent = composite;
|
||||||
|
try {
|
||||||
|
JsonNode root = mapper.readTree(optionsPath.toFile());
|
||||||
|
if (!root.isArray()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String lastSection = ""; //$NON-NLS-1$
|
||||||
|
for (JsonNode node : root) {
|
||||||
|
IMesonPropertyPageControl control = null;
|
||||||
|
String type = node.path("type").asText(); //$NON-NLS-1$
|
||||||
|
String section = node.path("section").asText(); //$NON-NLS-1$
|
||||||
|
String name = null;
|
||||||
|
String value = null;
|
||||||
|
String description = null;
|
||||||
|
if (!section.equals(lastSection)) {
|
||||||
|
Group group = new Group(composite, SWT.BORDER);
|
||||||
|
group.setLayout(new GridLayout(2, true));
|
||||||
|
group.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||||
|
String sectionName = section + " options:"; //$NON-NLS-1$
|
||||||
|
sectionName = sectionName.substring(0, 1).toUpperCase() + sectionName.substring(1);
|
||||||
|
group.setText(sectionName);
|
||||||
|
parent = group;
|
||||||
|
lastSection = section;
|
||||||
|
}
|
||||||
|
switch (type) {
|
||||||
|
case "combo": //$NON-NLS-1$
|
||||||
|
name = node.path("name").asText(); //$NON-NLS-1$
|
||||||
|
value = node.path("value").asText(); //$NON-NLS-1$
|
||||||
|
description = node.path("description").asText(); //$NON-NLS-1$
|
||||||
|
JsonNode choices = node.path("choices"); //$NON-NLS-1$
|
||||||
|
ArrayList<String> choiceList = new ArrayList<>();
|
||||||
|
for (JsonNode choiceNode : choices) {
|
||||||
|
String choice = choiceNode.asText();
|
||||||
|
choiceList.add(choice);
|
||||||
|
}
|
||||||
|
control = new MesonPropertyCombo(parent, name, choiceList.toArray(new String[0]), value,
|
||||||
|
description);
|
||||||
|
controls.add(control);
|
||||||
|
break;
|
||||||
|
case "boolean": //$NON-NLS-1$
|
||||||
|
name = node.path("name").asText(); //$NON-NLS-1$
|
||||||
|
value = node.path("value").asText(); //$NON-NLS-1$
|
||||||
|
description = node.path("description").asText(); //$NON-NLS-1$
|
||||||
|
control = new MesonPropertyCheckbox(parent, name, Boolean.getBoolean(value), description);
|
||||||
|
controls.add(control);
|
||||||
|
break;
|
||||||
|
case "string": //$NON-NLS-1$
|
||||||
|
name = node.path("name").asText(); //$NON-NLS-1$
|
||||||
|
value = node.path("value").asText(); //$NON-NLS-1$
|
||||||
|
description = node.path("description").asText(); //$NON-NLS-1$
|
||||||
|
control = new MesonPropertyText(parent, name, value, description);
|
||||||
|
controls.add(control);
|
||||||
|
break;
|
||||||
|
case "array": //$NON-NLS-1$
|
||||||
|
name = node.path("name").asText(); //$NON-NLS-1$
|
||||||
|
value = new String(""); //$NON-NLS-1$
|
||||||
|
for (JsonNode val : node.path("value")) { ////$NON-NLS-1$
|
||||||
|
if (!value.isEmpty()) {
|
||||||
|
value += ","; //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
value += val.asText();
|
||||||
|
}
|
||||||
|
description = node.path("description").asText(); //$NON-NLS-1$
|
||||||
|
control = new MesonPropertyText(parent, name, value, description);
|
||||||
|
controls.add(control);
|
||||||
|
break;
|
||||||
|
case "integer": //$NON-NLS-1$
|
||||||
|
name = node.path("name").asText(); //$NON-NLS-1$
|
||||||
|
value = node.path("value").asText(); //$NON-NLS-1$
|
||||||
|
description = node.path("description").asText(); //$NON-NLS-1$
|
||||||
|
control = new MesonPropertyInteger(parent, this, name, value, description);
|
||||||
|
controls.add(control);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
Activator.log(e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Activator.log(e);
|
||||||
|
}
|
||||||
|
return controls;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2018 Red Hat Inc. and others.
|
* Copyright (c) 2018, 2020 Red Hat Inc. and others.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License 2.0
|
* are made available under the terms of the Eclipse Public License 2.0
|
||||||
|
@ -26,7 +26,7 @@ public class MesonPropertySpecialCheckbox extends MesonPropertyCheckbox {
|
||||||
if (checkbox.getSelection()) {
|
if (checkbox.getSelection()) {
|
||||||
return "--" + getFieldName(); //$NON-NLS-1$
|
return "--" + getFieldName(); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
return "";
|
return ""; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2018 Red Hat Inc. and others.
|
* Copyright (c) 2018, 2020 Red Hat Inc. and others.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License 2.0
|
* are made available under the terms of the Eclipse Public License 2.0
|
||||||
|
@ -33,13 +33,13 @@ public class MesonPropertyText implements IMesonPropertyPageControl {
|
||||||
this.initialValue = initialValue;
|
this.initialValue = initialValue;
|
||||||
Label label = new Label(composite, SWT.NONE);
|
Label label = new Label(composite, SWT.NONE);
|
||||||
label.setText(name);
|
label.setText(name);
|
||||||
|
label.setToolTipText(tooltip);
|
||||||
label.setLayoutData(new GridData());
|
label.setLayoutData(new GridData());
|
||||||
text = new Text(composite, SWT.SINGLE | SWT.BORDER);
|
text = new Text(composite, SWT.SINGLE | SWT.BORDER);
|
||||||
GridData data = new GridData(GridData.FILL_BOTH);
|
GridData data = new GridData(GridData.FILL_BOTH);
|
||||||
data.grabExcessHorizontalSpace = true;
|
data.grabExcessHorizontalSpace = true;
|
||||||
text.setLayoutData(data);
|
text.setLayoutData(data);
|
||||||
text.setText(initialValue);
|
text.setText(initialValue);
|
||||||
text.setToolTipText(tooltip);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,7 +68,7 @@ public class MesonPropertyText implements IMesonPropertyPageControl {
|
||||||
if (value != null && !value.isEmpty()) {
|
if (value != null && !value.isEmpty()) {
|
||||||
return "--" + getFieldName() + "=" + getFieldValue(); //$NON-NLS-1$ //$NON-NLS-2$
|
return "--" + getFieldName() + "=" + getFieldValue(); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
}
|
}
|
||||||
return "";
|
return ""; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Reference in a new issue