package org.nightlabs.jfire.simpletrade.ui.prop.edit.blockbased.special; import org.apache.log4j.Logger; 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.swt.widgets.Control; import org.nightlabs.jfire.base.ui.prop.edit.DataFieldEditor; import org.nightlabs.jfire.base.ui.prop.edit.DataFieldEditorFactoryRegistry; import org.nightlabs.jfire.base.ui.prop.edit.DataFieldEditorNotFoundException; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.AbstractDataBlockEditor; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.AbstractDataBlockEditorComposite; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.AbstractDataBlockEditorFactory; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.DataBlockEditor; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.ExpandableBlocksEditor; import org.nightlabs.jfire.base.ui.prop.edit.blockbased.IDataBlockEditorComposite; import org.nightlabs.jfire.prop.DataBlock; import org.nightlabs.jfire.prop.DataField; import org.nightlabs.jfire.prop.IStruct; import org.nightlabs.jfire.prop.exception.DataFieldNotFoundException; import org.nightlabs.jfire.prop.id.StructBlockID; import org.nightlabs.jfire.prop.id.StructFieldID; import org.nightlabs.jfire.simpletrade.store.prop.SimpleProductTypeStruct; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> */ public class DescriptionDataBlockEditor extends AbstractDataBlockEditor { public static class Factory extends AbstractDataBlockEditorFactory { /* (non-Javadoc) * @see org.nightlabs.jfire.base.ui.prop.edit.blockbased.DataBlockEditorFactory#getProviderStructBlockID() */ @Override public StructBlockID getProviderStructBlockID() { return SimpleProductTypeStruct.DESCRIPTION; } @Override public DataBlockEditor createDataBlockEditor(IStruct struct, DataBlock dataBlock) { return new DescriptionDataBlockEditor(struct, dataBlock); } } private static class DescriptionDataBlockEditorComposite extends AbstractDataBlockEditorComposite { private static final Logger logger = Logger.getLogger(AbstractDataBlockEditorComposite.class); public DescriptionDataBlockEditorComposite(DataBlockEditor blockEditor, Composite parent, int style) { super(blockEditor, parent, style); setLayoutData(new GridData(GridData.FILL_BOTH)); GridLayout thisLayout = new GridLayout(2, true); thisLayout.marginWidth = 0; thisLayout.marginHeight = 0; this.setLayout(thisLayout); createFieldEditors(); } private void createFieldEditors() { addDataFieldEditor(SimpleProductTypeStruct.DESCRIPTION_SHORT, 2); addDataFieldEditor(SimpleProductTypeStruct.DESCRIPTION_LONG, 2); } private void addDataFieldEditor(StructFieldID structFieldID, int horizontalSpan) { DataField dataField = null; try { dataField = getDataBlock().getDataField(structFieldID); } catch (DataFieldNotFoundException e) { logger.error("addDataFieldEditor(StructFieldID fieldID) DataField not found for fieldID continuing: "+structFieldID.toString(),e); //$NON-NLS-1$ } DataFieldEditor<DataField> editor = null; if (!hasFieldEditorFor(structFieldID)) { try { editor = DataFieldEditorFactoryRegistry.sharedInstance().getNewEditorInstance( getStruct(), ExpandableBlocksEditor.EDITORTYPE_BLOCK_BASED_EXPANDABLE, "", // TODO: Context ?!? //$NON-NLS-1$ dataField ); } catch (DataFieldEditorNotFoundException e1) { logger.error("addDataFieldEditor(StructFieldID fieldID) DataFieldEditor not found for fieldID continuing: "+structFieldID.toString(),e1); //$NON-NLS-1$ } Control editorControl = editor.createControl(this); GridData editorLData = new GridData(GridData.FILL_BOTH); editorLData.horizontalSpan = horizontalSpan; // editorLData.grabExcessHorizontalSpace = true; // editorLData.horizontalAlignment = GridData.FILL; editorControl.setLayoutData(editorLData); addFieldEditor(structFieldID, editor); } else { editor = getFieldEditor(dataField); } editor.setData(getStruct(), dataField); editor.refresh(); } } protected DescriptionDataBlockEditor(IStruct struct, DataBlock dataBlock) { super(); } @Override protected IDataBlockEditorComposite createEditorComposite(Composite parent) { return new DescriptionDataBlockEditorComposite(this, parent, SWT.NONE); } }