20 package net.sf.gridarta.gui.map;
22 import java.awt.BorderLayout;
23 import java.awt.Dimension;
24 import java.awt.Image;
25 import java.beans.PropertyChangeEvent;
26 import java.beans.PropertyChangeListener;
28 import java.util.prefs.Preferences;
29 import javax.swing.Action;
30 import javax.swing.Icon;
31 import javax.swing.ImageIcon;
32 import javax.swing.JButton;
33 import javax.swing.JComponent;
34 import javax.swing.JFileChooser;
35 import javax.swing.JLabel;
36 import javax.swing.JScrollPane;
37 import javax.swing.SwingConstants;
38 import javax.swing.filechooser.FileView;
41 import net.
sf.japi.swing.action.ActionBuilder;
42 import net.
sf.japi.swing.action.ActionBuilderFactory;
43 import net.
sf.japi.swing.action.ActionMethod;
44 import net.
sf.japi.swing.action.ToggleAction;
45 import org.jetbrains.annotations.NotNull;
46 import org.jetbrains.annotations.Nullable;
64 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
88 private final JLabel
preview =
new JLabel();
130 final PropertyChangeListener propertyChangeListener =
new PropertyChangeListener() {
133 public void propertyChange(@NotNull
final PropertyChangeEvent evt) {
134 final String prop = evt.getPropertyName();
135 if (JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(prop)) {
137 }
else if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(prop)) {
138 final File selectedFile = (File) evt.getNewValue();
139 if (selectedFile ==
null) {
143 if (previewImage ==
null) {
149 }
else if (JFileChooser.SELECTED_FILES_CHANGED_PROPERTY.equals(prop)) {
155 fileChooser.addPropertyChangeListener(propertyChangeListener);
164 setPreferredSize(
new Dimension(240, 115));
165 setLayout(
new BorderLayout());
167 add(
new JButton(
genPreview), BorderLayout.SOUTH);
168 preview.setHorizontalAlignment(SwingConstants.CENTER);
169 add(
new JScrollPane(
preview), BorderLayout.CENTER);
177 preview.setIcon(image ==
null ?
null :
new ImageIcon(image));
222 if (files ==
null || files.length == 0) {
226 for (
final File file : files) {
265 final Image image =
fileChooser.getCurrentDirectory().equals(f.getParentFile()) ?
getMapIcon(f) :
null;
266 return image ==
null ? super.getIcon(f) :
new ImageIcon(image);