package at.medevit.ch.artikelstamm.elexis.common.ui.provider; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import at.medevit.atc_codes.ATCCode; import at.medevit.ch.artikelstamm.elexis.common.preference.PreferenceConstants; import at.medevit.ch.artikelstamm.elexis.common.ui.cv.ATCFilterInfoListElement; import at.medevit.ch.artikelstamm.elexis.common.ui.provider.atccache.ATCCodeCache; import at.medevit.ch.artikelstamm.ui.ATCLabelProvider; import ch.artikelstamm.elexis.common.ArtikelstammItem; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.interfaces.IVerrechenbar.VatInfo; public class ATCArtikelstammDecoratingLabelProvider extends DecoratingLabelProvider { private ATCLabelProvider atcLabelProvider; private String atcLang; public ATCArtikelstammDecoratingLabelProvider(ILabelProvider provider, ILabelDecorator decorator, String atcLang){ super(provider, decorator); atcLabelProvider = new ATCLabelProvider(atcLang); } @Override public String getText(Object element){ if (element instanceof ArtikelstammItem) { String ret = super.getText(element); ArtikelstammItem ai = (ArtikelstammItem) element; String overriden = (String) ai.getExtInfoStoredObjectByKey(ArtikelstammItem.EXTINFO_VAL_VAT_OVERRIDEN); if (overriden != null) { ret = ret + " (MWSt: " + resolveVatInfoLabel(VatInfo.valueOf(overriden)) + ")"; } if (CoreHub.globalCfg.get(PreferenceConstants.PREF_SHOW_PRICE_IN_OVERVIEW, true)) { Double publicPrice = ai.getPublicPrice(); if (publicPrice > 0.0d) { ret = ret + " <" + ai.getPublicPrice() + "> "; } } return ret; } else if (element instanceof ATCCode) { String atcLabel = atcLabelProvider.getText(element); String atcLabelWAvailability = atcLabel + " [" + determineNumberOfAvailableArticlesForAtcCode((ATCCode) element)+" Artikel]"; return atcLabelWAvailability; } else if (element instanceof ATCFilterInfoListElement) { ATCFilterInfoListElement afile = (ATCFilterInfoListElement) element; return afile.getDescription(); } return null; } private String determineNumberOfAvailableArticlesForAtcCode(ATCCode element){ return String.valueOf(ATCCodeCache.getAvailableArticlesByATCCode(element)); } private String resolveVatInfoLabel(VatInfo vatinfo){ switch (vatinfo) { case VAT_CH_ISMEDICAMENT: return "Reduziert"; case VAT_NONE: return "Keine"; default: return "Normal"; } } @Override public Image getImage(Object element){ if (element instanceof ArtikelstammItem) { return super.getImage(element); } else if (element instanceof ATCCode) { return atcLabelProvider.getImage(element); } else if (element instanceof ATCFilterInfoListElement) { return atcLabelProvider.getImage(element); } return null; } @Override public Color getForeground(Object element){ if (element instanceof ArtikelstammItem) { return super.getForeground(element); } else if (element instanceof ATCCode) { return atcLabelProvider.getForeground(element); } else if (element instanceof ATCFilterInfoListElement) { return null; } return null; } @Override public Color getBackground(Object element){ if (element instanceof ArtikelstammItem) { return super.getBackground(element); } else if (element instanceof ATCCode) { return atcLabelProvider.getBackground(element); } else if (element instanceof ATCFilterInfoListElement) { return atcLabelProvider.getBackground(element); } return null; } }