/* * Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved. * * This program and the accompanying materials are made available * under the terms of the Eclipse Public License, Version 1.0, * which accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html * */ package net.rim.ejde.internal.ui.preferences; import java.util.List; import net.rim.ejde.internal.core.ContextManager; import net.rim.ejde.internal.model.BasicBlackBerryProperties.PreprocessorTag; import net.rim.ejde.internal.model.preferences.PreprocessorPreferences; import net.rim.ejde.internal.util.Messages; import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; public class PreprocessorPrefsPage extends BasicPrefsPage { private WorkspacePreprocesDirectiveUI _preprocessDirectiveUI; private Button _popForPreprocessHookMissing; /** * Creates and returns the SWT control for the customized body of this property page under the given parent composite. * * @param parent * the parent composite * @return the new control */ @Override protected Control createContents( Composite parent ) { // preprocess label Label preprocessLabel = new Label( parent, SWT.NONE ); preprocessLabel.setText( Messages.BuildPrefsPage_PreprocessTab ); // preprocess tag table _preprocessDirectiveUI = new WorkspacePreprocesDirectiveUI( parent, PreprocessorTag.WS_SCOPE ); _preprocessDirectiveUI.addListener(); // _popForPreprocessHookMissing = new Button( parent, SWT.CHECK ); _popForPreprocessHookMissing.setText( "Open popup when preprocess hook is not configured" ); _popForPreprocessHookMissing.setSelection( PreprocessorPreferences.getPopForPreprocessHookMissing() ); return parent; } @Override public boolean performOk() { storePrefValues(); return true; } @Override public boolean performCancel() { if( _preprocessDirectiveUI != null ) { _preprocessDirectiveUI.removeAllDirectives(); } return super.performCancel(); } @Override protected void performDefaults() { if( _preprocessDirectiveUI != null ) { _preprocessDirectiveUI.performDefaults(); } _popForPreprocessHookMissing.setSelection( PreprocessorPreferences.getDefaultPopForPreprocessHookMissing() ); super.performDefaults(); } @Override public void propertyChange( PropertyChangeEvent event ) { } private void storePrefValues() { PreprocessorPreferences.setPreprocessDefines( _preprocessDirectiveUI.getScopeDirectives() ); PreprocessorPreferences.setPopForPreprocessHookMissing( _popForPreprocessHookMissing.getSelection() ); } class WorkspacePreprocesDirectiveUI extends PreprocessDirectiveUI { public WorkspacePreprocesDirectiveUI( Composite parent, int scope ) { super( parent, scope ); } @Override protected void performDefaults() { List< PreprocessorTag > JREDirectives = getJREWorkspaceDirectives(); setInput( JREDirectives.toArray( new PreprocessorTag[ JREDirectives.size() ] ) ); } @Override protected void performChanged() { // TODO Auto-generated method stub } @Override protected void addListener() { ContextManager.getDefault().getPreferenceStore().removePropertyChangeListener( this ); ContextManager.getDefault().getPreferenceStore().addPropertyChangeListener( this ); JavaRuntime.removeVMInstallChangedListener( this ); JavaRuntime.addVMInstallChangedListener( this ); } @Override protected void removeListener() { ContextManager.getDefault().getPreferenceStore().removePropertyChangeListener( this ); JavaRuntime.removeVMInstallChangedListener( this ); } } }