/*******************************************************************************
* 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.base.konsextension.bildanzeige;
import java.io.File;
import java.io.FileOutputStream;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import ch.elexis.core.ui.icons.ImageSize;
import ch.elexis.core.ui.icons.Images;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.images.Bild;
public class BildanzeigeFenster extends TitleAreaDialog {
Bild bild;
Image img;
public BildanzeigeFenster(Shell shell, Bild bild){
super(shell);
this.bild = bild;
}
@Override
protected Control createDialogArea(Composite parent){
ScrolledComposite ret =
new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
Composite canvas = new Composite(ret, SWT.NONE);
ret.setContent(canvas);
img = bild.createImage();
Rectangle r = img.getBounds();
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e){
GC gc = e.gc;
gc.drawImage(img, 0, 0);
}
});
canvas.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e){
img.dispose();
}
});
canvas.setSize(r.width, r.height);
return ret;
}
@Override
protected void createButtonsForButtonBar(Composite parent){
Button bClose =
createButton(parent, org.eclipse.jface.dialogs.Dialog.OK,
Messages.BildanzeigeFenster_Close, true);
bClose.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
BildanzeigeFenster.this.okPressed();
}
});
Button bExport = createButton(parent, 4, Messages.BildanzeigeFenster_Export, false);
bExport.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
FileDialog fd = new FileDialog(BildanzeigeFenster.this.getShell(), SWT.SAVE);
fd.setFileName(bild.get("Titel"));
String fname = fd.open();
if (fname != null) {
File file = new File(fname);
try {
if (!file.createNewFile() || !file.canWrite()) {
SWTHelper.showError(Messages.BildanzeigeFenster_Error,
Messages.BildanzeigeFenster_Cannot + fname
+ Messages.BildanzeigeFenster_Create);
} else {
byte[] arr = bild.getData();
FileOutputStream fout = new FileOutputStream(file);
fout.write(arr);
fout.close();
}
} catch (Exception ex) {
SWTHelper.showError(Messages.BildanzeigeFenster_Error,
Messages.BildanzeigeFenster_ErrorWriting + fname);
}
}
}
});
// super.createButtonsForButtonBar(parent);
}
@Override
public void create(){
super.create();
getShell().setText(bild.getPatient().getLabel());
setTitle(bild.getLabel());
setMessage(bild.get("Info")); //$NON-NLS-1$
setTitleImage(Images.IMG_LOGO.getImage(ImageSize._75x66_TitleDialogIconSize));
}
}