at.medevit.ch.artikelstamm.elexis.common.ui.cv.ATCMenuContributionItem.java Source code

Java tutorial

Introduction

Here is the source code for at.medevit.ch.artikelstamm.elexis.common.ui.cv.ATCMenuContributionItem.java

Source

/*******************************************************************************
 * 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;
    }

}