diff options
Diffstat (limited to 'org.rtems.cdt/src/org/rtems/cdt/wizards/BasicSetup.java')
-rw-r--r-- | org.rtems.cdt/src/org/rtems/cdt/wizards/BasicSetup.java | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/org.rtems.cdt/src/org/rtems/cdt/wizards/BasicSetup.java b/org.rtems.cdt/src/org/rtems/cdt/wizards/BasicSetup.java new file mode 100644 index 0000000..d2bd4cc --- /dev/null +++ b/org.rtems.cdt/src/org/rtems/cdt/wizards/BasicSetup.java @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2008 Embedded Brains GmbH and others. + * + * Embedded Brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * rtems@embedded-brains.de + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Eclipse Public License Version 1.0 ("EPL") + * which accompanies this distribution and is available at + * + * http://www.eclipse.org/legal/epl-v10.html + * + * For purposes of the EPL, "Program" will mean the Content. + * + * Contributors: + * + * Sebastian Huber (Embedded Brains GmbH) - Initial API and implementation. + */ + +package org.rtems.cdt.wizards; + +import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage; +import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager; +import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard; +import org.eclipse.core.resources.IProject; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +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.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; +import org.eclipse.swt.SWT; +import org.rtems.cdt.Constants; +import org.rtems.cdt.Storage; + +public class BasicSetup extends MBSCustomPage { + public static final String PAGE_ID = "org.rtems.cdt.wizards.BasicSetup"; + + public static final String BROWSE = " &Browse... "; + + private Composite mComposite; + + private Text mBasePath; + + private Text mBSPPath; + + public BasicSetup() { + pageID = PAGE_ID; + } + + public boolean canFlipToNextPage() { + return MBSCustomPageManager.getNextPage( pageID) != null; + } + + public String getName() { + return "Basic Setup Page"; + } + + public void createControl( Composite parent) { + // Create base widget + mComposite = new Composite( parent, SWT.NONE); + + GridData gd = new GridData( GridData.FILL_BOTH); + mComposite.setLayoutData( gd); + + GridLayout layout = new GridLayout(); + layout.numColumns = 3; + mComposite.setLayout( layout); + + // Base path + Label label = new Label( mComposite, SWT.LEFT); + label.setText( "Base path:"); + + mBasePath = new Text( mComposite, SWT.LEFT | SWT.BORDER); + gd = new GridData( GridData.FILL_HORIZONTAL); + mBasePath.setLayoutData( gd); + + Button button = new Button( mComposite, SWT.PUSH); + button.setText( BROWSE); + button.addSelectionListener( + new SelectionAdapter() { + public void widgetSelected( SelectionEvent e) { + browseForPath( mBasePath); + } + } + ); + + // BSP path + label = new Label( mComposite, SWT.LEFT); + label.setText( "BSP path:"); + + mBSPPath = new Text( mComposite, SWT.LEFT | SWT.BORDER); + gd = new GridData( GridData.FILL_HORIZONTAL); + mBSPPath.setLayoutData( gd); + + button = new Button( mComposite, SWT.PUSH); + button.setText( BROWSE); + button.addSelectionListener( + new SelectionAdapter() { + public void widgetSelected( SelectionEvent e) { + browseForPath( mBSPPath); + } + } + ); + + // Connect user input + mBasePath.addModifyListener( + new ModifyListener() { + public void modifyText( ModifyEvent e) { + basePathChanged(); + } + } + ); + mBSPPath.addModifyListener( + new ModifyListener() { + public void modifyText( ModifyEvent e) { + bspPathChanged(); + } + } + ); + + // Trigger initial setup + basePathChanged(); + bspPathChanged(); + } + + public void dispose() { + mComposite.dispose(); + } + + public Control getControl() { + return mComposite; + } + + public String getDescription() { + return "Select the RTEMS base installation path and the board support package (BSP) installation path."; + } + + public String getErrorMessage() { + return null; + } + + public Image getImage() { + return wizard.getDefaultPageImage(); + } + + public String getMessage() { + return null; + } + + public String getTitle() { + return "RTEMS Setup"; + } + + public void performHelp() { + // Do nothing + } + + public void setDescription( String description) { + // Do nothing + } + + public void setImageDescriptor( ImageDescriptor image) { + // Do nothing + } + + public void setTitle( String title) { + // Do nothing + } + + public void setVisible( boolean visible) { + // Get current project + CDTCommonProjectWizard wizard = (CDTCommonProjectWizard) getWizard(); + IProject project = wizard.getLastProject(); + + /* + * Here we have to take care about the synchronization between the wizard + * and the properties of the new project (advanced settings dialog). + */ + if (visible) { + if (project != null) { + // For already created projects use the properties + mBasePath.setText( Storage.getProperty( project, Constants.BASE_PATH_KEY)); + mBSPPath.setText( Storage.getProperty( project, Constants.BSP_PATH_KEY)); + } else { + // For not yet created projects use the preferences + mBasePath.setText( Storage.getPreference( Constants.BASE_PATH_KEY)); + mBSPPath.setText( Storage.getPreference( Constants.BSP_PATH_KEY)); + } + } else { + if (project != null) { + // Store the wizard values in the properties if the project exists already + Storage.setProperty( project, Constants.BASE_PATH_KEY, mBasePath.getText()); + Storage.setProperty( project, Constants.BSP_PATH_KEY, mBSPPath.getText()); + } + } + + mComposite.setVisible( visible); + } + + protected boolean isCustomPageComplete() { + return true; + } + + private void browseForPath( Text text) { + DirectoryDialog dialog = new DirectoryDialog( mComposite.getShell(), SWT.NONE); + dialog.setFilterPath( text.getText()); + String path = dialog.open(); + if (path != null) { + text.setText( path); + } + } + + private void basePathChanged() { + MBSCustomPageManager.addPageProperty( pageID, Constants.BASE_PATH_KEY, mBasePath.getText()); + } + + private void bspPathChanged() { + MBSCustomPageManager.addPageProperty( pageID, Constants.BSP_PATH_KEY, mBSPPath.getText()); + } +} |