package org.nightlabs.jfire.contact.ui; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.AbstractFormPart; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.IFormPage; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.nightlabs.base.ui.entity.editor.EntityEditor; import org.nightlabs.base.ui.entity.editor.EntityEditorPageWithProgress; import org.nightlabs.base.ui.entity.editor.IEntityEditorPageController; import org.nightlabs.base.ui.entity.editor.IEntityEditorPageFactory; import org.nightlabs.jfire.base.ui.prop.edit.ValidationResultHandler; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.BlockBasedEditor; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.DataBlockEditorChangedEvent; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.DataBlockEditorChangedListener; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.FullDataBlockCoverageComposite; import org.nightlabs.jfire.contact.ui.resource.Messages; import org.nightlabs.jfire.prop.PropertySet; import org.nightlabs.jfire.prop.StructLocal; import org.nightlabs.jfire.prop.dao.StructLocalDAO; import org.nightlabs.jfire.prop.validation.ValidationResult; import org.nightlabs.progress.NullProgressMonitor; /** * @author Chairat Kongarayawetchakun <!-- chairat [AT] nightlabs [DOT] de --> */ public class ContactDetailEditorPage extends EntityEditorPageWithProgress { private FullDataBlockCoverageComposite fullDataBlockCoverageComposite; public ContactDetailEditorPage(FormEditor editor) { super(editor, ContactDetailEditorPage.class.getName(), Messages.getString("org.nightlabs.jfire.contact.ui.ContactDetailEditorPage.name")); //$NON-NLS-1$ } // public ContactDetailEditorPage(FormEditor editor, String id, String name) { // super(editor, id, name); // } /** * The Factory is registered to the extension-point and creates * new instances of {@link EventDetailPage}. */ public static class Factory implements IEntityEditorPageFactory { public IFormPage createPage(FormEditor formEditor) { return new ContactDetailEditorPage(formEditor); } public IEntityEditorPageController createPageController(EntityEditor editor) { return new ContactEditorPageController(editor); } } private ScrolledForm scrolledForm; private Composite body; private FormToolkit toolkit; @Override protected void addSections(Composite parent) { // final ContactEditorPageController controller = (ContactEditorPageController)getPageController(); toolkit = new FormToolkit(parent.getDisplay()); toolkit.decorateFormHeading(getManagedForm().getForm().getForm()); scrolledForm = toolkit.createScrolledForm(parent); scrolledForm.setLayoutData(new GridData(GridData.FILL_BOTH)); body = scrolledForm.getBody(); GridLayout layout = new GridLayout(1, true); body.setLayout(layout); getManagedForm().addPart(thisPart); } AbstractFormPart thisPart = new AbstractFormPart() { private PropertySet propertySet; @Override public boolean setFormInput(Object input) { this.propertySet = (PropertySet) input; super.setFormInput(input); markStale(); return true; } @Override public void refresh() { if (propertySet == null) return; ValidationResultHandler resultManager = new ValidationResultHandler() { @Override public void handleValidationResult(ValidationResult validationResult) { } }; StructLocal structLocal = StructLocalDAO.sharedInstance().getStructLocal( propertySet.getStructLocalObjectID(), new NullProgressMonitor() ); propertySet.inflate(structLocal); if (fullDataBlockCoverageComposite == null) { fullDataBlockCoverageComposite = new FullDataBlockCoverageComposite( body, SWT.NONE, propertySet, null, resultManager) { @Override protected BlockBasedEditor createBlockBasedEditor() { return new BlockBasedEditor(false); } }; fullDataBlockCoverageComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); fullDataBlockCoverageComposite.addChangeListener(new DataBlockEditorChangedListener() { @Override public void dataBlockEditorChanged(DataBlockEditorChangedEvent dataBlockEditorChangedEvent) { // controller.markDirty(); // getManagedForm().dirtyStateChanged(); thisPart.markDirty(); } }); toolkit.adapt(fullDataBlockCoverageComposite); } else fullDataBlockCoverageComposite.refresh(propertySet); body.layout(true, true); scrolledForm.layout(true, true); super.refresh(); } @Override public void commit(boolean onSave) { if (fullDataBlockCoverageComposite != null) fullDataBlockCoverageComposite.updatePropertySet(); super.commit(onSave); } @Override public void markDirty() { getPageController().markDirty(); super.markDirty(); } }; @Override protected String getPageFormTitle() { return Messages.getString("org.nightlabs.jfire.contact.ui.ContactDetailEditorPage.pageFormTitle"); //$NON-NLS-1$ } // @Override // protected void handleControllerObjectModified(EntityEditorPageControllerModifyEvent modifyEvent) { // final ContactEditorPageController controller = (ContactEditorPageController)getPageController(); // Display.getDefault().asyncExec(new Runnable() // { // public void run() // { // ValidationResultHandler resultManager = new ValidationResultHandler() { // @Override // public void handleValidationResult(ValidationResult validationResult) { // // } // }; // StructLocal structLocal = StructLocalDAO.sharedInstance().getStructLocal( // controller.getControllerObject().getStructLocalObjectID(), // new NullProgressMonitor() // ); // controller.getControllerObject().inflate(structLocal); // fullDataBlockCoverageComposite = new FullDataBlockCoverageComposite( // body, // SWT.NONE, // controller.getControllerObject(), // null, // resultManager) { // @Override // protected BlockBasedEditor createBlockBasedEditor() { // return new BlockBasedEditor(false); // } // }; // fullDataBlockCoverageComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); // fullDataBlockCoverageComposite.addChangeListener(new DataBlockEditorChangedListener() { // // @Override // public void dataBlockEditorChanged(DataBlockEditorChangedEvent dataBlockEditorChangedEvent) { //// controller.markDirty(); //// getManagedForm().dirtyStateChanged(); // thisPart.markDirty(); // } // }); // // toolkit.adapt(fullDataBlockCoverageComposite); // body.layout(true, true); // scrolledForm.layout(true, true); // switchToContent(); // } // }); // } }