package com.hilotec.elexis.kgview;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.part.ViewPart;
import com.hilotec.elexis.kgview.data.KonsData;
import ch.elexis.data.Konsultation;
public class KonsTimeView extends ViewPart {
public static final String ID = "com.hilotec.elexis.kgview.KonsTimeView";
Label timerLbl;
MySelListener msl;
KonsData konsData;
long time;
@Override
public void createPartControl(Composite parent) {
parent.setLayout(new FillLayout());
Composite comp = new Composite(parent, 0);
comp.setLayout(new GridLayout());
timerLbl = new Label(comp, 0);
createButtonControl(comp);
setEnabled(false);
msl = new MySelListener();
}
@Override
public void setFocus() { }
protected void createButtonControl(Composite parent) { }
protected void setEnabled(boolean en) { }
protected void stopTimer() { }
/** Die ausgewaehlte Konsultation wurde deselektiert. */
private void konsDeselected(Konsultation kons) {
stopTimer();
konsData.setKonsZeit(time);
setEnabled(false);
konsData = null;
time = 0;
updateLabel();
}
/** Konsultation wurde selektiert. */
private void konsSelected(Konsultation kons) {
konsData = new KonsData(kons);
time = konsData.getKonsZeit();
setEnabled(true);
updateLabel();
}
protected void updateLabel() {
if (timerLbl.isDisposed()) {
return;
}
long secs = time / 1000;
String text = String.format("%02d:%02d:%02d",
(secs / 3600),
((secs % 3600) / 60),
(secs % 60));
timerLbl.setText(text);
timerLbl.pack();
timerLbl.update();
}
@Override
public void dispose() {
msl.destroy();
super.dispose();
}
/**
* Hilfsklasse um auf dem Laufenden zu bleiben bezueglich der
* ausgewaehlten Konsultation.
*/
private class MySelListener extends POSelectionListener<Konsultation> {
public MySelListener() {
init();
}
@Override
protected void deselected(Konsultation kons) {
konsDeselected(kons);
}
@Override
protected void selected(Konsultation kons) {
konsSelected(kons);
}
}
}