summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt/src/org/rtems/cdt/wizards/BasicSetup.java
diff options
context:
space:
mode:
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.java232
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());
+ }
+}