/*******************************************************************************
* Copyright (c) 2012 MEDEVIT <office@medevit.at>.
* 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 ch.elexis.core.ui.contacts.views.filter;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.PlatformUI;
import ch.elexis.core.model.IContact;
public class KontaktAnzeigeTypViewerFilter extends ViewerFilter {
private static Viewer viewer;
private static boolean showPerson = false;
private static boolean showOrganisation = false;
private static boolean showPatient = true;
private static boolean showMandant = false;
private static boolean showAnwender = false;
private static boolean showDeleted = false;
public KontaktAnzeigeTypViewerFilter(Viewer viewer){
KontaktAnzeigeTypViewerFilter.viewer = viewer;
PlatformUI.getPreferenceStore().setDefault(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showPatient", true);
showPerson =
PlatformUI.getPreferenceStore().getBoolean(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showPerson");
showPatient =
PlatformUI.getPreferenceStore().getBoolean(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showPatient");
showOrganisation =
PlatformUI.getPreferenceStore().getBoolean(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showOrganisation");
showMandant =
PlatformUI.getPreferenceStore().getBoolean(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showMandant");
showAnwender =
PlatformUI.getPreferenceStore().getBoolean(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showAnwender");
showDeleted =
PlatformUI.getPreferenceStore().getBoolean(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showDeleted");
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element){
IContact contact = (IContact) element;
if (showDeleted && contact.isDeleted())
return true;
switch (contact.getContactType()) {
case ORGANIZATION:
if (showOrganisation)
return true;
break;
case PERSON:
if (showPerson) {
return true;
} else {
if (contact.isPatient() && !contact.isDeleted() && showPatient)
return true;
if (contact.isUser() && !contact.isDeleted() && showAnwender)
return true;
if (contact.isMandator() && !contact.isDeleted() && showMandant)
return true;
}
default:
// TODO: Administrator is neither Organization nor Person?!
break;
}
return false;
}
public static void refreshViewer(){
viewer.getControl().setRedraw(false);
viewer.refresh();
if (!showAnwender && !showDeleted && !showMandant && !showOrganisation && !showPatient
&& !showPerson) {
//
}
viewer.getControl().setRedraw(true);
}
public static boolean isShowPerson(){
return showPerson;
}
public static void setShowPerson(boolean showPerson){
KontaktAnzeigeTypViewerFilter.showPerson = showPerson;
PlatformUI.getPreferenceStore().setValue(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showPerson", showPerson);
refreshViewer();
}
public static boolean isShowOrganisation(){
return showOrganisation;
}
public static void setShowOrganisation(boolean showOrganisation){
KontaktAnzeigeTypViewerFilter.showOrganisation = showOrganisation;
PlatformUI.getPreferenceStore().setValue(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showOrganisation", showOrganisation);
refreshViewer();
}
public static boolean isShowPatient(){
return showPatient;
}
public static void setShowPatient(boolean showPatient){
KontaktAnzeigeTypViewerFilter.showPatient = showPatient;
PlatformUI.getPreferenceStore().setValue(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showPatient", showPatient);
refreshViewer();
}
public static boolean isShowMandant(){
return showMandant;
}
public static void setShowMandant(boolean showMandant){
KontaktAnzeigeTypViewerFilter.showMandant = showMandant;
PlatformUI.getPreferenceStore().setValue(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showMandant", showMandant);
refreshViewer();
}
public static boolean isShowAnwender(){
return showAnwender;
}
public static void setShowAnwender(boolean showAnwender){
KontaktAnzeigeTypViewerFilter.showAnwender = showAnwender;
PlatformUI.getPreferenceStore().setValue(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showAnwender", showAnwender);
refreshViewer();
}
public static boolean isShowDeleted(){
return showDeleted;
}
public static void setShowDeleted(boolean showDeleted){
KontaktAnzeigeTypViewerFilter.showDeleted = showDeleted;
PlatformUI.getPreferenceStore().setValue(
KontaktAnzeigeTypViewerFilter.class.getName() + ".showDeleted", showDeleted);
refreshViewer();
}
}