blob: f27b9401bd887ee8b7866a07ac8c3f0a9170f22b [file] [log] [blame]
/*
* Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.sun.swingset3.demos.filechooser;
import java.awt.*;
import java.awt.color.ColorSpace;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import com.sun.swingset3.demos.JGridPanel;
import com.sun.swingset3.demos.ResourceManager;
import com.sun.swingset3.DemoProperties;
/**
* JFileChooserDemo
*
* @author Pavel Porvatov
*/
@DemoProperties(
value = "JFileChooser Demo",
category = "Choosers",
description = "Demonstrates JFileChooser, a component which allows the user to open and save files.",
sourceFiles = {
"com/sun/swingset3/demos/filechooser/FileChooserDemo.java",
"com/sun/swingset3/demos/DemoUtilities.java",
"com/sun/swingset3/demos/filechooser/resources/FileChooserDemo.properties",
"com/sun/swingset3/demos/filechooser/resources/images/apply.png",
"com/sun/swingset3/demos/filechooser/resources/images/FileChooserDemo.gif",
"com/sun/swingset3/demos/filechooser/resources/images/fliphor.png",
"com/sun/swingset3/demos/filechooser/resources/images/flipvert.png",
"com/sun/swingset3/demos/filechooser/resources/images/rotateleft.png",
"com/sun/swingset3/demos/filechooser/resources/images/rotateright.png"
}
)
public class FileChooserDemo extends JPanel {
public static final String DEMO_TITLE = FileChooserDemo.class.getAnnotation(DemoProperties.class).value();
public static final String FILE_CHOOSER_DEMO_IMAGE_TEXT = "FileChooserDemo.image.text";
public static final String FILE_CHOOSER_DEMO_SAVEQUESTION_MESSAGE = "FileChooserDemo.savequiestion.message";
public static final String FILE_CHOOSER_DEMO_ERRORSAVEFILE_MESSAGE = "FileChooserDemo.errorsavefile.message";
public static final String FILE_CHOOSER_DEMO_ERRORSAVEFILE_TITLE = "FileChooserDemo.errorsavefile.title";
public static final String JPEG_IMAGES = "JPEG images";
public static final String ALL_SUPPORTED_IMAGES = "All supported images";
public static final String JPG = "jpg";
public static final String FILE_CHOOSER_DEMO_SELECTFILE_MESSAGE = "FileChooserDemo.selectfile.message";
public static final String FILE_CHOOSER_DEMO_SELECTFILE_TITLE = "FileChooserDemo.selectfile.title";
public static final String FILE_CHOOSER_DEMO_ERRORLOADFILE_MESSAGE = "FileChooserDemo.errorloadfile.message";
public static final String FILE_CHOOSER_DEMO_ERRORLOADFILE_TITLE = "FileChooserDemo.errorloadfile.title";
public static final String FILE_CHOOSER_DEMO_PREVIEW_EMPTY_TEXT = "FileChooserDemo.preview.emptytext";
public static final String FILE_CHOOSER_DEMO_PREVIEW_TYPE = "FileChooserDemo.preview.type";
public static final String FILE_CHOOSER_DEMO_PREVIEW_SIZE = "FileChooserDemo.preview.size";
public static final String FILE_CHOOSER_DEMO_FILTER_GRAY = "FileChooserDemo.filter.gray";
public static final String FILE_CHOOSER_DEMO_FILTER_BLUR = "FileChooserDemo.filter.blur";
public static final String FILE_CHOOSER_DEMO_FILTER_EDGE = "FileChooserDemo.filter.edge";
public static final String FILE_CHOOSER_DEMO_FILTER_SHARPEN = "FileChooserDemo.filter.sharpen";
public static final String FILE_CHOOSER_DEMO_FILTER_DARKEN = "FileChooserDemo.filter.darken";
public static final String FILE_CHOOSER_DEMO_FILTER_BRIGHTEN = "FileChooserDemo.filter.brighten";
public static final String FILE_CHOOSER_DEMO_FILTER_LESSCONTRAST = "FileChooserDemo.filter.lesscontrast";
public static final String FILE_CHOOSER_DEMO_FILTER_MORECONTRAST = "FileChooserDemo.filter.morecontrast";
public static final String FILE_CHOOSER_DEMO_ROTATE_LEFT_TOOLTIP = "FileChooserDemo.rotateleft.tooltip";
public static final String FILE_CHOOSER_DEMO_ROTATE_RIGHT_TOOLTIP = "FileChooserDemo.rotateright.tooltip";
public static final String FILE_CHOOSER_DEMO_FLIP_HORIZONTAL_TOOLTIP = "FileChooserDemo.fliphorizontal.tooltip";
public static final String FILE_CHOOSER_DEMO_FLIP_VERTICAL_TOOLTIP = "FileChooserDemo.flipvertical.tooltip";
public static final String FILE_CHOOSER_DEMO_APPLY_FILTER_TOOLTIP = "FileChooserDemo.applyfilter.tooltip";
private static final ResourceManager resourceManager = new ResourceManager(FileChooserDemo.class);
public static final String ROTATE_LEFT_TOOLTIP = resourceManager.getString(FILE_CHOOSER_DEMO_ROTATE_LEFT_TOOLTIP);
public static final String ROTATE_RIGHT_TOOLTIP = resourceManager.getString(FILE_CHOOSER_DEMO_ROTATE_RIGHT_TOOLTIP);
public static final String FLIP_HORIZONTAL_TOOLTIP = resourceManager.getString(FILE_CHOOSER_DEMO_FLIP_HORIZONTAL_TOOLTIP);
public static final String FLIP_VERTICAL_TOOLTIP = resourceManager.getString(FILE_CHOOSER_DEMO_FLIP_VERTICAL_TOOLTIP);
public static final String APPLY_FILTER_TOOLTIP = resourceManager.getString(FILE_CHOOSER_DEMO_APPLY_FILTER_TOOLTIP);
public static final String FILE_CHOOSER_DEMO_SAVE_TEXT = resourceManager.getString("FileChooserDemo.save.text");
public static final String FILE_CHOOSER_DEMO_CANCEL_TEXT = resourceManager.getString("FileChooserDemo.cancel.text");
public static final String FILE_CHOOSER_DEMO_SAVEQUESTION_TITLE = resourceManager.getString("FileChooserDemo.savequestion.title");
public static final String FILE_CHOOSER_DEMO_SELECT_TEXT = resourceManager.getString("FileChooserDemo.select.text");
public static final String FILE_CHOOSER_DEMO_SELECT_WITH_PREVIEW = resourceManager.getString("FileChooserDemo.selectwithpreview.text");
public static final String GRAY = resourceManager.getString(FILE_CHOOSER_DEMO_FILTER_GRAY);
private enum State {
EMPTY,
IMAGE_LOADED,
IMAGE_CHANGED
}
private static int rotateLeftCount = 0;
private static int rotateRightCount = 0;
private static int flipHorizontalCount = 0;
private static int flipVerticalCount = 0;
private static int lastAppliedFilterId = -1;
private static final int MIN_FILTER_ID = 0;
private static final int MAX_FILTER_ID = 7;
private static final String[] FILTER_NAMES = {
FILE_CHOOSER_DEMO_FILTER_BLUR,
FILE_CHOOSER_DEMO_FILTER_EDGE,
FILE_CHOOSER_DEMO_FILTER_SHARPEN,
FILE_CHOOSER_DEMO_FILTER_DARKEN,
FILE_CHOOSER_DEMO_FILTER_BRIGHTEN,
FILE_CHOOSER_DEMO_FILTER_LESSCONTRAST,
FILE_CHOOSER_DEMO_FILTER_MORECONTRAST,
FILE_CHOOSER_DEMO_FILTER_GRAY
};
private static final BufferedImageOp[] FILTER_OPERATIONS = {
new ConvolveOp(new Kernel(3, 3,
new float[]{.1111f, .1111f, .1111f, .1111f, .1111f, .1111f, .1111f, .1111f, .1111f}),
ConvolveOp.EDGE_NO_OP, null),
new ConvolveOp(new Kernel(3, 3,
new float[]{0.0f, -1.0f, 0.0f, -1.0f, 4.f, -1.0f, 0.0f, -1.0f, 0.0f}),
ConvolveOp.EDGE_NO_OP, null),
new ConvolveOp(new Kernel(3, 3,
new float[]{0.0f, -1.0f, 0.0f, -1.0f, 5.f, -1.0f, 0.0f, -1.0f, 0.0f}),
ConvolveOp.EDGE_NO_OP, null),
new RescaleOp(1, -5.0f, null),
new RescaleOp(1, 5.0f, null),
new RescaleOp(0.9f, 0, null),
new RescaleOp(1.1f, 0, null),
new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null)
};
private final JLabel lbImage = new JLabel(resourceManager
.getString(FILE_CHOOSER_DEMO_IMAGE_TEXT), JLabel.CENTER);
private final JScrollPane pnImage = new JScrollPane(lbImage);
private final JButton btnSelect = new JButton(FILE_CHOOSER_DEMO_SELECT_TEXT);
private final JButton btnSelectWithPreview = new JButton(FILE_CHOOSER_DEMO_SELECT_WITH_PREVIEW);
private final JComboBox cbFilters = new JComboBox();
private final JButton btnApplyFilter = createButton("apply.png", FILE_CHOOSER_DEMO_APPLY_FILTER_TOOLTIP);
private final JButton btnRotateLeft = createButton("rotateleft.png", FILE_CHOOSER_DEMO_ROTATE_LEFT_TOOLTIP);
private final JButton btnRotateRight = createButton("rotateright.png", FILE_CHOOSER_DEMO_ROTATE_RIGHT_TOOLTIP);
private final JButton btnFlipHorizontal = createButton("fliphor.png", FILE_CHOOSER_DEMO_FLIP_HORIZONTAL_TOOLTIP);
private final JButton btnFlipVertical = createButton("flipvert.png", FILE_CHOOSER_DEMO_FLIP_VERTICAL_TOOLTIP);
private final JButton btnSave = new JButton(FILE_CHOOSER_DEMO_SAVE_TEXT);
private final JButton btnCancel = new JButton(FILE_CHOOSER_DEMO_CANCEL_TEXT);
private final JFileChooser externalChooser = new JFileChooser(new File("."));
private final JFileChooser embeddedChooser = new JFileChooser(new File("."));
private final JGridPanel pnContent = new JGridPanel(1, 0, 0);
private State state;
private boolean fileChoosing;
private File file;
private BufferedImage image;
/**
* main method allows us to run as a standalone demo.
*/
public static void main(String[] args) {
JFrame frame = new JFrame(FileChooserDemo.class.getAnnotation(DemoProperties.class).value());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new FileChooserDemo());
frame.setPreferredSize(new Dimension(800, 600));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
/**
* FileChooserDemo Constructor
*/
public FileChooserDemo() {
setLayout(new BorderLayout());
initUI();
embeddedChooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (JFileChooser.APPROVE_SELECTION.equals(e.getActionCommand())) {
loadFile(embeddedChooser.getSelectedFile());
}
if (JFileChooser.CANCEL_SELECTION.equals(e.getActionCommand())) {
setState(state, false);
}
}
});
btnSelect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (fileChoosing) {
loadFile(embeddedChooser.getSelectedFile());
} else {
setState(state, true);
}
}
});
btnSelectWithPreview.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (externalChooser.showOpenDialog(FileChooserDemo.this) == JFileChooser.APPROVE_OPTION) {
loadFile(externalChooser.getSelectedFile());
}
}
});
btnApplyFilter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lastAppliedFilterId = ((FilterItem) cbFilters.getSelectedItem()).getId();
doFilter(FILTER_OPERATIONS[lastAppliedFilterId]);
}
});
btnRotateLeft.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doAffineTransform(image.getHeight(), image.getWidth(),
new AffineTransform(0, -1, 1, 0, 0, image.getWidth()));
rotateLeftCount++;
}
});
btnRotateRight.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doAffineTransform(image.getHeight(), image.getWidth(),
new AffineTransform(0, 1, -1, 0, image.getHeight(), 0));
rotateRightCount++;
}
});
btnFlipHorizontal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doAffineTransform(image.getWidth(), image.getHeight(),
new AffineTransform(-1, 0, 0, 1, image.getWidth(), 0));
flipHorizontalCount++;
}
});
btnFlipVertical.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doAffineTransform(image.getWidth(), image.getHeight(),
new AffineTransform(1, 0, 0, -1, 0, image.getHeight()));
flipVerticalCount++;
}
});
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (JOptionPane.showConfirmDialog(FileChooserDemo.this,
resourceManager.getString(FILE_CHOOSER_DEMO_SAVEQUESTION_MESSAGE),
FILE_CHOOSER_DEMO_SAVEQUESTION_TITLE,
JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION) {
return;
}
String fileName = file.getName();
int i = fileName.lastIndexOf('.');
try {
ImageIO.write(image, fileName.substring(i + 1), file);
setState(State.IMAGE_LOADED, false);
} catch (IOException e1) {
JOptionPane.showMessageDialog(FileChooserDemo.this,
MessageFormat.format(resourceManager
.getString(FILE_CHOOSER_DEMO_ERRORSAVEFILE_MESSAGE), e1),
resourceManager.getString(FILE_CHOOSER_DEMO_ERRORSAVEFILE_TITLE),
JOptionPane.ERROR_MESSAGE);
}
}
});
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loadFile(file);
}
});
}
private void initUI() {
externalChooser.addChoosableFileFilter(new FileNameExtensionFilter(JPEG_IMAGES, JPG));
externalChooser.addChoosableFileFilter(new FileNameExtensionFilter(ALL_SUPPORTED_IMAGES,
ImageIO.getWriterFormatNames()));
final FilePreview filePreview = new FilePreview();
externalChooser.setAccessory(filePreview);
externalChooser.addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
filePreview.loadFileInfo(externalChooser.getSelectedFile());
}
});
embeddedChooser.setControlButtonsAreShown(false);
embeddedChooser.addChoosableFileFilter(new FileNameExtensionFilter(JPEG_IMAGES, JPG));
FileNameExtensionFilter filter = new FileNameExtensionFilter(ALL_SUPPORTED_IMAGES,
ImageIO.getWriterFormatNames());
embeddedChooser.addChoosableFileFilter(filter);
embeddedChooser.setFileFilter(filter);
for (int i = MIN_FILTER_ID; i <= MAX_FILTER_ID; i++) {
cbFilters.addItem(new FilterItem(i, resourceManager.getString(FILTER_NAMES[i])));
}
JGridPanel pnFilter = new JGridPanel(2, 0);
pnFilter.cell(cbFilters).
cell(btnApplyFilter);
JGridPanel pnRotateButtons = new JGridPanel(4, 3);
pnRotateButtons.cell(btnRotateLeft).
cell(btnRotateRight).
cell(btnFlipHorizontal).
cell(btnFlipVertical);
JGridPanel pnBottom = new JGridPanel(4, 1);
pnBottom.setHGap(JGridPanel.DEFAULT_GAP * 4);
pnBottom.cell(btnSelect, JGridPanel.Layout.FILL).
cell().
cell(pnFilter).
cell(btnSave, JGridPanel.Layout.FILL).
cell(btnSelectWithPreview, JGridPanel.Layout.FILL).
cell().
cell(pnRotateButtons).
cell(btnCancel, JGridPanel.Layout.FILL);
pnContent.cell(pnImage);
pnContent.cell(pnBottom, new Insets(10, 10, 10, 10));
add(pnContent);
setState(State.EMPTY, false);
}
private JButton createButton(String image, String toolTip) {
JButton res = new JButton(resourceManager.createImageIcon(image, null));
res.setPreferredSize(new Dimension(26, 26));
res.setMinimumSize(new Dimension(26, 26));
res.setToolTipText(resourceManager.getString(toolTip));
return res;
}
private void doAffineTransform(int width, int height, AffineTransform transform) {
BufferedImage newImage = new BufferedImage(image.getColorModel(),
image.getRaster().createCompatibleWritableRaster(width, height),
image.isAlphaPremultiplied(), new Hashtable<Object, Object>());
((Graphics2D) newImage.getGraphics()).drawRenderedImage(image, transform);
image = newImage;
lbImage.setIcon(new ImageIcon(image));
setState(State.IMAGE_CHANGED, false);
}
private void doFilter(BufferedImageOp imageOp) {
BufferedImage newImage = new BufferedImage(image.getColorModel(),
image.getRaster().createCompatibleWritableRaster(image.getWidth(), image.getHeight()),
image.isAlphaPremultiplied(), new Hashtable<Object, Object>());
imageOp.filter(image, newImage);
image = newImage;
lbImage.setIcon(new ImageIcon(image));
setState(State.IMAGE_CHANGED, false);
}
private void loadFile(File file) {
if (file == null) {
JOptionPane.showMessageDialog(this,
resourceManager.getString(FILE_CHOOSER_DEMO_SELECTFILE_MESSAGE),
resourceManager.getString(FILE_CHOOSER_DEMO_SELECTFILE_TITLE),
JOptionPane.INFORMATION_MESSAGE);
return;
}
try {
image = ImageIO.read(file);
if (image != null) {
lbImage.setText(null);
lbImage.setIcon(new ImageIcon(image));
this.file = file;
setState(State.IMAGE_LOADED, false);
return;
}
} catch (IOException e1) {
// Do nothing
}
JOptionPane.showMessageDialog(this,
resourceManager.getString(FILE_CHOOSER_DEMO_ERRORLOADFILE_MESSAGE),
resourceManager.getString(FILE_CHOOSER_DEMO_ERRORLOADFILE_TITLE),
JOptionPane.ERROR_MESSAGE);
}
private void setState(State state, boolean fileChoosing) {
if (this.fileChoosing != fileChoosing) {
pnContent.setComponent(fileChoosing ? embeddedChooser : pnImage, 0, 0);
}
this.state = state;
this.fileChoosing = fileChoosing;
btnSelectWithPreview.setEnabled(!fileChoosing);
boolean isImageLoaded = !fileChoosing && state != State.EMPTY;
cbFilters.setEnabled(isImageLoaded);
btnApplyFilter.setEnabled(isImageLoaded);
btnRotateRight.setEnabled(isImageLoaded);
btnRotateLeft.setEnabled(isImageLoaded);
btnFlipHorizontal.setEnabled(isImageLoaded);
btnFlipVertical.setEnabled(isImageLoaded);
boolean isImageChanged = !fileChoosing && state == State.IMAGE_CHANGED;
btnSave.setEnabled(isImageChanged);
btnCancel.setEnabled(isImageChanged);
}
public static int getRotateLeftCount() {
return rotateLeftCount;
}
public static int getRotateRightCount() {
return rotateRightCount;
}
public static int getFlipHorizontalCount() {
return flipHorizontalCount;
}
public static int getFlipVerticalCount() {
return flipVerticalCount;
}
public static int getLastAppliedFilterId() {
return lastAppliedFilterId;
}
private static class FilterItem {
/**
* 0 - blur 1 - edge 2 - sharpen 3 - darken 4 - brighten 5 - less
* contrast 6 - more contrast 7 - gray
*/
private final int id;
private final String name;
private FilterItem(int id, String name) {
assert id >= MIN_FILTER_ID && id <= MAX_FILTER_ID;
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String toString() {
return name;
}
}
private enum FileType {
IMAGE
}
private class FilePreview extends JGridPanel {
private static final int SIZE = 200;
private final JLabel lbType = new JLabel();
private final JLabel lbSize = new JLabel();
private final JLabel lbPreview = new JLabel(resourceManager
.getString(FILE_CHOOSER_DEMO_PREVIEW_EMPTY_TEXT), JLabel.CENTER);
private final Map<String, FileType> knownTypes = new HashMap<String, FileType>();
public FilePreview() {
super(1, 0, 1);
for (String s : ImageIO.getWriterFormatNames()) {
knownTypes.put(s.toLowerCase(), FileType.IMAGE);
}
initUI();
}
public void loadFileInfo(File file) {
boolean emptyPreview = true;
if (file == null) {
lbType.setText(null);
lbSize.setText(null);
} else {
lbType.setText(externalChooser.getFileSystemView().getSystemTypeDescription(file));
lbSize.setText(Long.toString(file.length()));
String fileName = file.getName();
int i = fileName.lastIndexOf(".");
String ext = i < 0 ? null : fileName.substring(i + 1);
FileType fileType = knownTypes.get(ext.toLowerCase());
if (fileType != null) {
switch (fileType) {
case IMAGE:
try {
BufferedImage image = ImageIO.read(file);
double coeff = Math.min(((double) SIZE) / image.getWidth(),
((double) SIZE) / image.getHeight());
BufferedImage scaledImage = new BufferedImage(
(int) Math.round(image.getWidth() * coeff),
(int) Math.round(image.getHeight() * coeff),
BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D) scaledImage.getGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(image, 0, 0, scaledImage.getWidth(), scaledImage.getHeight(), null);
lbPreview.setText(null);
lbPreview.setIcon(new ImageIcon(scaledImage));
setComponent(lbPreview, 0, 1);
emptyPreview = false;
} catch (IOException e) {
// Empty preview
}
break;
}
}
}
if (emptyPreview) {
lbPreview.setIcon(null);
lbPreview.setText(resourceManager.getString(FILE_CHOOSER_DEMO_PREVIEW_EMPTY_TEXT));
setComponent(lbPreview, 0, 1);
}
}
private void initUI() {
setPreferredSize(new Dimension(SIZE, -1));
setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
JGridPanel pnInfo = new JGridPanel(2, 1);
pnInfo.cell(new JLabel(resourceManager.getString(FILE_CHOOSER_DEMO_PREVIEW_TYPE))).
cell(lbType).
cell(new JLabel(resourceManager.getString(FILE_CHOOSER_DEMO_PREVIEW_SIZE))).
cell(lbSize);
cell(pnInfo);
cell(lbPreview, Layout.FILL, Layout.FILL);
}
}
}