/******************************************************************************* * Copyright (c) 2014 MEDEVIT. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * T. Huster - initial API and implementation *******************************************************************************/ package at.medevit.elexis.inbox.ui.part.provider; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.medevit.elexis.inbox.model.InboxElement; public class InboxElementUiExtension { private static Logger logger = LoggerFactory.getLogger(InboxElementUiExtension.class); private List<IInboxElementUiProvider> providers; public InboxElementUiExtension(){ providers = getExtensions(); } public List<IInboxElementUiProvider> getProviders(){ return providers; } private IInboxElementUiProvider getProvider(InboxElement element){ for (IInboxElementUiProvider iInboxElementUiProvider : providers) { if (iInboxElementUiProvider.isProviderFor(element)) { return iInboxElementUiProvider; } } return null; } private List<IInboxElementUiProvider> getExtensions(){ List<IInboxElementUiProvider> ret = new ArrayList<IInboxElementUiProvider>(); IExtensionRegistry exr = Platform.getExtensionRegistry(); IExtensionPoint exp = exr.getExtensionPoint("at.medevit.elexis.inbox.ui.elementsui"); if (exp != null) { IExtension[] extensions = exp.getExtensions(); for (IExtension ex : extensions) { IConfigurationElement[] elems = ex.getConfigurationElements(); for (IConfigurationElement el : elems) { if (el.getName().equals("uiprovider")) { try { ret.add((IInboxElementUiProvider) el.createExecutableExtension("class")); } catch (CoreException e) { logger.error("Error creating IInboxElementsProvider " + e); } } } } } return ret; } public String getText(InboxElement element){ IInboxElementUiProvider provider = getProvider(element); if (provider != null && provider.getLabelProvider() != null) { return provider.getLabelProvider().getText(element); } return null; } public Image getImage(InboxElement element){ IInboxElementUiProvider provider = getProvider(element); if (provider != null && provider.getLabelProvider() != null) { return provider.getLabelProvider().getImage(element); } return null; } public Color getForeground(InboxElement element){ IInboxElementUiProvider provider = getProvider(element); if (provider != null && provider.getColorProvider() != null) { return provider.getColorProvider().getForeground(element); } return null; } public Color getBackground(InboxElement element){ IInboxElementUiProvider provider = getProvider(element); if (provider != null && provider.getColorProvider() != null) { return provider.getColorProvider().getBackground(element); } return null; } public void fireDoubleClicked(InboxElement element){ IInboxElementUiProvider provider = getProvider(element); if (provider != null) { provider.doubleClicked(element); } } }