/*******************************************************************************
* Copyright (c) 2007, 2015 Red Hat Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* 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.internal.autotools.ui.AbstractAutotoolsCPropertyTab;
import org.eclipse.cdt.internal.autotools.ui.preferences.AutotoolsEditorPreferenceConstants;
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.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
public class AutotoolsEditorPropertyTab extends AbstractAutotoolsCPropertyTab {
protected Combo fACVersionCombo;
protected Combo fAMVersionCombo;
IProject project;
@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);
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 = page.getProject();
/* check box for new editors */
fACVersionCombo= new Combo(composite, SWT.CHECK | SWT.DROP_DOWN | SWT.READ_ONLY);
fACVersionCombo.setItems(AutotoolsPropertyConstants.fACVersions);
fACVersionCombo.select(AutotoolsPropertyConstants.fACVersions.length - 1);
gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
fACVersionCombo.setLayoutData(gd);
Label label= new Label(composite, SWT.LEFT);
label.setText(AutotoolsPropertyMessages.getString("ACEditor.autoconfVersion")); //$NON-NLS-1$
gd= new GridData();
gd.horizontalAlignment= GridData.BEGINNING;
label.setLayoutData(gd);
/* check box for new editors */
fAMVersionCombo= new Combo(composite, SWT.CHECK | SWT.DROP_DOWN | SWT.READ_ONLY);
fAMVersionCombo.setItems(AutotoolsPropertyConstants.fAMVersions);
fAMVersionCombo.select(AutotoolsPropertyConstants.fAMVersions.length - 1);
gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
fAMVersionCombo.setLayoutData(gd);
Label label2= new Label(composite, SWT.LEFT);
label2.setText(AutotoolsPropertyMessages.getString("ACEditor.automakeVersion")); //$NON-NLS-1$
gd= new GridData();
gd.horizontalAlignment= GridData.BEGINNING;
label2.setLayoutData(gd);
initialize();
}
@Override
public void performOK() {
String acVer = null;
String amVer = null;
boolean changed = false;
try {
acVer = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_VERSION);
amVer = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_VERSION);
} catch (CoreException e) {
acVer = "";
amVer = "";
}
int index = fACVersionCombo.getSelectionIndex();
String acVerSelected = fACVersionCombo.getItem(index);
if (!acVerSelected.equals(acVer)) {
changed = true;
try {
project.setPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_VERSION, fACVersionCombo.getItem(index));
} catch (CoreException ce) {
// Not much we can do at this point
}
}
index = fAMVersionCombo.getSelectionIndex();
String amVerSelected = fAMVersionCombo.getItem(index);
if (!amVerSelected.equals(amVer)) {
changed = true;
try {
project.setPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_VERSION, fAMVersionCombo.getItem(index));
} catch (CoreException ce) {
// Not much we can do here either
}
}
// Notify any Autoconf editors that are open for this project that macro versioning
// has changed.
if (changed)
AutotoolsPropertyManager.getDefault().notifyPropertyListeners(project, AutotoolsPropertyConstants.AUTOCONF_MACRO_VERSIONING);
}
@Override
protected void performApply(ICResourceDescription src, ICResourceDescription dst) {
performOK();
}
@Override
public void performDefaults() {
// For default Autoconf and Automake versions, use the setting from the
// Autotools preference dialog.
String version = AutotoolsPlugin.getDefault().getPreferenceStore().getString(AutotoolsEditorPreferenceConstants.AUTOCONF_VERSION);
String[] items = fACVersionCombo.getItems();
// Try and find which list item matches the current preference stored and
// select it in the list.
int i;
for (i = 0; i < items.length; ++i) {
if (items[i].equals(version))
break;
}
if (i >= items.length)
i = items.length - 1;
fACVersionCombo.select(i);
version = AutotoolsPlugin.getDefault().getPreferenceStore().getString(AutotoolsEditorPreferenceConstants.AUTOMAKE_VERSION);
items = fAMVersionCombo.getItems();
// Try and find which list item matches the current preference stored and
// select it in the list
for (i = 0; i < items.length; ++i) {
if (items[i].equals(version))
break;
}
if (i >= items.length)
i = items.length - 1;
fAMVersionCombo.select(i);
}
@Override
public void updateData(ICResourceDescription cfgd) {
// Nothing to do
}
@Override
public void updateButtons() {
// Nothing to do
}
private void initialize() {
initializeACVersion();
initializeAMVersion();
}
void initializeACVersion() {
String version = "";
try {
version = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_VERSION);
if (version == null)
version = AutotoolsPlugin.getDefault().getPreferenceStore().getString(AutotoolsEditorPreferenceConstants.AUTOCONF_VERSION);
} catch (CoreException e) {
// do nothing
}
String[] items = fACVersionCombo.getItems();
// Try and find which list item matches the current preference stored and
// select it in the list.
int i;
for (i = 0; i < items.length; ++i) {
if (items[i].equals(version))
break;
}
if (i >= items.length)
i = items.length - 1;
fACVersionCombo.select(i);
}
void initializeAMVersion() {
String version = "";
try {
version = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_VERSION);
if (version == null)
version = AutotoolsPlugin.getDefault().getPreferenceStore().getString(AutotoolsEditorPreferenceConstants.AUTOMAKE_VERSION);
} catch (CoreException e) {
// do nothing
}
String[] items = fAMVersionCombo.getItems();
// Try and find which list item matches the current preference stored and
// select it in the list.
int i;
for (i = 0; i < items.length; ++i) {
if (items[i].equals(version))
break;
}
if (i >= items.length)
i = items.length - 1;
fAMVersionCombo.select(i);
}
}