/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.debug.ui; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; import org.eclipse.jdt.internal.debug.ui.launcher.LauncherMessages; import org.eclipse.jdt.internal.debug.ui.launcher.SourceLookupBlock; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; 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.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; /** * A dialog to manipulate the source lookup path for a launch * configuration. * <p> * This class may be instantiated. * </p> * @since 2.0.2 * @see org.eclipse.jface.dialogs.Dialog * @deprecated In 3.0, the debug platform provides source lookup facilities that * should be used in place of the Java source lookup support provided in 2.0. * The new facilities provide a source lookup director that coordinates source * lookup among a set of participants, searching a set of source containers. * See the following packages: <code>org.eclipse.debug.core.sourcelookup</code> * and <code>org.eclipse.debug.core.sourcelookup.containers</code>. This class * has been replaced by a dialog in the debug platform - * <code>org.eclipse.debug.ui.sourcelookup.SourceLookupDialog</code>. * @noextend This class is not intended to be subclassed by clients. */ @Deprecated public class JavaSourceLookupDialog extends Dialog { private SourceLookupBlock fSourceLookupBlock; private ILaunchConfiguration fConfiguration; private String fMessage; private boolean fNotAskAgain; private Button fAskAgainCheckBox; /** * Constructs a dialog to manipulate the source lookup path of the given * launch configuration. The source lookup path is retrieved from the given * launch configuration, based on the attributes * <code>IJavaLaunchConfigurationConstants.ATTR_DEFAULT_SOURCE_PATH</code> and * <code>IJavaLaunchConfigurationConstants.ATTR_SOURCE_PATH</code>. If the user * changes the source lookup path and presses "OK", the launch configuration * is updated with the new source lookup path. * * @param shell the shell to open the dialog on * @param message the message to display in the dialog * @param configuration the launch configuration from which the source lookup * path is retrieved and (possibly) updated */ public JavaSourceLookupDialog(Shell shell, String message, ILaunchConfiguration configuration) { super(shell); fSourceLookupBlock= new SourceLookupBlock(); fMessage = message; fNotAskAgain= false; fAskAgainCheckBox= null; fConfiguration = configuration; } /** * Returns whether the "do not ask again" check box is selected in the dialog. * * @return whether the "do not ask again" check box is selected in the dialog */ public boolean isNotAskAgain() { return fNotAskAgain; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) */ @Override protected Control createDialogArea(Composite parent) { Font font = parent.getFont(); initializeDialogUnits(parent); getShell().setText(LauncherMessages.JavaUISourceLocator_selectprojects_title); Composite composite= (Composite) super.createDialogArea(parent); composite.setLayout(new GridLayout()); composite.setFont(font); int pixelWidth= convertWidthInCharsToPixels(70); Label message= new Label(composite, SWT.LEFT + SWT.WRAP); message.setText(fMessage); GridData data= new GridData(); data.widthHint= pixelWidth; message.setLayoutData(data); message.setFont(font); fSourceLookupBlock.createControl(composite); Control inner = fSourceLookupBlock.getControl(); fSourceLookupBlock.initializeFrom(fConfiguration); GridData gd = new GridData(GridData.FILL_BOTH); int height = Display.getCurrent().getBounds().height; gd.heightHint = (int)(0.4f * height); inner.setLayoutData(gd); fAskAgainCheckBox= new Button(composite, SWT.CHECK + SWT.WRAP); data= new GridData(); data.widthHint= pixelWidth; fAskAgainCheckBox.setLayoutData(data); fAskAgainCheckBox.setFont(font); fAskAgainCheckBox.setText(LauncherMessages.JavaUISourceLocator_askagain_message); return composite; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.Dialog#okPressed() */ @Override protected void okPressed() { try { if (fAskAgainCheckBox != null) { fNotAskAgain= fAskAgainCheckBox.getSelection(); } ILaunchConfigurationWorkingCopy wc = fConfiguration.getWorkingCopy(); fSourceLookupBlock.performApply(wc); if (!fConfiguration.contentsEqual(wc)) { fConfiguration = wc.doSave(); } } catch (CoreException e) { JDIDebugUIPlugin.log(e); } super.okPressed(); } }