package org.herac.tuxguitar.gui.util;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.herac.tuxguitar.gui.TuxGuitar;
public class ConfirmDialog {
public static int BUTTON_CANCEL = 0x01;
public static int BUTTON_NO = 0x04;
public static int BUTTON_YES = 0x02;
public static int STATUS_CANCEL = 3;
public static int STATUS_NO = 2;
public static int STATUS_YES = 1;
protected Shell dialog;
private String message;
protected int status;
public ConfirmDialog(String message) {
this.message = message;
}
private void addCloseButton(String text, final int value, Composite parent,
boolean defaultButton) {
Button button = new Button(parent, SWT.PUSH);
button.setLayoutData(getButtonData());
button.setText(text);
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
ConfirmDialog.this.dialog.dispose();
ConfirmDialog.this.status = value;
}
});
if (defaultButton) {
this.dialog.setDefaultButton(button);
}
}
public int confirm(int style, int defaultButton) {
Shell parent = TuxGuitar.instance().getShell();
this.dialog = DialogUtils.newDialog(parent, SWT.DIALOG_TRIM
| SWT.APPLICATION_MODAL);
this.dialog.setLayout(new GridLayout(1, true));
// ========================================================================
Composite labelComposite = new Composite(this.dialog, SWT.NONE);
labelComposite.setLayout(new GridLayout(2, false));
labelComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Label icon = new Label(labelComposite, SWT.NONE);
Label message = new Label(labelComposite, SWT.NONE);
icon.setImage(parent.getDisplay().getSystemImage(SWT.ICON_QUESTION));
message.setText(this.message);
// ========================================================================
GridLayout buttonsLayout = new GridLayout(0, false);
Composite buttonsComposite = new Composite(this.dialog, SWT.NONE);
buttonsComposite.setLayout(buttonsLayout);
buttonsComposite.setLayoutData(new GridData(SWT.END, SWT.FILL, true, true));
if ((style & BUTTON_YES) != 0) {
addCloseButton(TuxGuitar.getProperty("yes"), STATUS_YES,
buttonsComposite, (defaultButton == BUTTON_YES));
buttonsLayout.numColumns++;
}
if ((style & BUTTON_NO) != 0) {
addCloseButton(TuxGuitar.getProperty("no"), STATUS_NO, buttonsComposite,
(defaultButton == BUTTON_NO));
buttonsLayout.numColumns++;
}
if ((style & BUTTON_CANCEL) != 0) {
addCloseButton(TuxGuitar.getProperty("cancel"), STATUS_CANCEL,
buttonsComposite, (defaultButton == BUTTON_CANCEL));
buttonsLayout.numColumns++;
}
DialogUtils.openDialog(this.dialog, DialogUtils.OPEN_STYLE_CENTER
| DialogUtils.OPEN_STYLE_PACK | DialogUtils.OPEN_STYLE_WAIT);
return this.status;
}
private GridData getButtonData() {
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.minimumWidth = 80;
data.minimumHeight = 25;
return data;
}
public void setDefaultStatus(int status) {
this.status = status;
}
}