package edu.ualberta.med.biobank.widgets; 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.Event; import org.eclipse.swt.widgets.Listener; import edu.ualberta.med.biobank.BiobankPlugin; import edu.ualberta.med.biobank.forms.linkassign.AbstractSpecimenAdminForm; import edu.ualberta.med.biobank.gui.common.BgcLogger; import edu.ualberta.med.biobank.gui.common.widgets.BgcBaseText; import edu.ualberta.med.biobank.gui.common.widgets.BgcBaseWidget; public class CancelConfirmWidget extends BgcBaseWidget { private static BgcLogger logger = BgcLogger .getLogger(CancelConfirmWidget.class.getName()); private BgcBaseText confirmCancelText; private Button confirmButton; private Button cancelButton; private AbstractSpecimenAdminForm form; public CancelConfirmWidget(Composite parent, AbstractSpecimenAdminForm form) { this(parent, form, false); } public CancelConfirmWidget(Composite parent, AbstractSpecimenAdminForm form, boolean showTextField) { super(parent, SWT.NONE); setLayout(new GridLayout(4, false)); this.form = form; createContents(); showTextField(showTextField); } private void createContents() { form.getToolkit().createLabel(this, Messages.CancelConfirmWidget_cancelconfirm_label); confirmCancelText = new BgcBaseText(this, SWT.NONE, form.getToolkit()); confirmCancelText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridData gd = new GridData(); gd.widthHint = 100; confirmCancelText.setLayoutData(gd); confirmCancelText.addListener(SWT.DefaultSelection, new Listener() { @Override public void handleEvent(Event e) { String text = confirmCancelText.getText(); if (BiobankPlugin.getDefault().isConfirmBarcode(text) && confirmButton.isEnabled()) { form.confirm(); // form will be closed. Default following behaviours // will send a disposed error if we don't set this to // false e.doit = false; } else if (BiobankPlugin.getDefault().isCancelBarcode(text)) { try { form.setValues(); form.setAfterKeyCancel(); } catch (Exception ex) { logger.error("Error while reseting pallet values", ex); //$NON-NLS-1$ } } } }); cancelButton = form.getToolkit().createButton(this, Messages.CancelConfirmWidget_cancel_label, SWT.PUSH); cancelButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { try { form.setValues(); } catch (Exception ex) { logger.error("Error while reseting pallet values", ex); //$NON-NLS-1$ } } }); confirmButton = form.getToolkit().createButton(this, Messages.CancelConfirmWidget_confirm_label, SWT.PUSH); confirmButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { form.confirm(); } }); adaptToToolkit(form.getToolkit(), true); } public void showTextField(boolean show) { ((GridData) confirmCancelText.getLayoutData()).exclude = !show; confirmCancelText.setVisible(show); } public void setConfirmEnabled(boolean enabled) { confirmButton.setEnabled(enabled); } public void setCancelEnabled(boolean enabled) { cancelButton.setEnabled(enabled); } public void setTextEnabled(boolean enabled) { confirmCancelText.setEnabled(enabled); } public void reset() { confirmCancelText.setText(""); //$NON-NLS-1$ } @Override public boolean setFocus() { return confirmCancelText.setFocus(); } }