/******************************************************************************* * Copyright (c) 2004, 2005 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * QNX Software Systems - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.debug.mi.internal.ui.propertypages; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICDISession; import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.mi.core.cdi.Session; import org.eclipse.cdt.utils.ui.controls.ControlFactory; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.dialogs.PropertyPage; /** * The property page for the gdb/mi-based debugger options. */ public class OptionsPropertyPage extends PropertyPage { private Button fRefreshSolibsButton; /** * Constructor for OptionsPropertyPage. */ public OptionsPropertyPage() { noDefaultAndApplyButton(); } /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) */ protected Control createContents( Composite parent ) { Composite comp = ControlFactory.createComposite( parent, 1 ); fRefreshSolibsButton = createCheckButton( comp, PropertyMessages.getString( "OptionsPropertyPage.1" ) ); //$NON-NLS-1$ initialize(); return comp; } private Button createCheckButton( Composite parent, String label ) { Button button = new Button( parent, SWT.CHECK | SWT.LEFT ); button.setText( label ); // FieldEditor GridData GridData data = new GridData(); button.setLayoutData( data ); return button; } private void initialize() { boolean solibUpdate = true; ICDISession session = (ICDISession)getElement().getAdapter( ICDISession.class ); if ( session instanceof Session ) { solibUpdate = ((Session)session).getSharedLibraryManager().isAutoUpdate(); } fRefreshSolibsButton.setSelection( solibUpdate ); } protected void performApply() { storeValues(); super.performApply(); } public boolean performOk() { storeValues(); return super.performOk(); } private void storeValues() { ICDISession session = (ICDISession)getElement().getAdapter( ICDISession.class ); final ICDITarget target = (ICDITarget)getElement().getAdapter( ICDITarget.class ); if ( session instanceof Session ) { final boolean solibUpdate = fRefreshSolibsButton.getSelection(); final Session miSession = ((Session)session); miSession.getSharedLibraryManager().setAutoUpdate( solibUpdate ); if ( target.isSuspended() && solibUpdate ) { DebugPlugin.getDefault().asyncExec( new Runnable() { public void run() { if ( target.isSuspended() ) { if ( solibUpdate ) { try { miSession.getSharedLibraryManager().update(); } catch( CDIException e ) { } } } } } ); } } } }