Java tutorial
/******************************************************************************* * 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: * MEDEVIT <office@medevit.at> - initial API and implementation ******************************************************************************/ package at.medevit.ch.artikelstamm.elexis.common.ui.cv; import java.util.List; import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import at.medevit.atc_codes.ATCCode; import at.medevit.atc_codes.ATCCodeLanguageConstants; import at.medevit.atc_codes.ATCCodeService; import at.medevit.ch.artikelstamm.elexis.common.internal.ATCCodeServiceConsumer; import at.medevit.ch.artikelstamm.elexis.common.preference.PreferenceConstants; import ch.artikelstamm.elexis.common.ArtikelstammItem; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.ui.util.viewers.CommonViewer; public class ATCMenuContributionItem extends ContributionItem { final private CommonViewer cov; final private String prefAtcLanguage; final private ArtikelstammFlatDataLoader fdl; public ATCMenuContributionItem(CommonViewer cov, ArtikelstammFlatDataLoader fdl) { this.cov = cov; this.fdl = fdl; prefAtcLanguage = CoreHub.globalCfg.get(PreferenceConstants.PREF_ATC_CODE_LANGUAGE, ATCCodeLanguageConstants.ATC_LANGUAGE_VAL_GERMAN); } @Override public void fill(Menu menu, int index) { StructuredSelection structuredSelection = new StructuredSelection(cov.getSelection()); Object element = structuredSelection.getFirstElement(); ATCCodeService atcCodeService = ATCCodeServiceConsumer.getATCCodeService(); if (atcCodeService == null) return; if (element instanceof ArtikelstammItem) { final ArtikelstammItem ai = (ArtikelstammItem) element; List<ATCCode> atcHierarchy = atcCodeService.getHierarchyForATCCode(ai.getATCCode()); for (ATCCode atcCode : atcHierarchy) { MenuItem temp = new MenuItem(menu, SWT.PUSH); if (prefAtcLanguage.equals(ATCCodeLanguageConstants.ATC_LANGUAGE_VAL_GERMAN)) { temp.setText(atcCode.atcCode + " " + atcCode.name_german); } else { temp.setText(atcCode.atcCode + " " + atcCode.name); } final ATCCode tempC = atcCode; temp.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { fdl.setUseAtcQueryFilter(true); fdl.setAtcQueryFilterValue(tempC.atcCode); } }); } } } @Override public boolean isDynamic() { return true; } }