package com.netifera.platform.ui.internal; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.eclipse.jface.action.IAction; import com.netifera.platform.api.log.ILogManager; import com.netifera.platform.api.log.ILogger; import com.netifera.platform.api.model.IShadowEntity; import com.netifera.platform.ui.api.actions.IEntityActionProvider; import com.netifera.platform.ui.api.actions.IEntityActionProviderService; public class EntityActionProviderService implements IEntityActionProviderService { private final List<IEntityActionProvider> providers = new LinkedList<IEntityActionProvider>(); protected void registerProvider(IEntityActionProvider provider) { providers.add(provider); } protected void unregisterProvider(IEntityActionProvider provider) { providers.remove(provider); } public List<IAction> getActions(IShadowEntity shadow) { List<IAction> answer = new ArrayList<IAction>(); for (IEntityActionProvider provider: providers) try { List<IAction> actions = provider.getActions(shadow); if (actions != null) answer.addAll(actions); } catch (Throwable exception) { logger.error("provider:" + provider + ", entity:" + shadow, exception); } return answer; } public List<IAction> getQuickActions(IShadowEntity shadow) { List<IAction> answer = new ArrayList<IAction>(); for (IEntityActionProvider provider: providers) try { List<IAction> actions = provider.getQuickActions(shadow); if (actions != null) answer.addAll(actions); } catch (Throwable exception) { logger.error("provider:" + provider + ", entity:" + shadow, exception); } return answer; } /* logging */ private ILogger logger; protected void setLogManager(ILogManager logManager) { logger = logManager.getLogger("Entity Action Provider"); } protected void unsetLogManager(ILogManager logManager) { logger = null; } }