/******************************************************************************* * Copyright (c) 2007-2014 G. Weirich, A. Brögli and A. Häffner. * 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: * rgw - initial API and implementation * rgw - 2014: Changes for Elexis 2.x ******************************************************************************/ package ch.elexis.molemax.views; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import ch.elexis.molemax.data.Tracker; import ch.elexis.core.ui.util.SWTHelper; import ch.rgw.tools.TimeTool; public class TimeMachineDisplay extends ScrolledComposite { Overview parent; // List<Composite> images; Composite inlay; List<Tracker> myTracker; TimeMachineDisplay(final Overview parent, final Composite c) { super(c, SWT.V_SCROLL | SWT.H_SCROLL); this.parent = parent; } void setTracker(final List<Tracker> t) { myTracker = t; if (inlay != null) { inlay.dispose(); } inlay = new Composite(this, SWT.NONE); inlay.setLayout(new GridLayout(2, false)); setContent(inlay); int w = 300; int h = 0; Label lb = SWTHelper.createHyperlink(inlay, Messages.TimeMachineDisplay_back, new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent e) { parent.setTopControl(parent.dispRow); } }); lb.setLayoutData(SWTHelper.getFillGridData(2, true, 1, false)); for (Tracker tracker : myTracker) { Composite cAnn = new Composite(inlay, SWT.BORDER); Composite cImg = new Composite(inlay, SWT.BORDER); cAnn.setLayout(new GridLayout()); Image img = tracker.createImage(); if (img != null) { ImageData imd = img.getImageData(); cImg.setBounds(imd.x, imd.y, imd.width + 20, imd.height + 20); cImg.setBackgroundImage(img); TimeTool date = new TimeTool( tracker.get(Messages.TimeMachineDisplay_date)); new Label(cAnn, SWT.NONE).setText(date .toString(TimeTool.DATE_GER)); Text tAnn = SWTHelper.createText(cAnn, 8, SWT.BORDER); tAnn.setData(tracker); tAnn.setText(tracker.getInfoString("annotation")); tAnn.addFocusListener(new FocusAdapter() { @Override public void focusLost(final FocusEvent e) { Text text = (Text) e.getSource(); Tracker t = (Tracker) text.getData(); String newMsg = text.getText(); t.setInfoString("annotation", newMsg); } }); GridData ldImg = new GridData(cImg.getBounds().width, cImg.getBounds().height); GridData ldAnn = new GridData(100, ldImg.heightHint); cAnn.setLayoutData(ldAnn); cImg.setLayoutData(ldImg); h = h + cImg.getBounds().height; int wTest = cImg.getBounds().width + 100; if (wTest > w) { w = wTest; } } } if (h == 0) { h = 20; } inlay.setBounds(0, 0, w, h); layout(); } }