/*******************************************************************************
* 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.io.File;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Hyperlink;
import ch.elexis.core.ui.UiDesk;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.molemax.data.MolemaxACL;
import ch.elexis.core.ui.util.SWTHelper;
import ch.rgw.tools.TimeTool;
public class AllSlotsDisplay extends Composite {
FormToolkit tk = UiDesk.getToolkit();
Overview parent;
ImageSlot[] slots = new ImageSlot[12];
Composite self;
RowSelector hl;
AllSlotsDisplay(final Overview parent, final Composite c) {
super(c, SWT.NONE);
self = this;
this.parent = parent;
setLayout(new GridLayout(4, true));
hl = new RowSelector();
Hyperlink hlLinks = tk.createHyperlink(this,
Messages.AllSlotsDisplay_left, SWT.CENTER);
hlLinks.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
hlLinks.addHyperlinkListener(hl);
Hyperlink hlVorne = tk.createHyperlink(this,
Messages.AllSlotsDisplay_front, SWT.CENTER);
hlVorne.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
hlVorne.addHyperlinkListener(hl);
Hyperlink hlRechts = tk.createHyperlink(this,
Messages.AllSlotsDisplay_right, SWT.CENTER);
hlRechts.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
hlRechts.addHyperlinkListener(hl);
Hyperlink hlHinten = tk.createHyperlink(this,
Messages.AllSlotsDisplay_back, SWT.CENTER);
hlHinten.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
hlHinten.addHyperlinkListener(hl);
}
@Override
public void dispose() {
if (slots != null) {
for (ImageSlot is : slots) {
if (!is.isDisposed()) {
is.dispose();
}
}
}
super.dispose();
}
void reload() {
UiDesk.asyncExec(new Runnable() {
public void run() {
for (int i = 0; i < 12; i++) {
if (slots[i] != null) {
slots[i].dispose();
slots[i] = null;
}
}
for (int i = 0; i < 12; i++) {
slots[i] = new ImageSlot(parent, self, i);
}
layout();
}
});
}
public void setUser() {
for (ImageSlot slot : slots) {
if (slot != null) {
slot.setUser();
}
}
}
public void addImageFromSequence(final int slot, final File file) {
slots[slot].setImage(file);
}
public void addImage(final String date, final int slot, final File file) {
if (CoreHub.acl.request(MolemaxACL.CHANGE_IMAGES)) {
TimeTool ttDate = new TimeTool(date);
parent.setPatient(parent.pat, ttDate.toString(TimeTool.DATE_GER));
slots[slot].setImage(file);
}
}
class RowSelector extends HyperlinkAdapter {
@Override
public void linkActivated(final HyperlinkEvent e) {
String text = e.getLabel();
if (text.equalsIgnoreCase(Messages.AllSlotsDisplay_left)) {
parent.dispRow.setRow(0);
} else if (text.equalsIgnoreCase(Messages.AllSlotsDisplay_front)) {
parent.dispRow.setRow(1);
} else if (text.equalsIgnoreCase(Messages.AllSlotsDisplay_right)) {
parent.dispRow.setRow(2);
} else {
parent.dispRow.setRow(3);
}
parent.setTopControl(parent.dispRow);
}
}
}