/*******************************************************************************
* Copyright (c) 2012 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:
* T. Huster - reworked for Tarmed version 1.08
******************************************************************************/
package ch.elexis.views;
import org.eclipse.jface.viewers.StructuredViewer;
import ch.elexis.core.data.events.ElexisEvent;
import ch.elexis.core.data.events.ElexisEventDispatcher;
import ch.elexis.core.ui.events.ElexisUiEventListenerImpl;
import ch.elexis.core.ui.selectors.FieldDescriptor;
import ch.elexis.core.ui.util.viewers.CommonViewer;
import ch.elexis.core.ui.util.viewers.SelectorPanelProvider;
import ch.elexis.data.Konsultation;
import ch.elexis.data.PersistentObject;
import ch.rgw.tools.TimeTool;
public class TarmedSelectorPanelProvider extends SelectorPanelProvider {
private CommonViewer commonViewer;
private StructuredViewer viewer;
private TarmedValidDateFilter validDateFilter = new TarmedValidDateFilter();
private FilterKonsultationListener konsFilter = new FilterKonsultationListener(
Konsultation.class);
public TarmedSelectorPanelProvider(CommonViewer cv,
FieldDescriptor<? extends PersistentObject>[] fields, boolean bExlusive){
super(fields, bExlusive);
commonViewer = cv;
}
@Override
public void setFocus(){
super.setFocus();
if (viewer == null) {
viewer = commonViewer.getViewerWidget();
viewer.addFilter(validDateFilter);
ElexisEventDispatcher.getInstance().addListeners(konsFilter);
// call with null, event is not used in listener impl.
konsFilter.catchElexisEvent(null);
}
}
private class FilterKonsultationListener extends ElexisUiEventListenerImpl {
public FilterKonsultationListener(Class<?> clazz){
super(clazz);
}
@Override
public void runInUi(ElexisEvent ev){
Konsultation selectedKons =
(Konsultation) ElexisEventDispatcher.getSelected(Konsultation.class);
// apply the filter
if (selectedKons != null) {
validDateFilter.setValidDate(new TimeTool(selectedKons.getDatum()));
viewer.getControl().setRedraw(false);
viewer.refresh();
viewer.getControl().setRedraw(true);
} else {
validDateFilter.setValidDate(null);
viewer.getControl().setRedraw(false);
viewer.refresh();
viewer.getControl().setRedraw(true);
}
}
}
}