Gridarta Editor
ImageCreator2.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.gui.map.renderer;
21 
22 import java.awt.Component;
23 import java.io.File;
24 import java.io.IOException;
25 import javax.swing.JFileChooser;
26 import javax.swing.JOptionPane;
35 import net.sf.japi.swing.action.ActionBuilder;
36 import net.sf.japi.swing.action.ActionBuilderFactory;
37 import org.jetbrains.annotations.NotNull;
38 
43 public class ImageCreator2<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
44 
48  @NotNull
49  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
50 
54  @NotNull
56 
60  @NotNull
62 
69  this.volatileSettings = volatileSettings;
70  this.imageCreator = imageCreator;
71  }
72 
80  public void createImage(@NotNull final MapModel<G, A, R> mapModel, @NotNull final Component component) {
81  final MapFile mapFile = mapModel.getMapFile();
82  final File file = new File(volatileSettings.getImageDirectory(), mapFile == null ? "image" : mapFile.getFile().getName() + ".png");
83  final JFileChooser fileChooser = new JFileChooser(volatileSettings.getImageDirectory());
84  fileChooser.setDialogTitle("Save Image As");
85  fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
86  fileChooser.setMultiSelectionEnabled(false);
87  fileChooser.setSelectedFile(file);
88  // set a file filter for "*.png" files
89  fileChooser.setFileFilter(FileFilters.PNG_FILE_FILTER);
90 
92  final int returnVal = fileChooser.showSaveDialog(component);
93  if (returnVal == JFileChooser.APPROVE_OPTION) {
94  // got the file path, now create image
95  File imageFile = fileChooser.getSelectedFile();
96  if (!imageFile.getName().endsWith(".png")) {
97  imageFile = new File(imageFile.getParentFile(), imageFile.getName() + ".png");
98  }
99  volatileSettings.setImageDirectory(imageFile.getParentFile());
100  if (!imageFile.exists() || ACTION_BUILDER.showConfirmDialog(component, JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, "overwriteOtherFile", imageFile) == JOptionPane.YES_OPTION) {
101  try {
102  imageCreator.createImage(mapModel, imageFile);
103  } catch (final IOException ex) {
104  ACTION_BUILDER.showMessageDialog(component, "createImageIOException", imageFile, ex.getMessage());
105  }
106  }
107  }
108  }
109 
110 }
net.sf.gridarta.model.mapmodel.MapModel
A MapModel reflects the data of a map.
Definition: MapModel.java:75
net.sf.gridarta.gui.map.renderer.ImageCreator.createImage
void createImage(@NotNull final MapModel< G, A, R > mapModel, @NotNull final File file)
Definition: ImageCreator.java:77
net.sf.gridarta
Base package of all Gridarta classes.
net.sf
net.sf.gridarta.model.mapmodel
Definition: AboveFloorInsertionMode.java:20
net.sf.gridarta.gui.map.renderer.ImageCreator2.volatileSettings
final VolatileSettings volatileSettings
The VolatileSettings to use.
Definition: ImageCreator2.java:55
net.sf.gridarta.gui.map.renderer.ImageCreator2
Creates images from map instances.
Definition: ImageCreator2.java:43
net.sf.gridarta.utils.FileChooserUtils.sanitizeCurrentDirectory
static void sanitizeCurrentDirectory(@NotNull final JFileChooser fileChooser)
Makes sure the current directory of a JFileChooser is valid.
Definition: FileChooserUtils.java:56
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net.sf.gridarta.gui.map.renderer.ImageCreator2.createImage
void createImage(@NotNull final MapModel< G, A, R > mapModel, @NotNull final Component component)
Creates an image of a map and save it as a file.
Definition: ImageCreator2.java:80
net
net.sf.gridarta.gui.map.renderer.ImageCreator2.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
The ActionBuilder.
Definition: ImageCreator2.java:49
net.sf.gridarta.gui.map.renderer.ImageCreator2.imageCreator
final ImageCreator< G, A, R > imageCreator
The ImageCreator to forward to.
Definition: ImageCreator2.java:61
net.sf.gridarta.model.maparchobject.MapArchObject
Interface for MapArchObjects.
Definition: MapArchObject.java:40
net.sf.gridarta.model.mapmodel.MapFile.getFile
File getFile()
Returns a File for this map file.
Definition: MapFile.java:102
net.sf.gridarta.model.mapmodel.MapFile
The location of a map file with a map directory.
Definition: MapFile.java:31
net.sf.gridarta.model.settings.VolatileSettings.getImageDirectory
File getImageDirectory()
Returns the directory to save images to.
net.sf.gridarta.gui.map.renderer.ImageCreator< G, A, R >
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.model.settings.VolatileSettings.setImageDirectory
void setImageDirectory(@NotNull File imageDirectory)
Sets the directory to save created image to.
net.sf.gridarta.utils.FileFilters
Utility class defining FileFilters.
Definition: FileFilters.java:32
net.sf.gridarta.model.settings.VolatileSettings
Settings that are not retained across editor restarts.
Definition: VolatileSettings.java:29
net.sf.gridarta.utils.FileChooserUtils
Utility class for JFileChooser related functions.
Definition: FileChooserUtils.java:31
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.map.renderer.ImageCreator2.ImageCreator2
ImageCreator2(@NotNull final VolatileSettings volatileSettings, @NotNull final ImageCreator< G, A, R > imageCreator)
Creates a new instance.
Definition: ImageCreator2.java:68
net.sf.gridarta.utils.FileFilters.PNG_FILE_FILTER
static final FileFilter PNG_FILE_FILTER
Swing FileFilter for png graphics.
Definition: FileFilters.java:68
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.model.settings
Definition: AbstractDefaultProjectSettings.java:20