| /******************************************************************************* |
| * 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.autotools.core.AutotoolsPlugin; |
| import org.eclipse.cdt.core.settings.model.ICResourceDescription; |
| import org.eclipse.cdt.internal.autotools.core.AutotoolsPropertyConstants; |
| import org.eclipse.cdt.managedbuilder.ui.properties.AbstractCBuildPropertyTab; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| 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.Group; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.Text; |
| |
| public class AutotoolsBuildPropertyPage extends AbstractCBuildPropertyTab { |
| |
| private String TRUE = "true"; //$NON-NLS-1$ |
| private String FALSE = "false"; //$NON-NLS-1$ |
| private String CLEAN_DELETE_LABEL = "CleanDelete.label"; //$NON-NLS-1$ |
| private String CLEAN_MAKE_LABEL = "CleanMake.label"; //$NON-NLS-1$ |
| private String CLEAN_MAKETARGET_LABEL = "CleanMakeTarget.label"; //$NON-NLS-1$ |
| private String CLEAN_MAKETARGET_TOOLTIP = "CleanMakeTarget.tooltip"; //$NON-NLS-1$ |
| private String AUTO_BUILDNAME_LABEL = "AutoBuildName.label"; //$NON-NLS-1$ |
| private String AUTO_BUILDNAME_TOOLTIP = "AutoBuildName.tooltip"; //$NON-NLS-1$ |
| |
| protected Button fCleanDelete; |
| protected Button fCleanMake; |
| protected Button fAutoName; |
| protected Text fCleanMakeTarget; |
| |
| private IProject getProject() { |
| return (IProject) getCfg().getManagedProject().getOwner(); |
| } |
| |
| @Override |
| public boolean canBeVisible() { |
| return AutotoolsPlugin.hasTargetBuilder(getProject()); |
| } |
| |
| @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); |
| |
| Group g = new Group(composite, SWT.SHADOW_ETCHED_IN); |
| g.setText(AutotoolsPropertyMessages.getString("CleanBehavior.title")); //$NON-NLS-1$ |
| gd = new GridData( |
| GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL); |
| gd.horizontalSpan = 2; |
| g.setLayoutData(gd); |
| layout = new GridLayout(); |
| layout.numColumns = 2; |
| g.setLayout(layout); |
| |
| fCleanDelete = new Button(g, SWT.RADIO); |
| fCleanDelete.setText(AutotoolsPropertyMessages.getString(CLEAN_DELETE_LABEL)); |
| gd = new GridData(); |
| gd.horizontalAlignment = GridData.BEGINNING; |
| gd.horizontalSpan = 2; |
| fCleanDelete.setLayoutData(gd); |
| fCleanMake = new Button(g, SWT.RADIO); |
| fCleanMake.setText(AutotoolsPropertyMessages.getString(CLEAN_MAKE_LABEL)); |
| gd = new GridData(); |
| gd.horizontalAlignment = GridData.BEGINNING; |
| gd.horizontalSpan = 2; |
| fCleanMake.setLayoutData(gd); |
| |
| Label label = new Label(g, SWT.LEFT); |
| label.setText(AutotoolsPropertyMessages.getString(CLEAN_MAKETARGET_LABEL)); |
| gd = new GridData(); |
| gd.horizontalAlignment = GridData.BEGINNING; |
| label.setLayoutData(gd); |
| |
| fCleanMakeTarget = new Text(g, SWT.SINGLE | SWT.BORDER); |
| fCleanMakeTarget.setText(AutotoolsPropertyConstants.CLEAN_MAKE_TARGET_DEFAULT); |
| fCleanMakeTarget.setToolTipText(AutotoolsPropertyMessages.getString(CLEAN_MAKETARGET_TOOLTIP)); |
| gd = new GridData( |
| GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL); |
| fCleanMakeTarget.setLayoutData(gd); |
| |
| fCleanDelete.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| fCleanMake.setSelection(false); |
| fCleanDelete.setSelection(true); |
| fCleanMakeTarget.setEnabled(false); |
| } |
| }); |
| |
| fCleanMake.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| fCleanDelete.setSelection(false); |
| fCleanMake.setSelection(true); |
| fCleanMakeTarget.setEnabled(true); |
| } |
| }); |
| |
| fCleanMakeTarget.addModifyListener(e -> { |
| if (fCleanMakeTarget.getText().isEmpty()) { |
| // FIXME: should probably issue warning here, but how? |
| } |
| }); |
| |
| fAutoName = new Button(composite, SWT.LEFT | SWT.CHECK); |
| fAutoName.setText(AutotoolsPropertyMessages.getString(AUTO_BUILDNAME_LABEL)); |
| fAutoName.setToolTipText(AutotoolsPropertyMessages.getString(AUTO_BUILDNAME_TOOLTIP)); |
| gd = new GridData(); |
| gd.horizontalAlignment = GridData.BEGINNING; |
| gd.horizontalSpan = 2; |
| fAutoName.setLayoutData(gd); |
| |
| initialize(); |
| } |
| |
| @Override |
| protected void performOK() { |
| IProject project = getProject(); |
| if (fCleanDelete.getSelection()) { |
| try { |
| project.setPersistentProperty(AutotoolsPropertyConstants.CLEAN_DELETE, TRUE); |
| } catch (CoreException ce) { |
| // FIXME: what can we do here? |
| } |
| } else { |
| try { |
| project.setPersistentProperty(AutotoolsPropertyConstants.CLEAN_DELETE, FALSE); |
| } catch (CoreException ce) { |
| // FIXME: what can we do here? |
| } |
| try { |
| project.setPersistentProperty(AutotoolsPropertyConstants.CLEAN_MAKE_TARGET, fCleanMakeTarget.getText()); |
| } catch (CoreException ce) { |
| // FIXME: what can we do here? |
| } |
| } |
| |
| if (fAutoName.getSelection()) { |
| try { |
| project.setPersistentProperty(AutotoolsPropertyConstants.AUTO_BUILD_NAME, TRUE); |
| } catch (CoreException ce) { |
| // FIXME: what can we do here? |
| } |
| } else { |
| try { |
| project.setPersistentProperty(AutotoolsPropertyConstants.AUTO_BUILD_NAME, FALSE); |
| } catch (CoreException ce) { |
| // FIXME: what can we do here? |
| } |
| } |
| |
| } |
| |
| @Override |
| protected void performApply(ICResourceDescription src, ICResourceDescription dst) { |
| performOK(); |
| } |
| |
| @Override |
| protected void performDefaults() { |
| fCleanDelete.setSelection(false); |
| fCleanMake.setSelection(true); |
| fCleanMakeTarget.setText(AutotoolsPropertyConstants.CLEAN_MAKE_TARGET_DEFAULT); |
| fCleanMakeTarget.setEnabled(true); |
| fAutoName.setEnabled(true); |
| } |
| |
| @Override |
| public void updateData(ICResourceDescription cfgd) { |
| // what to do here? |
| } |
| |
| @Override |
| public void updateButtons() { |
| // what to do here? |
| } |
| |
| private void initialize() { |
| IProject project = getProject(); |
| String cleanDelete = null; |
| String autoName = null; |
| String cleanMakeTarget = null; |
| try { |
| cleanDelete = project.getPersistentProperty(AutotoolsPropertyConstants.CLEAN_DELETE); |
| cleanMakeTarget = project.getPersistentProperty(AutotoolsPropertyConstants.CLEAN_MAKE_TARGET); |
| autoName = project.getPersistentProperty(AutotoolsPropertyConstants.AUTO_BUILD_NAME); |
| } catch (CoreException e) { |
| // do nothing |
| } |
| |
| if (cleanMakeTarget == null) { |
| cleanMakeTarget = AutotoolsPropertyConstants.CLEAN_MAKE_TARGET_DEFAULT; |
| } |
| fCleanMakeTarget.setText(cleanMakeTarget); |
| |
| if (cleanDelete == null || cleanDelete.equals(FALSE)) { |
| fCleanDelete.setSelection(false); |
| fCleanMake.setSelection(true); |
| fCleanMakeTarget.setEnabled(true); |
| } else { |
| fCleanDelete.setSelection(true); |
| fCleanMake.setSelection(false); |
| fCleanMakeTarget.setEnabled(false); |
| } |
| |
| if (autoName == null || autoName.equals(TRUE)) |
| fAutoName.setSelection(true); |
| else |
| fAutoName.setSelection(false); |
| } |
| |
| } |