/**
*
*/
package org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.openrelated;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jface.action.Action;
import org.nightlabs.jfire.trade.Article;
import org.nightlabs.jfire.trade.ArticleContainerUtil;
import org.nightlabs.jfire.trade.id.ArticleContainerID;
import org.nightlabs.jfire.trade.ui.TradePlugin;
import org.nightlabs.jfire.trade.ui.articlecontainer.detail.ArticleSelection;
import org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.ArticleEditActionRegistry;
import org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.IArticleEditAction;
/**
* Base Action for all 'Open related' actions.
*
* @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
*
*/
public abstract class OpenRelatedAction extends Action implements IArticleEditAction {
private Set<Article> articles = null;
private ArticleEditActionRegistry articleEditActionRegistry;
public boolean calculateEnabled(Set<ArticleSelection> articleSelections) {
this.articles = null;
Set<Article> articles = new HashSet<Article>();
for (ArticleSelection articleSelection : articleSelections) {
for (Article article : articleSelection.getSelectedArticles()) {
articles.add(article);
}
}
this.articles = articles;
return calculateEnabledWithArticles(articles);
}
protected abstract boolean calculateEnabledWithArticles(Set<Article> articles);
public boolean calculateVisible() {
return true;
}
public Set<Article> getArticles() {
return articles;
}
public ArticleEditActionRegistry getArticleEditActionRegistry() {
return articleEditActionRegistry;
}
public void init(ArticleEditActionRegistry articleEditActionRegistry) {
this.articleEditActionRegistry = articleEditActionRegistry;
}
protected String getText(ArticleContainerID articleContainerID)
{
// String type = getTextForArticleContainerType();
String type = getTextForArticleContainerType(articleContainerID);
if (articleContainerID == null) {
return type;
}
else {
return String.format(type + " " + "(%s)", ArticleContainerUtil.getArticleContainerID(articleContainerID));
}
}
// protected abstract String getTextForArticleContainerType();
protected String getTextForArticleContainerType(ArticleContainerID articleContainerID) {
return TradePlugin.getArticleContainerTypeString(articleContainerID);
}
// public IEditorInput getActiveArticleContainerEditorInput() {
// ArticleContainerEdit edit = getArticleEditActionRegistry().getActiveArticleContainerEditorActionBarContributor().getActiveArticleContainerEdit();
// if (edit == null)
// return null;
// return edit.getEditorInput();
// }
}