package org.nightlabs.jfire.trade.admin.ui.editor;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.forms.editor.IFormPage;
import org.nightlabs.base.ui.entity.editor.EntityEditor;
import org.nightlabs.base.ui.entity.editor.EntityEditorPageController;
import org.nightlabs.jfire.accounting.dao.PriceConfigEditDAO;
import org.nightlabs.jfire.store.ProductType;
import org.nightlabs.jfire.store.id.ProductTypeID;
import org.nightlabs.jfire.trade.admin.ui.resource.Messages;
import org.nightlabs.progress.ProgressMonitor;
import org.nightlabs.util.Util;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
*
*/
public class ProductTypePriceConfigPageController
extends EntityEditorPageController
{
private ProductTypeID productTypeID;
private ProductType productType;
/**
* @param editor
*/
public ProductTypePriceConfigPageController(EntityEditor editor) {
this(editor, false);
}
/**
* @param editor
* @param startBackgroundLoading
*/
public ProductTypePriceConfigPageController(EntityEditor editor,
boolean startBackgroundLoading) {
super(editor, startBackgroundLoading);
productTypeID = ((ProductTypeEditorInput)editor.getEditorInput()).getJDOObjectID();
}
public void doLoad(ProgressMonitor monitor) {
monitor.beginTask(Messages.getString("org.nightlabs.jfire.trade.admin.ui.editor.ProductTypePriceConfigPageController.loadPriceConfigMonitor.task.name"), 2); //$NON-NLS-1$
monitor.worked(1);
ProductType productType = Util.cloneSerializable(
PriceConfigEditDAO.sharedInstance().getProductTypeForPriceConfigEditing(
getProductTypeID(), monitor));
setProductType(productType);
fireModifyEvent(null, productType);
monitor.worked(1);
}
public boolean doSave(ProgressMonitor monitor) {
for (IFormPage page : getPages()) {
if (page instanceof AbstractGridPriceConfigPage) {
final AbstractGridPriceConfigPage priceConfigPage = (AbstractGridPriceConfigPage) page;
final boolean[] result = new boolean[1];
Display.getDefault().syncExec(new Runnable(){
public void run() {
result[0] = priceConfigPage.getPriceConfigSection().getPriceConfigComposite().submit();
}
});
return result[0];
}
}
return false;
}
public ProductTypeID getProductTypeID() {
return productTypeID;
}
protected void setProductType(ProductType productType) {
this.productType = productType;
}
public ProductType getProductType() {
return productType;
}
}