package org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor; import java.util.Collection; import javax.jdo.JDOHelper; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Composite; import org.nightlabs.base.ui.action.SelectionAction; import org.nightlabs.base.ui.util.RCPUtil; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.voucher.admin.ui.resource.Messages; import org.nightlabs.jfire.voucher.dao.VoucherLayoutDAO; import org.nightlabs.jfire.voucher.dao.VoucherTypeDAO; import org.nightlabs.jfire.voucher.scripting.VoucherLayout; import org.nightlabs.jfire.voucher.scripting.id.VoucherLayoutID; import org.nightlabs.jfire.voucher.store.VoucherType; import org.nightlabs.jfire.voucher.ui.quicklist.VoucherTypeQuickListFilter; import org.nightlabs.progress.NullProgressMonitor; class DeleteVoucherLayoutAction extends SelectionAction { private RemoteVoucherLayoutComposite voucherLayoutComposite; private VoucherLayoutPage voucherLayoutPage; public DeleteVoucherLayoutAction(VoucherLayoutPage page, RemoteVoucherLayoutComposite comp) { super(); setId(DeleteVoucherLayoutAction.class.getName()); setText(Messages.getString("org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor.DeleteVoucherLayoutAction.text")); //$NON-NLS-1$ this.voucherLayoutComposite = comp; this.voucherLayoutPage = page; } @Override public boolean calculateEnabled() { return voucherLayoutComposite.getSelectedLayout() != null; } @Override public boolean calculateVisible() { return true; } @Override public void run() { VoucherLayout voucherLayout = voucherLayoutComposite.getSelectedLayout(); if (voucherLayout.equals(voucherLayoutPage.getAssignedVoucherLayout())) { MessageDialog.openError(RCPUtil.getActiveShell(), Messages.getString("org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor.DeleteVoucherLayoutAction.cannotDeleteAssignedLayoutErrorDialog.title"), Messages.getString("org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor.DeleteVoucherLayoutAction.cannotDeleteAssignedLayoutErrorDialog.text")); //$NON-NLS-1$ //$NON-NLS-2$ return; } Collection<VoucherType> vouchers = VoucherTypeDAO.sharedInstance().getVoucherTypesByVoucherLayoutId((VoucherLayoutID) JDOHelper.getObjectId(voucherLayout), VoucherTypeQuickListFilter.FETCH_GROUPS_VOUCHER_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor()); if (vouchers.isEmpty()) { VoucherLayoutDAO.sharedInstance().deleteVoucherLayout(voucherLayout); } else { String title = Messages.getString("org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor.DeleteVoucherLayoutAction.deleteErrorDialog.title"); //$NON-NLS-1$ String message1 = Messages.getString("org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor.DeleteVoucherLayoutAction.deleteErrorDialog.message1"); //$NON-NLS-1$ String message2 = Messages.getString("org.nightlabs.jfire.voucher.admin.ui.voucherlayout.editor.DeleteVoucherLayoutAction.deleteErrorDialog.message2"); //$NON-NLS-1$ VoucherTypeTableDialog dlg = new VoucherTypeTableDialog(RCPUtil.getActiveShell(), vouchers, title, message1, message2) { @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); } }; dlg.open(); } } }