/* * 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()); } }