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();
94 private final ToggleAction
autoGeneratePreview = (ToggleAction) ACTION_BUILDER.createToggle(
false,
"autoGeneratePreviews",
this);
100 private final Action
genPreview = ACTION_BUILDER.createAction(
false,
"genPreview",
this);
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) {
141 if (previewImage != null) {
149 }
else if (JFileChooser.SELECTED_FILES_CHANGED_PROPERTY.equals(prop)) {
150 selectedFiles = (File[]) evt.getNewValue();
155 fileChooser.addPropertyChangeListener(propertyChangeListener);
164 setPreferredSize(
new Dimension(240, 115));
165 setLayout(
new BorderLayout());
166 add(autoGeneratePreview.createCheckBox(), BorderLayout.NORTH);
167 add(
new JButton(genPreview), BorderLayout.SOUTH);
168 preview.setHorizontalAlignment(SwingConstants.CENTER);
169 add(
new JScrollPane(preview), BorderLayout.CENTER);
176 @SuppressWarnings(
"NullableProblems")
178 preview.setIcon(image == null ? null :
new ImageIcon(image));
179 preview.setText(null);
187 preview.setIcon(null);
188 preview.setText(ACTION_BUILDER.getString(text));
199 autoGeneratePreview.setSelected(autoGeneratePreviews);
200 PREFERENCES.putBoolean(PREFERENCES_AUTO_GENERATE_PREVIEW, autoGeneratePreviews);
201 if (autoGeneratePreviews) {
223 if (files == null || files.length == 0) {
227 for (
final File file : files) {
228 mapImageCache.
flush(file);
245 return autoGeneratePreview.isSelected() ? mapImageCache.
getOrCreateIcon(mapFile) : mapImageCache.
getIcon(mapFile);
266 @Nullable
final Image image;
267 if (
fileChooser.getCurrentDirectory().equals(f.getParentFile())) {
272 return image != null ?
new ImageIcon(image) : super.getIcon(f);
boolean isAutoGeneratePreviews()
Get whether to automatically generate previews.
Image getOrCreateIcon(@NotNull final File mapFile)
Returns an icon Image for a given map file.
static final Preferences PREFERENCES
Preferences.
final JFileChooser fileChooser
The file chooser instance.
FileView for giving icons to map files.
MapPreviewAccessory(@NotNull final MapImageCache<?, ?, ?> mapImageCache, @NotNull final JFileChooser fileChooser)
Creates an MapPreviewAccessory.
Icon getIcon(@NotNull final File f)
Graphical User Interface of Gridarta.
void genPreview()
Generate a preview.
final ToggleAction autoGeneratePreview
ToggleAction for auto-generate preview.
Image getMapPreview(@NotNull final File mapFile)
Get a preview.
Image getMapIcon(@NotNull final File mapFile)
Get an icon.
Image getPreview(@NotNull final File mapFile)
Returns a preview Image for a given map file.
Base package of all Gridarta classes.
static final long serialVersionUID
The serial version UID.
void setPreview(@Nullable final Image image)
Updates the text and icon of preview.
void setAutoGeneratePreviews(final boolean autoGeneratePreviews)
Switch automatic preview generation.
void flush(@NotNull final File mapFile)
Removes the cached images for a map file.
Interface used as preferences location.
boolean autoGeneratePreviews
Whether previews should be auto-generated.
Image getOrCreatePreview(@NotNull final File mapFile)
Returns a preview Image for a given map file.
Caches icon and preview images for map files.
final MapImageCache<?, ?, ?> mapImageCache
The cache for map images.
void setPreview(@NotNull final String text)
Updates the text and icon of preview.
void buildUI()
Build the user interface.
Image getIcon(@NotNull final File mapFile)
Returns the icon Image for a given map file.
final JLabel preview
The preview label.
static final ActionBuilder ACTION_BUILDER
Action Builder.
Abstract base class for MapPreviewAccessories which are used for previewing maps in JFileChoosers...
File [] selectedFiles
The currently selected files, or.
static final String PREFERENCES_AUTO_GENERATE_PREVIEW
Preferences key for automatic preview generation.