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