/******************************************************************************* * Copyright (c) 2007-2011, G. Weirich and Elexis * 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: * G. Weirich - initial implementation *******************************************************************************/ package ch.elexis.base.ch.medikamente.bag.views; import java.io.File; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import ch.elexis.core.ui.icons.Images; import ch.elexis.core.ui.selectors.FieldDescriptor; import ch.elexis.core.ui.selectors.FieldDescriptor.Typ; import ch.elexis.core.ui.util.viewers.CommonViewer; import ch.elexis.core.ui.util.viewers.SelectorPanelProvider; import ch.elexis.core.ui.util.viewers.SimpleWidgetProvider; import ch.elexis.core.ui.util.viewers.ViewerConfigurer; import ch.elexis.core.ui.views.artikel.ArtikelContextMenu; import ch.elexis.core.ui.views.codesystems.CodeSelectorFactory; import ch.elexis.data.PersistentObject; import ch.elexis.data.Query; import ch.elexis.medikamente.bag.data.BAGMedi; import ch.elexis.medikamente.bag.data.BAGMediFactory; public class BAGMediSelector extends CodeSelectorFactory { public static final String FIELD_NAME = "Name"; public static final String FIELD_SUBSTANCE = "Substanz"; public static final String FIELD_NOTES = "Notizen"; private IAction sameOfGroupAction, genericsAction, onStockAction; CommonViewer cv; SelectorPanelProvider slp; FieldDescriptor<?>[] fields = { new FieldDescriptor<BAGMedi>("Name", FIELD_NAME, FieldDescriptor.Typ.STRING, null), new FieldDescriptor<BAGMedi>("Substanz", FIELD_SUBSTANCE, Typ.STRING, null), new FieldDescriptor<BAGMedi>("Notizen", FIELD_NOTES, Typ.STRING, null) }; BagMediContentProvider fdl; @Override public ViewerConfigurer createViewerConfigurer(CommonViewer cv){ makeActions(); ArtikelContextMenu menu = new ArtikelContextMenu((BAGMedi) new BAGMediFactory().createTemplate(BAGMedi.class), cv); menu.addAction(sameOfGroupAction); slp = new SelectorPanelProvider(fields, true); slp.addActions(genericsAction, onStockAction); fdl = new BagMediContentProvider(cv, new Query<BAGMedi>(BAGMedi.class)); this.cv = cv; return new ViewerConfigurer(fdl, new BAGMediLabelProvider(), slp, new ViewerConfigurer.DefaultButtonProvider(), new SimpleWidgetProvider( SimpleWidgetProvider.TYPE_LAZYLIST, SWT.NONE, null)); } @Override public void dispose(){ cv.dispose(); fdl.dispose(); } @Override public String getCodeSystemName(){ return BAGMedi.CODESYSTEMNAME; } @Override public Class<? extends PersistentObject> getElementClass(){ return BAGMedi.class; } private void makeActions(){ sameOfGroupAction = new Action("Selbe therap. Gruppe") { { setImageDescriptor(Images.IMG_FILTER.getImageDescriptor()); setToolTipText("Zeige alle Medikamente derselben therapeutischen Gruppe"); } @Override public void run(){ // ContentProvider cp = (ContentProvider) cv.getConfigurer().getContentProvider(); BAGMedi selected = (BAGMedi) cv.getSelection()[0]; fdl.setGroup(selected.get("Gruppe")); slp.fireChangedEvent(); } }; genericsAction = new Action("Nur Generika") { ImageDescriptor image_off, image_on; { String img_off = "icons" + File.separator + "ggruen.png"; String img_on = "icons" + File.separator + "ggruen_on.png"; image_off = BAGMediFactory.loadImageDescriptor(img_off); image_on = BAGMediFactory.loadImageDescriptor(img_on); setImageDescriptor(image_off); setToolTipText("Nur Generika anzeigen"); } @Override public void run(){ if (fdl.toggleGenericsOnly()) { setImageDescriptor(image_on); } else { setImageDescriptor(image_off); } slp.fireChangedEvent(); } }; onStockAction = new Action("Nur Lagerartikel") { ImageDescriptor image_on = null; ImageDescriptor image_off = null; { String img_off = "icons" + File.separator + "lager.png"; String img_on = "icons" + File.separator + "lager_on.png"; image_off = BAGMediFactory.loadImageDescriptor(img_off); image_on = BAGMediFactory.loadImageDescriptor(img_on); setImageDescriptor(image_off); setToolTipText("Nur Lagerartikel anzeigen"); } @Override public void run(){ if (fdl.toggleStockOnly()) { setImageDescriptor(image_on); } else { setImageDescriptor(image_off); } slp.fireChangedEvent(); } }; } }