Added error handler for invalid graphics files.

This commit is contained in:
Robert Greene 2004-06-18 02:14:23 +00:00
parent 98a561630f
commit 8fc1b7fad3

View File

@ -27,10 +27,12 @@ import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader; import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Label;
import com.webcodepro.applecommander.ui.swt.FileViewerWindow; import com.webcodepro.applecommander.ui.swt.FileViewerWindow;
import com.webcodepro.applecommander.ui.swt.util.ImageCanvas; import com.webcodepro.applecommander.ui.swt.util.ImageCanvas;
import com.webcodepro.applecommander.ui.swt.util.contentadapter.ImageCanvasAdapter; import com.webcodepro.applecommander.ui.swt.util.contentadapter.ImageCanvasAdapter;
import com.webcodepro.applecommander.ui.swt.util.contentadapter.NoActionContentTypeAdapter;
/** /**
* Provides a view of an Apple graphic image. * Provides a view of an Apple graphic image.
@ -39,6 +41,7 @@ import com.webcodepro.applecommander.ui.swt.util.contentadapter.ImageCanvasAdapt
*/ */
public class GraphicsFilterAdapter extends FilterAdapter { public class GraphicsFilterAdapter extends FilterAdapter {
private Image image; private Image image;
private boolean error = false;
public GraphicsFilterAdapter(FileViewerWindow window, String text, String toolTipText, Image image) { public GraphicsFilterAdapter(FileViewerWindow window, String text, String toolTipText, Image image) {
super(window, text, toolTipText, image); super(window, text, toolTipText, image);
@ -47,27 +50,39 @@ public class GraphicsFilterAdapter extends FilterAdapter {
public void display() { public void display() {
getCopyToolItem().setEnabled(false); getCopyToolItem().setEnabled(false);
if (image == null) { if (image == null && error == false) {
byte[] imageBytes = getFileFilter().filter(getFileEntry()); try {
ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes); byte[] imageBytes = getFileFilter().filter(getFileEntry());
ImageLoader imageLoader = new ImageLoader(); ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);
ImageData[] imageData = imageLoader.load(inputStream); ImageLoader imageLoader = new ImageLoader();
image = new Image(getComposite().getDisplay(), imageData[0]); ImageData[] imageData = imageLoader.load(inputStream);
image = new Image(getComposite().getDisplay(), imageData[0]);
} catch (Throwable t) {
error = true;
}
} }
GridLayout layout = new GridLayout(); if (!error) {
getComposite().setLayout(layout); GridLayout layout = new GridLayout();
GridData gridData = new GridData(); getComposite().setLayout(layout);
gridData.widthHint = image.getImageData().width; GridData gridData = new GridData();
gridData.heightHint = image.getImageData().height; gridData.widthHint = image.getImageData().width;
ImageCanvas imageCanvas = new ImageCanvas(getComposite(), SWT.NONE, image, gridData); gridData.heightHint = image.getImageData().height;
getComposite().setContent(imageCanvas); ImageCanvas imageCanvas = new ImageCanvas(getComposite(), SWT.NONE, image, gridData);
getComposite().setExpandHorizontal(true); getComposite().setContent(imageCanvas);
getComposite().setExpandVertical(true); getComposite().setExpandHorizontal(true);
getComposite().setMinWidth(image.getImageData().width); getComposite().setExpandVertical(true);
getComposite().setMinHeight(image.getImageData().height); getComposite().setMinWidth(image.getImageData().width);
getComposite().setMinHeight(image.getImageData().height);
setContentTypeAdapter(new ImageCanvasAdapter(imageCanvas, getFileEntry().getFilename())); setContentTypeAdapter(new ImageCanvasAdapter(imageCanvas, getFileEntry().getFilename()));
} else {
Label label = new Label(getComposite(), SWT.NULL);
label.setText("Unexpected graphic file encountered!");
getComposite().setContent(label);
getComposite().setExpandHorizontal(true);
getComposite().setExpandVertical(true);
setContentTypeAdapter(new NoActionContentTypeAdapter());
}
} }
} }