20 package net.sf.gridarta.gui.misc;
22 import java.awt.Component;
24 import java.io.IOException;
25 import javax.swing.JFileChooser;
26 import javax.swing.JOptionPane;
27 import javax.swing.filechooser.FileFilter;
46 import net.
sf.japi.swing.action.ActionBuilder;
47 import net.
sf.japi.swing.action.ActionBuilderFactory;
48 import org.jetbrains.annotations.NotNull;
49 import org.jetbrains.annotations.Nullable;
61 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
157 public DefaultFileControl(@NotNull
final ProjectSettings projectSettings, @NotNull
final VolatileSettings volatileSettings, @NotNull
final MapImageCache<G, A, R> mapImageCache, @NotNull
final MapManager<G, A, R> mapManager, @NotNull
final MapViewsManager<G, A, R> mapViewsManager, @NotNull
final Component
parent, @NotNull
final FileFilter
mapFileFilter, @NotNull
final FileFilter
scriptFileFilter, @NotNull
final NewMapDialogFactory<G, A, R> newMapDialogFactory, @NotNull
final String
scriptExtension, @NotNull
final ScriptEditControl scriptEditControl, @NotNull
final PathManager pathManager) {
178 final JFileChooser tmpFileChooser =
new JFileChooser();
180 tmpFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
181 tmpFileChooser.setMultiSelectionEnabled(
true);
188 return tmpFileChooser;
199 final int returnVal = tmpFileChooser.showOpenDialog(
parent);
200 if (returnVal != JFileChooser.APPROVE_OPTION) {
204 final File[]
files = tmpFileChooser.getSelectedFiles();
205 for (
final File file :
files) {
206 final boolean isScriptFile = file.getName().toLowerCase().endsWith(
scriptExtension);
213 }
catch (
final IOException ex) {
217 }
else if (!file.exists()) {
229 final MapFile mapFile = mapControl.getMapModel().getMapFile();
230 if (mapFile !=
null) {
233 }
catch (
final IOException ex) {
240 return saveAs(mapControl);
246 if (mapControl.getMapModel().isModified() && !
save(mapControl)) {
256 if (mapControl ==
null) {
279 }
catch (
final IOException ex) {
294 final JFileChooser saveFileChooser =
new JFileChooser();
295 saveFileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
296 saveFileChooser.setDialogTitle(
"Save Map Or Script As");
297 saveFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
298 saveFileChooser.setMultiSelectionEnabled(
false);
299 saveFileChooser.resetChoosableFileFilters();
303 final MapFile mapFile = mapControl.getMapModel().getMapFile();
304 final File defaultDir = mapFile ==
null ? null : mapFile.
getFile().getParentFile();
305 if (defaultDir !=
null && defaultDir.exists()) {
307 saveFileChooser.setSelectedFile(mapFile.
getFile());
314 final int returnVal = saveFileChooser.showSaveDialog(
parent);
315 if (returnVal != JFileChooser.APPROVE_OPTION) {
320 final File file = saveFileChooser.getSelectedFile();
321 if (file.exists() &&
ACTION_BUILDER.showConfirmDialog(
parent, JOptionPane.WARNING_MESSAGE, JOptionPane.OK_CANCEL_OPTION,
"overwriteOtherFile", file.getName()) != JOptionPane.OK_OPTION) {
330 if (mapControl.getMapModel().isModified()) {
331 final int result =
ACTION_BUILDER.showConfirmDialog(
parent, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE,
"confirmSaveChanges", mapControl.getMapModel().getMapArchObject().getMapName());
332 if (result == JOptionPane.YES_OPTION) {
333 if (!
save(mapControl)) {
336 }
else if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) {
346 final MapFile mapFile = mapControl.getMapModel().getMapFile();
347 assert mapFile !=
null;
352 public void reportSaveError(@NotNull
final File mapFile, @NotNull
final String message) {
357 public void reportLoadError(@Nullable
final File file, @NotNull
final String message) {
358 ACTION_BUILDER.showMessageDialog(
parent,
"openFileLoadMap", file ==
null ?
"<unknown>" : file, message);
362 public void reportOutOfMapBoundsDeleted(@NotNull
final File file,
final int outOfMapBoundsDeleted, @NotNull
final StringBuilder outOfMapBoundsObjects) {
363 ACTION_BUILDER.showMessageDialog(
parent,
"openFileOutOfMapBoundsDeleted", file, outOfMapBoundsDeleted, outOfMapBoundsObjects);