package ch.elexis.core.ui.laboratory.controls.util; import java.util.Collections; import java.util.List; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import ch.elexis.core.data.events.ElexisEventDispatcher; import ch.elexis.core.model.ILabItem; import ch.elexis.core.types.LabItemTyp; import ch.elexis.core.ui.dialogs.DisplayLabDokumenteDialog; import ch.elexis.core.ui.dialogs.DisplayTextDialog; import ch.elexis.core.ui.laboratory.controls.LaborResultsComposite; import ch.elexis.core.ui.laboratory.controls.Messages; import ch.elexis.data.LabItem; import ch.elexis.data.LabResult; import ch.elexis.data.Patient; public class DisplayDoubleClickListener implements IDoubleClickListener { private static Font dialogFont = null; private LaborResultsComposite composite; public DisplayDoubleClickListener(LaborResultsComposite composite){ this.composite = composite; } @Override public void doubleClick(DoubleClickEvent event){ List<LabResult> results = composite.getSelectedResults(); if (results != null) { for (LabResult labResult : results) { openDisplayDialog(labResult); } } } private void openDisplayDialog(LabResult labResult){ ILabItem labItem = labResult.getItem(); if (labItem.getTyp().equals(LabItemTyp.TEXT) || (labResult.getComment().length() > 0)) { DisplayTextDialog dlg = new DisplayTextDialog(composite.getShell(), Messages.LaborResultsComposite_textResultTitle, labItem.getName(), labResult.getComment()); // HL7 Befunde enthalten oft mit Leerzeichen formatierte Bemerkungen, // die nur mit nicht-proportionalen Fonts dargestellt werden k��nnen // Wir versuchen also, die Anzeige mit Courier New, ohne zu wissen ob die // auf Mac und Linux auch drauf sind. // Falls der Font nicht geladen werden kann, wird der System-Default Font // verwendet // Hier die Fonts, welche getestet worden sind: // Windows: Courier New (getestet= // Mac: nicht getestet // Linux: nicht getestet try { if (dialogFont == null) { dialogFont = new Font(null, "Courier New", 9, SWT.NORMAL); //$NON-NLS-1$ } } catch (Exception ex) { // Do nothing -> Use System Default font } finally { dlg.setFont(dialogFont); } dlg.setWhitespaceNormalized(false); dlg.open(); } else if (labItem.getTyp().equals(LabItemTyp.DOCUMENT)) { Patient patient = ElexisEventDispatcher.getSelectedPatient(); if (patient != null) { new DisplayLabDokumenteDialog(composite.getShell(), Messages.LaborResultsComposite_Documents, Collections.singletonList(labResult)) .open();//$NON-NLS-1$ } } } }