blob: d72ab455d91255adfdee6e7b51f35f62a73c2445 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2016 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.autotools.ui.properties;
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.internal.autotools.core.AutotoolsPropertyConstants;
import org.eclipse.cdt.internal.autotools.ui.AbstractAutotoolsCPropertyTab;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public class AutotoolsToolsPropertyTab extends AbstractAutotoolsCPropertyTab {
public static final String DEFAULT_ACLOCAL = "aclocal"; //$NON-NLS-1$
public static final String DEFAULT_AUTOMAKE = "automake"; //$NON-NLS-1$
public static final String DEFAULT_AUTOCONF = "autoconf"; //$NON-NLS-1$
public static final String DEFAULT_AUTOHEADER = "autoheader"; //$NON-NLS-1$
public static final String DEFAULT_AUTORECONF = "autoreconf"; //$NON-NLS-1$
public static final String DEFAULT_LIBTOOLIZE = "libtoolize"; //$NON-NLS-1$
protected Text fAclocalPath;
protected Text fAutomakePath;
protected Text fAutoconfPath;
protected Text fAutoheaderPath;
protected Text fAutoreconfPath;
protected Text fLibtoolizePath;
private IProject project;
private IProject getProject() {
return page.getProject();
}
@Override
public boolean canBeVisible() {
return true;
}
@Override
public void createControls(Composite parent) {
super.createControls(parent);
Composite composite = usercomp;
// assume parent page uses griddata
GridData gd = new GridData(
GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL | GridData.FILL_HORIZONTAL);
composite.setLayoutData(gd);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
//PixelConverter pc= new PixelConverter(composite);
//layout.verticalSpacing= pc.convertHeightInCharsToPixels(1) / 2;
composite.setLayout(layout);
project = getProject();
Label label = new Label(composite, SWT.LEFT);
label.setText(AutotoolsPropertyMessages.getString("Autotools.aclocalPath")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalAlignment = GridData.BEGINNING;
label.setLayoutData(gd);
/* text window for aclocal path */
fAclocalPath = new Text(composite, SWT.BORDER | SWT.SINGLE);
fAclocalPath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.aclocalPath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fAclocalPath.setLayoutData(gd);
Label label2 = new Label(composite, SWT.LEFT);
label2.setText(AutotoolsPropertyMessages.getString("Autotools.automakePath")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalAlignment = GridData.BEGINNING;
label2.setLayoutData(gd);
/* text window for automake path */
fAutomakePath = new Text(composite, SWT.BORDER | SWT.SINGLE);
fAutomakePath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.automakePath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fAutomakePath.setLayoutData(gd);
Label label3 = new Label(composite, SWT.LEFT);
label3.setText(AutotoolsPropertyMessages.getString("Autotools.autoconfPath")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalAlignment = GridData.BEGINNING;
label3.setLayoutData(gd);
/* text window for autoconf path */
fAutoconfPath = new Text(composite, SWT.BORDER | SWT.SINGLE);
fAutoconfPath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.autoconfPath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fAutoconfPath.setLayoutData(gd);
Label label4 = new Label(composite, SWT.LEFT);
label4.setText(AutotoolsPropertyMessages.getString("Autotools.autoheaderPath")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalAlignment = GridData.BEGINNING;
label4.setLayoutData(gd);
/* text window for autoheader path */
fAutoheaderPath = new Text(composite, SWT.BORDER | SWT.SINGLE);
fAutoheaderPath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.autoheaderPath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fAutoheaderPath.setLayoutData(gd);
Label label5 = new Label(composite, SWT.LEFT);
label5.setText(AutotoolsPropertyMessages.getString("Autotools.autoreconfPath")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalAlignment = GridData.BEGINNING;
label5.setLayoutData(gd);
/* text window for autoreconf path */
fAutoreconfPath = new Text(composite, SWT.BORDER | SWT.SINGLE);
fAutoreconfPath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.autoreconfPath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fAutoreconfPath.setLayoutData(gd);
Label label6 = new Label(composite, SWT.LEFT);
label6.setText(AutotoolsPropertyMessages.getString("Autotools.libtoolizePath")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalAlignment = GridData.BEGINNING;
label6.setLayoutData(gd);
/* text window for libtoolize path */
fLibtoolizePath = new Text(composite, SWT.BORDER | SWT.SINGLE);
fLibtoolizePath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.libtoolizePath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fLibtoolizePath.setLayoutData(gd);
initialize();
}
@Override
public void performOK() {
String aclocalPath = null;
String automakePath = null;
String autoconfPath = null;
String autoheaderPath = null;
String autoreconfPath = null;
String libtoolizePath = null;
try {
aclocalPath = project.getPersistentProperty(AutotoolsPropertyConstants.ACLOCAL_TOOL);
} catch (CoreException e1) {
aclocalPath = DEFAULT_ACLOCAL;
}
String newAclocalPath = fAclocalPath.getText().trim();
if (aclocalPath == null || !newAclocalPath.equals(aclocalPath)) {
try {
project.setPersistentProperty(AutotoolsPropertyConstants.ACLOCAL_TOOL, newAclocalPath);
} catch (CoreException e1) {
// Not much we can do at this point
}
}
try {
automakePath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_TOOL);
} catch (CoreException e1) {
automakePath = DEFAULT_AUTOMAKE;
}
String newAutomakePath = fAutomakePath.getText().trim();
if (automakePath == null || !newAutomakePath.equals(automakePath)) {
try {
project.setPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_TOOL, newAutomakePath);
} catch (CoreException e2) {
// Not much we can do at this point
}
}
try {
autoconfPath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_TOOL);
} catch (CoreException e1) {
autoconfPath = DEFAULT_AUTOCONF;
}
String newAutoconfPath = fAutoconfPath.getText().trim();
if (autoconfPath == null || !newAutoconfPath.equals(autoconfPath)) {
try {
project.setPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_TOOL, newAutoconfPath);
} catch (CoreException e2) {
// Not much we can do at this point
}
}
try {
autoheaderPath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOHEADER_TOOL);
} catch (CoreException e1) {
autoheaderPath = DEFAULT_AUTOHEADER;
}
String newAutoheaderPath = fAutoheaderPath.getText().trim();
if (autoheaderPath == null || !newAutoheaderPath.equals(autoheaderPath)) {
try {
project.setPersistentProperty(AutotoolsPropertyConstants.AUTOHEADER_TOOL, newAutoheaderPath);
} catch (CoreException e2) {
// Not much we can do at this point
}
}
try {
autoreconfPath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTORECONF_TOOL);
} catch (CoreException e1) {
autoreconfPath = DEFAULT_AUTORECONF;
}
String newAutoreconfPath = fAutoreconfPath.getText().trim();
if (autoreconfPath == null || !newAutoreconfPath.equals(autoreconfPath)) {
try {
project.setPersistentProperty(AutotoolsPropertyConstants.AUTORECONF_TOOL, newAutoreconfPath);
} catch (CoreException e2) {
// Not much we can do at this point
}
}
try {
libtoolizePath = project.getPersistentProperty(AutotoolsPropertyConstants.LIBTOOLIZE_TOOL);
} catch (CoreException e1) {
libtoolizePath = DEFAULT_LIBTOOLIZE;
}
String newLibtoolizePath = fLibtoolizePath.getText().trim();
if (libtoolizePath == null || !newLibtoolizePath.equals(libtoolizePath)) {
try {
project.setPersistentProperty(AutotoolsPropertyConstants.LIBTOOLIZE_TOOL, newLibtoolizePath);
} catch (CoreException e2) {
// Not much we can do at this point
}
}
}
@Override
protected void performApply(ICResourceDescription src, ICResourceDescription dst) {
performOK();
}
@Override
public void performDefaults() {
// For default tool settings, simply default the base tool names
fAclocalPath.setText(DEFAULT_ACLOCAL);
fAutomakePath.setText(DEFAULT_AUTOMAKE);
fAutoconfPath.setText(DEFAULT_AUTOCONF);
fAutoheaderPath.setText(DEFAULT_AUTOHEADER);
fAutoreconfPath.setText(DEFAULT_AUTORECONF);
fLibtoolizePath.setText(DEFAULT_LIBTOOLIZE);
}
@Override
public void updateData(ICResourceDescription cfgd) {
// Nothing to do
}
@Override
public void updateButtons() {
// Nothing to do
}
private void initialize() {
String aclocalPath = null;
String automakePath = null;
String autoconfPath = null;
String autoheaderPath = null;
String autoreconfPath = null;
String libtoolizePath = null;
try {
aclocalPath = project.getPersistentProperty(AutotoolsPropertyConstants.ACLOCAL_TOOL);
} catch (CoreException e1) {
// do nothing
}
if (aclocalPath == null)
aclocalPath = DEFAULT_ACLOCAL;
fAclocalPath.setText(aclocalPath);
try {
automakePath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_TOOL);
} catch (CoreException e1) {
// do nothing
}
if (automakePath == null)
automakePath = DEFAULT_AUTOMAKE;
fAutomakePath.setText(automakePath);
try {
autoconfPath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_TOOL);
} catch (CoreException e1) {
// do nothing
}
if (autoconfPath == null)
autoconfPath = DEFAULT_AUTOCONF;
fAutoconfPath.setText(autoconfPath);
try {
autoheaderPath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOHEADER_TOOL);
} catch (CoreException e1) {
// do nothing
}
if (autoheaderPath == null)
autoheaderPath = DEFAULT_AUTOHEADER;
fAutoheaderPath.setText(autoheaderPath);
try {
autoreconfPath = project.getPersistentProperty(AutotoolsPropertyConstants.AUTORECONF_TOOL);
} catch (CoreException e1) {
// do nothing
}
if (autoreconfPath == null)
autoreconfPath = DEFAULT_AUTORECONF;
fAutoreconfPath.setText(autoreconfPath);
try {
libtoolizePath = project.getPersistentProperty(AutotoolsPropertyConstants.LIBTOOLIZE_TOOL);
} catch (CoreException e1) {
// do nothing
}
if (libtoolizePath == null)
libtoolizePath = DEFAULT_LIBTOOLIZE;
fLibtoolizePath.setText(libtoolizePath);
}
}