/******************************************************************************* * Copyright (c) 2007, 2015 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.managedbuilder.xlc.ui.wizards; import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage; import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager; import org.eclipse.cdt.managedbuilder.xlc.ui.Messages; import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin; import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; 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.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; /** * @author crecoskie * */ public class XLCSettingsWizardPage extends MBSCustomPage { public static final String PAGE_ID = "org.eclipse.cdt.managedbuilder.xlc.ui.XlcSettingsWizardPage"; //$NON-NLS-1$ private final class BrowseButtonSelectionListener implements SelectionListener { private final Composite composite; private BrowseButtonSelectionListener(Composite composite) { this.composite = composite; } @Override public void widgetDefaultSelected(SelectionEvent e) { // meaningless for a button... do nothing } @Override public void widgetSelected(SelectionEvent e) { // open a browse dialog DirectoryDialog dirDialog = new DirectoryDialog(composite.getShell(), SWT.APPLICATION_MODAL); String browsedDirectory = dirDialog.open(); if (browsedDirectory != null) { fDirTextBox.setText(browsedDirectory); } } } private Composite fComposite = null; private Text fDirTextBox; private Combo fVersionCombo; /** * @param pageID */ public XLCSettingsWizardPage(String pageID) { super(pageID); setDefaultPreferences(pageID); } /** * */ public XLCSettingsWizardPage() { super(PAGE_ID); setDefaultPreferences(PAGE_ID); } private void setDefaultPreferences(String pageID) { String compilerPath = XLCUIPlugin.getDefault().getPreferenceStore().getString(PreferenceConstants.P_XL_COMPILER_ROOT); MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, compilerPath); MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.P_XL_COMPILER_VERSION_8); } /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage#isCustomPageComplete() */ @Override protected boolean isCustomPageComplete() { return true; } /* (non-Javadoc) * @see org.eclipse.jface.wizard.IWizardPage#getName() */ @Override public String getName() { String name = Messages.XLCSettingsWizardPage_0; return name; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ @Override public void createControl(Composite parent) { // create a new composite fComposite = new Composite(parent, SWT.NONE); fComposite.setBounds(parent.getBounds()); GridLayout layout = new GridLayout(3, false); fComposite.setLayout(layout); fComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); // create the first label Label label1 = new Label(fComposite, SWT.NONE); label1.setText(Messages.XLCSettingsWizardPage_1); label1.setVisible(true); // create the text box for the path GridData dirBoxGridData = new GridData(); dirBoxGridData.grabExcessHorizontalSpace = true; dirBoxGridData.horizontalAlignment = SWT.FILL; fDirTextBox = new Text(fComposite, SWT.SINGLE | SWT.BORDER); fDirTextBox.setLayoutData(dirBoxGridData); fDirTextBox.setVisible(true); // set the default compiler location based on preferences IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); String compilerPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT); fDirTextBox.setText(compilerPath); // update the page manager with the setting MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, fDirTextBox.getText()); fDirTextBox.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { // update the page manager with the setting MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, fDirTextBox.getText()); } }); // create the browse button //String selectedPath = null; GridData buttonData = new GridData(); buttonData.horizontalAlignment = SWT.RIGHT; Button browseButton = new Button(fComposite, SWT.PUSH); browseButton.setAlignment(SWT.CENTER); browseButton.setText(Messages.XLCSettingsWizardPage_2); browseButton.addSelectionListener(new BrowseButtonSelectionListener(fComposite) ); browseButton.setVisible(true); // create the second label Label label2 = new Label(fComposite, SWT.NONE); label2.setText(Messages.XLCSettingsWizardPage_3); label2.setVisible(true); // create the version dropdown GridData comboData = new GridData(); comboData.grabExcessHorizontalSpace = true; comboData.horizontalAlignment = SWT.FILL; fVersionCombo = new Combo(fComposite, SWT.READ_ONLY); fVersionCombo.setLayoutData(comboData); // populate the combo fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME); fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME); fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME); fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME); // set the default based on the workbench preference String compilerVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION); fVersionCombo.setText(PreferenceConstants.getVersionLabel(compilerVersion)); // update the page manager with the setting MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.getVersion(fVersionCombo.getText())); fVersionCombo.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { // update the page manager with the setting MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.getVersion(fVersionCombo.getText())); } }); fVersionCombo.setVisible(true); } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#dispose() */ @Override public void dispose() { fComposite.dispose(); } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#getControl() */ @Override public Control getControl() { return fComposite; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#getDescription() */ @Override public String getDescription() { return Messages.XLCSettingsWizardPage_4; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#getErrorMessage() */ @Override public String getErrorMessage() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#getImage() */ @Override public Image getImage() { return wizard.getDefaultPageImage(); } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#getMessage() */ @Override public String getMessage() { return null; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#getTitle() */ @Override public String getTitle() { return Messages.XLCSettingsWizardPage_5; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#performHelp() */ @Override public void performHelp() { // TODO Auto-generated method stub } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#setDescription(java.lang.String) */ @Override public void setDescription(String description) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#setImageDescriptor(org.eclipse.jface.resource.ImageDescriptor) */ @Override public void setImageDescriptor(ImageDescriptor image) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#setTitle(java.lang.String) */ @Override public void setTitle(String title) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean) */ @Override public void setVisible(boolean visible) { fComposite.setVisible(visible); } }