summaryrefslogblamecommitdiffstats
path: root/org.rtems.cdt/src/org/rtems/cdt/properties/PropertyPage.java
blob: 72aa3987208ea43aee2a0ae96858c1efcfcc2b2e (plain) (tree)


























                                                                              
                                                       

















                                                                                               
                            


                                                                  
                                           
 
                                                                                                                                                                                 

         


                                                                                 



                                             
                                                                                               
                                       
                                                                                                                     





                                                                                     


                                                                           















                                                        






                                                                                 

         

                                                                          





                                         


                                                                

                                 
                                                







                                        
                                                    


                                        
/*
 * 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.properties;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IWorkbenchPropertyPage;
import org.eclipse.cdt.core.model.ICElement;
import org.rtems.cdt.Activator;
import org.rtems.cdt.Constants;
import org.rtems.cdt.Storage;
import org.rtems.cdt.VolatilePreferenceStore;

public class PropertyPage extends FieldEditorPreferencePage implements IWorkbenchPropertyPage {
	private IAdaptable mElement;

	private IPreferenceStore mStore;

	private IProject mProject;

	public PropertyPage() {
		super(GRID);

		// Store properties in a volatile preference store
		mStore = new VolatilePreferenceStore();
		setPreferenceStore(mStore);

		setDescription("You can change the RTEMS base installation path and the board support package (BSP) installation path.  This affects only the current project.");
	}

	private void setupStoreValue(IPreferenceStore defaultStore, String key) {
		mStore.setDefault(key, defaultStore.getString(key));
		mStore.setValue(key, Storage.getProperty(mProject, key));
	}

	protected void createFieldEditors() {
		// Get current project
		mProject = ((IResource) getElement().getAdapter(IResource.class)).getProject();
		if (mProject == null) {
			mProject = ((ICElement) getElement().getAdapter(ICElement.class)).getCProject().getProject();
		}

		// Get the default values from the current workbench preferences
		IPreferenceStore store = Activator.getDefault().getPreferenceStore();

		// Setup store values
		setupStoreValue(store, Constants.BASE_PATH_KEY);
		setupStoreValue(store, Constants.BSP_PATH_KEY);
		setupStoreValue(store, Constants.DISABLE_TOOL_OPTIONS_KEY);

		// Add field editors
		addField(
			new DirectoryFieldEditor(
				Constants.BASE_PATH_KEY,
				"Base path:",
				getFieldEditorParent()
			)
		);
		addField(
			new DirectoryFieldEditor(
				Constants.BSP_PATH_KEY,
				"BSP path:",
				getFieldEditorParent()
			)
		);
		addField(
			new BooleanFieldEditor(
				Constants.DISABLE_TOOL_OPTIONS_KEY,
				"Disable tool options derived from BSP settings",
				getFieldEditorParent()
			)
		);
	}

	private void setProperty(String key) {
		Storage.setProperty(mProject, key, mStore.getString(key));
	}

	public boolean performOk() {
		super.performOk();

		// Set the new properties
		setProperty(Constants.BASE_PATH_KEY);
		setProperty(Constants.BSP_PATH_KEY);
		setProperty(Constants.DISABLE_TOOL_OPTIONS_KEY);

		// Clear platform
		Storage.clearPlatform(mProject);

		return true;
	}

	public IAdaptable getElement() {
		return mElement;
	}

	public void setElement(IAdaptable element) {
		this.mElement = element;
	}
}