/*******************************************************************************
* Copyright (c) 2006-2010, 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.core.ui.medication.views;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import ch.elexis.core.data.events.ElexisEvent;
import ch.elexis.core.data.events.ElexisEventDispatcher;
import ch.elexis.core.data.events.ElexisEventListener;
import ch.elexis.core.ui.UiDesk;
import ch.elexis.core.ui.actions.GlobalEventDispatcher;
import ch.elexis.core.ui.actions.IActivationListener;
import ch.elexis.core.ui.icons.Images;
import ch.elexis.core.ui.util.ListDisplaySelectionProvider;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.data.Patient;
/**
* Eine platzsparende View zur Anzeige der Dauermedikation
*
* @author gerry
*
*/
public class DauerMediView extends ViewPart implements IActivationListener, ElexisEventListener {
public final static String ID = "ch.elexis.dauermedikationview"; //$NON-NLS-1$
private IAction toClipBoardAction;
FixMediDisplay dmd;
public DauerMediView(){
}
@Override
public void createPartControl(Composite parent){
parent.setLayout(new GridLayout());
dmd = new FixMediDisplay(parent, getViewSite());
dmd.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
ListDisplaySelectionProvider selDisplay = new ListDisplaySelectionProvider(dmd);
getSite().registerContextMenu(FixMediDisplay.ID, dmd.getMenuManager(), selDisplay);
getSite().setSelectionProvider(selDisplay);
dmd.setUnlocked(false); // https://redmine.medelexis.ch/issues/4602
makeActions();
getViewSite().getActionBars().getToolBarManager().add(toClipBoardAction);
GlobalEventDispatcher.addActivationListener(this, this);
}
public void dispose(){
GlobalEventDispatcher.removeActivationListener(this, this);
dmd.dispose();
}
@Override
public void setFocus(){
// TODO Auto-generated method stub
}
public void activation(boolean mode){ /* leer */
}
public void visible(boolean mode){
if (mode) {
ElexisEventDispatcher.getInstance().addListeners(this);
catchElexisEvent(template);
} else {
ElexisEventDispatcher.getInstance().removeListeners(this);
}
}
private void makeActions(){
toClipBoardAction = new Action(Messages.DauerMediView_copy) { //$NON-NLS-1$
{
setToolTipText(Messages.DauerMediView_copyToClipboard); //$NON-NLS-1$
setImageDescriptor(Images.IMG_CLIPBOARD.getImageDescriptor());
}
@Override
public void run(){
dmd.toClipBoard(true);
}
};
}
public void catchElexisEvent(ElexisEvent ev){
UiDesk.asyncExec(new Runnable() {
public void run(){
dmd.reload();
}
});
}
private final ElexisEvent template = new ElexisEvent(null, Patient.class,
ElexisEvent.EVENT_SELECTED | ElexisEvent.EVENT_DESELECTED);
public ElexisEvent getElexisEventFilter(){
return template;
}
}