blob: 98e57bb878c82ff06b859ef1f29ba5b75ff66ebd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2007 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.wst.server.ui.internal;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.wst.server.core.internal.ServerPreferences;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.help.IWorkbenchHelpSystem;
/**
* The preference page that holds server launching properties.
*/
public class LaunchingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
protected ServerPreferences preferences;
protected ServerUIPreferences uiPreferences;
protected Button publishBeforeStart;
protected byte saveEditors;
protected Button[] saveButtons;
protected int launchMode;
protected Button[] launchModeButtons;
protected int launchMode2;
protected Button[] launchMode2Buttons;
protected int breakpointEnablement;
protected Button[] breakpointButtons;
protected int restartEnablement;
protected Button[] restartButtons;
/**
* ServerPreferencesPage constructor comment.
*/
public LaunchingPreferencePage() {
super();
preferences = ServerPreferences.getInstance();
uiPreferences = ServerUIPlugin.getPreferences();
}
/**
* Create the preference options.
*
* @param parent org.eclipse.swt.widgets.Composite
* @return org.eclipse.swt.widgets.Control
*/
protected Control createContents(Composite parent) {
initializeDialogUnits(parent);
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
whs.setHelp(parent, ContextIds.PREF_GENERAL);
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.horizontalSpacing = convertHorizontalDLUsToPixels(4);
layout.verticalSpacing = convertVerticalDLUsToPixels(4);
layout.marginWidth = 0;
layout.marginHeight = 0;
layout.numColumns = 3;
composite.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL);
composite.setLayoutData(data);
publishBeforeStart = new Button(composite, SWT.CHECK);
publishBeforeStart.setText(Messages.prefAutoPublish);
data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
data.horizontalSpan = 3;
publishBeforeStart.setLayoutData(data);
publishBeforeStart.setSelection(preferences.isAutoPublishing());
whs.setHelp(publishBeforeStart, ContextIds.PREF_GENERAL_PUBLISH_BEFORE_START);
Label label = new Label(composite, SWT.NONE);
data = new GridData();
data.horizontalSpan = 3;
label.setLayoutData(data);
createSaveEditorGroup(composite);
createLaunchModeGroup(composite);
createLaunchMode2Group(composite);
createBreakpointsGroup(composite);
createRestartGroup(composite);
setSaveEditorStatus(uiPreferences.getSaveEditors());
setLaunchModeStatus(uiPreferences.getLaunchMode());
setLaunchMode2Status(uiPreferences.getLaunchMode2());
setBreakpointsStatus(uiPreferences.getEnableBreakpoints());
setRestartStatus(uiPreferences.getRestart());
Dialog.applyDialogFont(composite);
return composite;
}
protected void createSaveEditorGroup(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setText(Messages.prefSaveEditors);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
group.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 3;
group.setLayoutData(data);
String[] messages = new String[] {
Messages.prefSaveEditorsAlways, Messages.prefSaveEditorsNever,
Messages.prefSaveEditorsPrompt
};
final byte[] options = new byte[] {
ServerUIPreferences.SAVE_EDITORS_ALWAYS,
ServerUIPreferences.SAVE_EDITORS_NEVER,
ServerUIPreferences.SAVE_EDITORS_PROMPT
};
Button[] buttons = new Button[3];
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
for (int i = 0; i < 3; i++) {
buttons[i] = new Button(group, SWT.RADIO);
buttons[i].setText(messages[i]);
final int b = i;
buttons[i].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
saveEditors = options[b];
}
});
whs.setHelp(buttons[i], ContextIds.PREF_GENERAL_SAVE_EDITORS);
}
saveButtons = buttons;
}
protected void setSaveEditorStatus(byte status) {
saveEditors = status;
saveButtons[0].setSelection(saveEditors == ServerUIPreferences.SAVE_EDITORS_ALWAYS);
saveButtons[1].setSelection(saveEditors == ServerUIPreferences.SAVE_EDITORS_NEVER);
saveButtons[2].setSelection(saveEditors == ServerUIPreferences.SAVE_EDITORS_PROMPT);
}
protected void createLaunchModeGroup(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setText(Messages.prefLaunchMode);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
group.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 3;
group.setLayoutData(data);
String[] messages = new String[] {
Messages.prefLaunchModeRestart, Messages.prefLaunchModeContinue,
Messages.prefLaunchModePrompt
};
final byte[] options = new byte[] {
ServerUIPreferences.LAUNCH_MODE_RESTART,
ServerUIPreferences.LAUNCH_MODE_CONTINUE,
ServerUIPreferences.LAUNCH_MODE_PROMPT
};
Button[] buttons = new Button[3];
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
for (int i = 0; i < 3; i++) {
buttons[i] = new Button(group, SWT.RADIO);
buttons[i].setText(messages[i]);
final int b = i;
buttons[i].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
launchMode = options[b];
}
});
whs.setHelp(buttons[i], ContextIds.PREF_GENERAL_LAUNCH_MODE);
}
launchModeButtons = buttons;
}
protected void setLaunchModeStatus(int mode) {
launchMode = mode;
launchModeButtons[0].setSelection(launchMode == ServerUIPreferences.LAUNCH_MODE_RESTART);
launchModeButtons[1].setSelection(launchMode == ServerUIPreferences.LAUNCH_MODE_CONTINUE);
launchModeButtons[2].setSelection(launchMode == ServerUIPreferences.LAUNCH_MODE_PROMPT);
}
protected void createLaunchMode2Group(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setText(Messages.prefLaunchMode2);
GridLayout layout = new GridLayout();
layout.numColumns = 4;
group.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 3;
group.setLayoutData(data);
String[] messages = new String[] {
Messages.prefLaunchMode2Restart, Messages.prefLaunchMode2Breakpoints,
Messages.prefLaunchMode2Continue, Messages.prefLaunchMode2Prompt
};
final byte[] options = new byte[] {
ServerUIPreferences.LAUNCH_MODE2_RESTART,
ServerUIPreferences.LAUNCH_MODE2_DISABLE_BREAKPOINTS,
ServerUIPreferences.LAUNCH_MODE2_CONTINUE,
ServerUIPreferences.LAUNCH_MODE2_PROMPT
};
Button[] buttons = new Button[4];
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
for (int i = 0; i < 4; i++) {
buttons[i] = new Button(group, SWT.RADIO);
buttons[i].setText(messages[i]);
final int b = i;
buttons[i].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
launchMode2 = options[b];
}
});
whs.setHelp(buttons[i], ContextIds.PREF_GENERAL_LAUNCH_MODE_DEBUG);
}
launchMode2Buttons = buttons;
}
protected void setLaunchMode2Status(int mode) {
launchMode2 = mode;
launchMode2Buttons[0].setSelection(launchMode2 == ServerUIPreferences.LAUNCH_MODE2_RESTART);
launchMode2Buttons[1].setSelection(launchMode2 == ServerUIPreferences.LAUNCH_MODE2_DISABLE_BREAKPOINTS);
launchMode2Buttons[2].setSelection(launchMode2 == ServerUIPreferences.LAUNCH_MODE2_CONTINUE);
launchMode2Buttons[3].setSelection(launchMode2 == ServerUIPreferences.LAUNCH_MODE2_PROMPT);
}
protected void createBreakpointsGroup(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setText(Messages.prefBreakpoints);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
group.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 3;
group.setLayoutData(data);
String[] messages = new String[] {
Messages.prefBreakpointsAlways, Messages.prefBreakpointsNever,
Messages.prefBreakpointsPrompt
};
final byte[] options = new byte[] {
ServerUIPreferences.ENABLE_BREAKPOINTS_ALWAYS,
ServerUIPreferences.ENABLE_BREAKPOINTS_NEVER,
ServerUIPreferences.ENABLE_BREAKPOINTS_PROMPT
};
Button[] buttons = new Button[3];
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
for (int i = 0; i < 3; i++) {
buttons[i] = new Button(group, SWT.RADIO);
buttons[i].setText(messages[i]);
final int b = i;
buttons[i].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
breakpointEnablement = options[b];
}
});
whs.setHelp(buttons[i], ContextIds.PREF_GENERAL_ENABLE_BREAKPOINTS);
}
breakpointButtons = buttons;
}
protected void setBreakpointsStatus(int mode) {
breakpointEnablement = mode;
breakpointButtons[0].setSelection(breakpointEnablement == ServerUIPreferences.ENABLE_BREAKPOINTS_ALWAYS);
breakpointButtons[1].setSelection(breakpointEnablement == ServerUIPreferences.ENABLE_BREAKPOINTS_NEVER);
breakpointButtons[2].setSelection(breakpointEnablement == ServerUIPreferences.ENABLE_BREAKPOINTS_PROMPT);
}
protected void createRestartGroup(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setText(Messages.prefRestart);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
group.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 3;
group.setLayoutData(data);
String[] messages = new String[] {
Messages.prefRestartAlways, Messages.prefRestartNever, Messages.prefRestartPrompt
};
final byte[] options = new byte[] {
ServerUIPreferences.RESTART_ALWAYS,
ServerUIPreferences.RESTART_NEVER,
ServerUIPreferences.RESTART_PROMPT
};
Button[] buttons = new Button[3];
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
for (int i = 0; i < 3; i++) {
buttons[i] = new Button(group, SWT.RADIO);
buttons[i].setText(messages[i]);
final int b = i;
buttons[i].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
restartEnablement = options[b];
}
});
whs.setHelp(buttons[i], ContextIds.PREF_GENERAL_RESTART);
}
restartButtons = buttons;
}
protected void setRestartStatus(int mode) {
restartEnablement = mode;
restartButtons[0].setSelection(restartEnablement == ServerUIPreferences.RESTART_ALWAYS);
restartButtons[1].setSelection(restartEnablement == ServerUIPreferences.RESTART_NEVER);
restartButtons[2].setSelection(restartEnablement == ServerUIPreferences.RESTART_PROMPT);
}
/**
* Initializes this preference page using the passed workbench.
*
* @param workbench the current workbench
*/
public void init(IWorkbench workbench) {
// do nothing
}
/**
* Performs special processing when this page's Defaults button has been pressed.
*/
protected void performDefaults() {
publishBeforeStart.setSelection(preferences.isDefaultAutoPublishing());
setSaveEditorStatus(uiPreferences.getDefaultSaveEditors());
setLaunchModeStatus(uiPreferences.getDefaultLaunchMode());
setLaunchMode2Status(uiPreferences.getDefaultLaunchMode2());
setBreakpointsStatus(uiPreferences.getDefaultEnableBreakpoints());
setRestartStatus(uiPreferences.getDefaultRestart());
super.performDefaults();
}
/**
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
*/
public boolean performOk() {
preferences.setAutoPublishing(publishBeforeStart.getSelection());
uiPreferences.setSaveEditors(saveEditors);
uiPreferences.setLaunchMode(launchMode);
uiPreferences.setLaunchMode2(launchMode2);
uiPreferences.setEnableBreakpoints(breakpointEnablement);
uiPreferences.setRestart(restartEnablement);
return true;
}
}