package org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.reverse;
import java.util.ResourceBundle;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.ProgressMonitorPart;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
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.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.message.IErrorMessageDisplayer;
import org.nightlabs.base.ui.message.MessageType;
import org.nightlabs.base.ui.progress.ProgressMonitorWrapper;
import org.nightlabs.eclipse.ui.dialog.ResizableTitleAreaDialog;
import org.nightlabs.jfire.store.id.ProductID;
import org.nightlabs.jfire.trade.ui.resource.Messages;
import org.nightlabs.progress.ProgressMonitor;
/**
* @author Daniel Mazurek - daniel [at] nightlabs [dot] de
*/
public class ReverseProductDialog
extends ResizableTitleAreaDialog
implements IErrorMessageDisplayer
{
// private static final Logger logger = Logger.getLogger(ReverseProductDialog.class);
private ReverseProductComposite reverseProductComposite;
private ProductID productID;
private ProgressMonitorPart progressMonitorPart;
/**
* @param shell
* @param resourceBundletest
*/
public ReverseProductDialog(Shell shell, ResourceBundle resourceBundle) {
super(shell, resourceBundle);
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.TitleAreaDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createDialogArea(Composite parent)
{
getShell().setText(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.reverse.ReverseProductDialog.windows.title")); //$NON-NLS-1$
setTitle(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.reverse.ReverseProductDialog.title")); //$NON-NLS-1$
setMessage(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.reverse.ReverseProductDialog.message")); //$NON-NLS-1$
Composite wrapper = new XComposite(parent, SWT.NONE);
reverseProductComposite = new ReverseProductComposite(wrapper, SWT.NONE);
reverseProductComposite.getProductIDText().addDelayedModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
Display.getDefault().asyncExec(new Runnable(){
@Override
public void run() {
Button okButton = getButton(Window.OK);
if (okButton != null) {
String errorMessage = null;
ProductID productID = reverseProductComposite.getProductID(getProgressMonitor());
if (productID == null) {
errorMessage = Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.reverse.ReverseProductDialog.errorMessage"); //$NON-NLS-1$
}
setErrorMessage(errorMessage);
okButton.setEnabled(productID != null);
}
}
});
}
});
progressMonitorPart = new ProgressMonitorPart(wrapper, new GridLayout());
progressMonitorPart.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return wrapper;
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
@Override
protected void okPressed() {
productID = reverseProductComposite.getProductID(getProgressMonitor());
super.okPressed();
}
public ProductID getProductID() {
return productID;
}
// public boolean isReverseAll() {
// return reverseProductComposite.isReverseAll();
// }
//
// public boolean isReverseArticle() {
// return reverseProductComposite.isReverseArticle();
// }
//
// public boolean isReleaseArticles() {
// return reverseProductComposite.isReleaseArticles();
// }
//
// public boolean isReversePaymentAndDelivery() {
// return reverseProductComposite.isReversePaymentAndDelivery();
// }
private ProgressMonitor getProgressMonitor() {
return new ProgressMonitorWrapper(progressMonitorPart);
}
public ReverseProductComposite getReverseProductComposite() {
return reverseProductComposite;
}
/*
* (non-Javadoc)
* @see org.nightlabs.base.ui.message.IMessageDisplayer#setMessage(java.lang.String, org.nightlabs.base.ui.message.MessageType)
*/
@Override
public void setMessage(String message, MessageType type)
{
setMessage(message, type.ordinal());
}
}