package org.nightlabs.jfire.trade.admin.ui.editor; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.forms.editor.FormEditor; import org.nightlabs.base.ui.entity.editor.EntityEditorPageControllerModifyEvent; import org.nightlabs.base.ui.entity.editor.EntityEditorPageWithProgress; import org.nightlabs.base.ui.util.RCPUtil; import org.nightlabs.jfire.store.ProductType; import org.nightlabs.jfire.trade.admin.ui.resource.Messages; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public abstract class AbstractGridPriceConfigPage extends EntityEditorPageWithProgress { /** * @param editor * @param id * @param name */ public AbstractGridPriceConfigPage(FormEditor editor, String id, String name) { super(editor, id, name); } private AbstractGridPriceConfigSection priceConfigSection = null; public AbstractGridPriceConfigSection getPriceConfigSection() { return priceConfigSection; } protected abstract AbstractGridPriceConfigSection createGridPriceConfigSection(Composite parent); @Override protected void addSections(Composite parent) { priceConfigSection = createGridPriceConfigSection(parent); getManagedForm().addPart(priceConfigSection); if (getPageController().isLoaded()) refreshPriceConfigSection(); } @Override public ProductTypePriceConfigPageController getPageController() { return (ProductTypePriceConfigPageController) super.getPageController(); } private boolean isPropertyChangeListenerRegistered = false; protected void refreshPriceConfigSection() { if (priceConfigSection == null || priceConfigSection.getSection() == null || priceConfigSection.getSection().isDisposed()) return; ProductTypePriceConfigPageController controller = getPageController(); final ProductType productType = controller.getProductType(); // priceConfigSection.getPriceConfigComposite().setInitaliseState(true); // try { priceConfigSection.setPackageProductType(productType); // } finally { // priceConfigSection.getPriceConfigComposite().setInitaliseState(false); // } if (productType.getInnerPriceConfig() != null) { priceConfigSection.getSection().setText( productType.getInnerPriceConfig().getName().getText()); } if (productType.isClosed()) { priceConfigSection.setMessage( Messages.getString("org.nightlabs.jfire.trade.admin.ui.editor.AbstractGridPriceConfigPage.priceConfigSection.message_productTypeClosed"), //$NON-NLS-1$ IMessageProvider.INFORMATION); RCPUtil.setControlEnabledRecursive(priceConfigSection.getPriceConfigComposite(), false); } switchToContent(); } @Override protected void handleControllerObjectModified(EntityEditorPageControllerModifyEvent modifyEvent) { // if (event.getPackagePriceConfig() != null) { Display.getDefault().asyncExec(new Runnable() { public void run() { refreshPriceConfigSection(); } }); // } } @Override protected String getPageFormTitle() { return Messages.getString("org.nightlabs.jfire.trade.admin.ui.editor.AbstractGridPriceConfigPage.pageFormTitle"); //$NON-NLS-1$ } }