package org.reldb.dbrowser.ui.content.rel.var.grids; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.reldb.dbrowser.ui.IconLoader; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormAttachment; public class DeleteConfirmDialog extends Dialog { private int count = 0; private boolean noAskAgain = false; private String whatToDelete; /** * Create the dialog. * @param parentShell */ public DeleteConfirmDialog(Shell parentShell, int count, String whatToDelete) { super(parentShell); this.count = count; this.whatToDelete = whatToDelete; setBlockOnOpen(true); } protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText("Delete"); } public boolean getAskDeleteConfirm() { return !noAskAgain; } /** * Create contents of the dialog. * @param parent */ @Override protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); container.setLayout(new FormLayout()); Label image = new Label(container, SWT.TRANSPARENT); FormData fd_composite = new FormData(); fd_composite.top = new FormAttachment(0, 10); fd_composite.left = new FormAttachment(0, 10); image.setLayoutData(fd_composite); Image question = IconLoader.loadIcon("question"); image.setImage(question); image.setSize(question.getBounds().width, question.getBounds().height); Label lblPrompt = new Label(container, SWT.NONE); FormData fd_lblPrompt = new FormData(); fd_lblPrompt.top = new FormAttachment(0, 10); fd_lblPrompt.left = new FormAttachment(image, 10); fd_lblPrompt.right = new FormAttachment(100, -10); lblPrompt.setLayoutData(fd_lblPrompt); if (count > 0) lblPrompt.setText("Press OK to delete " + count + " " + whatToDelete + ((count > 1) ? "s" : "") + ". Press Cancel to do nothing."); else lblPrompt.setText("No " + whatToDelete + "s selected. Press Ok to optionally confirm the checkbox below, or Cancel to do nothing."); Button btnNoAsk = new Button(container, SWT.CHECK); FormData fd_btnNoAsk = new FormData(); fd_btnNoAsk.top = new FormAttachment(lblPrompt, 10); fd_btnNoAsk.bottom = new FormAttachment(100, -10); fd_btnNoAsk.right = new FormAttachment(100, -10); btnNoAsk.setLayoutData(fd_btnNoAsk); btnNoAsk.setSelection(noAskAgain); btnNoAsk.setText("Don't ask me again."); btnNoAsk.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent evt) { noAskAgain = btnNoAsk.getSelection(); } }); container.pack(); return container; } protected void buttonPressed() {} protected void cancelPressed() { buttonPressed(); super.cancelPressed(); } protected void okPressed() { buttonPressed(); super.okPressed(); } /** * Create contents of the button bar. * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true); } }