/** * */ package org.nightlabs.jfire.trade.ui.articlecontainer.detail; import java.util.Collection; import org.eclipse.swt.widgets.Composite; import org.nightlabs.jfire.trade.Article; import org.nightlabs.jfire.trade.ArticleContainer; import org.nightlabs.jfire.trade.id.ArticleContainerID; import org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.IArticleContainerEditActionContributor; /** * This is the default implementation of {@link ArticleContainerEdit}. * It uses {@link ArticleContainerEditComposite} or a sub-class and delegates all * work to it. * <p> * The creation of the {@link ArticleContainerEditComposite} is done in * {@link #createArticleContainerEditComposite(Composite, ArticleContainerID)} and might * be overridden when a sub-class of the composite should be used. * </p> * * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> */ public class DefaultArticleContainerEdit implements ArticleContainerEdit { /** * This factory creates instances of {@link DefaultArticleContainerEdit}. */ public static class Factory implements ArticleContainerEditFactory { @Override public ArticleContainerEdit createArticleContainerEdit() { return new DefaultArticleContainerEdit(); } } private ArticleContainerID articleContainerID; private ArticleContainerEditComposite articleContainerEditComposite; /** * Create a new {@link DefaultArticleContainerEdit}. */ public DefaultArticleContainerEdit() { } @Override public void init(ArticleContainerID articleContainerID) { this.articleContainerID = articleContainerID; } /** * {@inheritDoc} * <p> * This implementation will call {@link #createArticleContainerEditComposite(Composite, ArticleContainerID)} * and treat return its result. * </p> */ @Override public Composite createComposite(Composite parent) { if (articleContainerID == null) throw new IllegalStateException("createComposite() called before init(). Call init() first to set the articleContainerID."); //$NON-NLS-1$ articleContainerEditComposite = createArticleContainerEditComposite(parent, articleContainerID); return articleContainerEditComposite; } /** * This method creates the {@link ArticleContainerEditComposite} this edit delegates * all work to. It might be overridden but a functional sub-class of {@link ArticleContainerEditComposite} * should be returned then ;-) * * @param parent The parent to use. * @param articleContainerID The {@link ArticleContainerID} this edit was intialized with. * @return The newly created {@link ArticleContainerEditComposite}. */ protected ArticleContainerEditComposite createArticleContainerEditComposite(Composite parent, ArticleContainerID articleContainerID) { return new ArticleContainerEditComposite(parent, articleContainerID); } @Override public ArticleContainerEditComposite getComposite() { if (articleContainerEditComposite == null) throw new IllegalStateException("getComposite() called before createComposite(). Note that the methods of " + this.getClass().getSimpleName() + " only will work if its composite was created."); //$NON-NLS-1$ //$NON-NLS-2$ return articleContainerEditComposite; } @Override public void addActiveSegmentEditSelectionListener(ActiveSegmentEditSelectionListener listener) { getComposite().addActiveSegmentEditSelectionListener(listener); } @Override public SegmentEdit getActiveSegmentEdit() { return getComposite().getActiveSegmentEdit(); } @Override public ArticleContainer getArticleContainer() { return getComposite().getArticleContainer(); } @Override public ArticleContainerID getArticleContainerID() { return getComposite().getArticleContainerID(); } @Override public Collection<Article> getArticles() { return getComposite().getArticles(); } @Override public ClientArticleSegmentGroupSet getArticleSegmentGroupSet() { return getComposite().getArticleSegmentGroupSet(); } @Override public void removeActiveSegmentEditSelectionListener(ActiveSegmentEditSelectionListener listener) { getComposite().removeActiveSegmentEditSelectionListener(listener); } @Override public void setArticleContainerEditActionContributor(IArticleContainerEditActionContributor actionContributor) { getComposite().setArticleContainerEditActionContributor(actionContributor); } @Override public void addArticleChangeListener(ArticleChangeListener articleChangeListener) { getComposite().addArticleChangeListener(articleChangeListener); } @Override public void addArticleCreateListener(ArticleCreateListener articleCreateListener) { getComposite().addArticleCreateListener(articleCreateListener); } @Override public void removeArticleChangeListener(ArticleChangeListener articleChangeListener) { getComposite().removeArticleChangeListener(articleChangeListener); } @Override public void removeArticleCreateListener(ArticleCreateListener articleCreateListener) { getComposite().removeArticleCreateListener(articleCreateListener); } @Override public Collection<SegmentEdit> getSegmentEdits() { return getComposite().getSegmentEdits(); } @Override public IArticleContainerEditActionContributor getArticleContainerEditActionContributor() { return getComposite().getArticleContainerEditActionContributor(); } @Override public void setShowHeader(boolean showHeader) { getComposite().setShowHeader(showHeader); } }