blob: 2de77e3a9e6523d86814a56285d41eb1ad60b620 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 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.actions;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
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.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.wst.server.ui.internal.Messages;
/**
* Custom message dialog that displays a set of options.
* Return value is the option
*/
public class OptionsMessageDialog extends MessageDialog {
protected int radio;
protected boolean remember;
protected String[] options;
public OptionsMessageDialog(Shell parentShell, String title, String dialogMessage, String[] options) {
super(parentShell, title, null, dialogMessage, MessageDialog.QUESTION,
new String[] {IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL}, 0);
this.options = options;
if (options == null)
throw new IllegalArgumentException("Must have at least one option");
}
protected Control createDialogArea(Composite parent) {
// create message area
createMessageArea(parent);
// create the top level composite for the dialog area
/*Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
composite.setLayout(layout);
GridData data = new GridData(GridData.FILL_BOTH);
data.horizontalSpan = 2;
composite.setLayoutData(data);*/
createCustomArea(parent);
return parent;
}
protected Control createCustomArea(Composite parent) {
int size = options.length;
for (int i = 0; i < size; i++) {
new Label(parent, SWT.NONE);
Button radioB = new Button(parent, SWT.RADIO);
radioB.setText(options[i]);
final int x = i;
radioB.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
radio = x;
}
});
if (i == 0) {
radioB.setSelection(true);
radio = 0;
}
}
new Label(parent, SWT.NONE);
new Label(parent, SWT.NONE);
final Button rememberB = new Button(parent, SWT.CHECK);
rememberB.setText(Messages.dialogRemember);
GridData data = new GridData();
data.horizontalSpan = 2;
rememberB.setLayoutData(data);
rememberB.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
remember = rememberB.getSelection();
}
});
return rememberB;
}
protected void buttonPressed(int buttonId) {
if (buttonId == 0)
setReturnCode(radio);
else
setReturnCode(9);
close();
}
public boolean isRemember() {
return remember;
}
}