blob: 413d5f4fa0fc856343227602478fb451a77104ae [file] [log] [blame]
package org.eclipse.jdt.internal.debug.ui.launcher;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.internal.debug.ui.IHelpContextIds;
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Widget;
import org.eclipse.ui.help.DialogPageContextComputer;
import org.eclipse.ui.help.WorkbenchHelp;
/*
* The page for setting Java runtime
*/
public class VMPropertyPage extends JavaProjectPropertyPage {
private VMSelector fVMSelector;
private Control fVMSelectorWidget;
private Button fUseDefault;
private Button fUseCustom;
private boolean fFirstTime= true;
public VMPropertyPage() {
fVMSelector= new VMSelector();
setTitle(LauncherMessages.getString("vmPropertyPage.title")); //$NON-NLS-1$
noDefaultAndApplyButton();
}
protected Control createJavaContents(Composite ancestor) {
Composite parent= new Composite(ancestor, SWT.NULL);
parent.setLayout(new GridLayout());
SelectionListener listener= new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
buttonSelected(e.widget);
}
};
fUseDefault= new Button(parent, SWT.RADIO);
fUseDefault.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fUseDefault.setText(LauncherMessages.getString("vmPropertyPage.useDefaultJRE")); //$NON-NLS-1$
fUseDefault.addSelectionListener(listener);
fUseCustom= new Button(parent, SWT.RADIO);
fUseCustom.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fUseCustom.setText(LauncherMessages.getString("vmPropertyPage.useCustomJRE")); //$NON-NLS-1$
fUseCustom.addSelectionListener(listener);
fVMSelectorWidget= fVMSelector.createContents(parent);
fVMSelector.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
listSelectionChanged(event.getSelection());
}
});
fVMSelectorWidget.setLayoutData(new GridData(GridData.FILL_BOTH));
initFromProject(getJavaProject());
WorkbenchHelp.setHelp(ancestor, new DialogPageContextComputer(this, IHelpContextIds.LAUNCH_JRE_PROPERTY_PAGE));
return parent;
}
private void buttonSelected(Widget widget) {
fVMSelectorWidget.setEnabled(widget == fUseCustom);
}
private void listSelectionChanged(ISelection newSelection) {
setValid(fVMSelector.validateSelection(newSelection));
}
/**
* Called to initialize the dialog
*/
private void initFromProject(IJavaProject project) {
IVMInstall vm= null;
try {
vm= JavaRuntime.getVMInstall(project);
} catch (CoreException e) {
JDIDebugUIPlugin.log(e.getStatus());
}
fVMSelectorWidget.setEnabled(vm != null);
fUseCustom.setSelection(vm != null);
fUseDefault.setSelection(vm == null);
if (vm == null) {
vm= JavaRuntime.getDefaultVMInstall();
}
fVMSelector.selectVM(vm);
}
protected boolean performJavaOk() {
IJavaProject project= getJavaProject();
if (project != null) {
try {
IVMInstall vm= null;
if (fUseCustom.getSelection())
vm= fVMSelector.getSelectedVM();
JavaRuntime.setVM(project, vm);
} catch (CoreException e) {
JDIDebugUIPlugin.log(e.getStatus());
}
}
return true;
}
}