package at.medevit.ch.artikelstamm.medcalendar.ui;
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.ch.artikelstamm.medcalendar.MedCalendar;
import at.medevit.ch.artikelstamm.medcalendar.MedCalendarSection;
import at.medevit.ch.artikelstamm.medcalendar.ui.provider.MedCalArtikelstammFlatDataLoader;
import ch.artikelstamm.elexis.common.ArtikelstammItem;
import ch.elexis.core.ui.util.viewers.CommonViewer;
public class MedCalMenuContribution extends ContributionItem {
private CommonViewer cov;
private MedCalArtikelstammFlatDataLoader fdl;
public MedCalMenuContribution(CommonViewer cov, MedCalArtikelstammFlatDataLoader fdl){
this.cov = cov;
this.fdl = fdl;
}
@Override
public void fill(Menu menu, int index){
StructuredSelection structuredSelection = new StructuredSelection(cov.getSelection());
Object element = structuredSelection.getFirstElement();
MedCalendar medCal = MedCalendar.getInstance();
if (element instanceof ArtikelstammItem) {
final ArtikelstammItem ai = (ArtikelstammItem) element;
List<MedCalendarSection> medCalHierarchy =
medCal.getHierarchyForMedCal(ai.getATCCode());
for (MedCalendarSection section : medCalHierarchy) {
MenuItem temp = new MenuItem(menu, SWT.PUSH);
temp.setText(section.getCode() + " " + section.getName());
final MedCalendarSection tmpSection = section;
temp.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e){
fdl.setUseMedCalQueryFilter(true);
fdl.setMedCalQueryFilterValue(tmpSection);
};
});
}
}
}
@Override
public boolean isDynamic(){
return true;
}
}