blob: e60c66040f098f32bd309f221b4097535d3252dd [file] [log] [blame]
/*******************************************************************************
* 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();
}
}