From: <aki...@us...> - 2014-03-09 21:22:17
|
Revision: 9692 http://sourceforge.net/p/gridarta/code/9692 Author: akirschbaum Date: 2014-03-09 21:22:08 +0000 (Sun, 09 Mar 2014) Log Message: ----------- Remove unused code. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java 2014-03-09 21:01:46 UTC (rev 9691) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java 2014-03-09 21:22:08 UTC (rev 9692) @@ -31,7 +31,6 @@ import net.sf.gridarta.gui.mapimagecache.MapImageCache; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; -import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.model.mapcontrol.MapControl; import net.sf.gridarta.model.mapmanager.FileControl; @@ -126,12 +125,6 @@ private final ScriptEditControl scriptEditControl; /** - * The {@link PathManager} to use. - */ - @NotNull - private final PathManager pathManager; - - /** * The {@link JFileChooser} for opening a file. Set to {@code null} if not * yet created. */ @@ -151,9 +144,8 @@ * @param newMapDialogFactory the new map dialog factory * @param scriptExtension the file extension for script files * @param scriptEditControl the script edit control to forward to - * @param pathManager the path manager to use */ - 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) { + 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) { this.projectSettings = projectSettings; this.volatileSettings = volatileSettings; this.mapImageCache = mapImageCache; @@ -165,7 +157,6 @@ this.newMapDialogFactory = newMapDialogFactory; this.scriptExtension = scriptExtension; this.scriptEditControl = scriptEditControl; - this.pathManager = pathManager; } /** Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-03-09 21:01:46 UTC (rev 9691) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-03-09 21:22:08 UTC (rev 9692) @@ -378,7 +378,7 @@ final ArchetypeChooserControl<G, A, R> archetypeChooserControl = new ArchetypeChooserControl<G, A, R>(projectModel.getArchetypeChooserModel(), archetypeChooserView); mapViewsManager = new MapViewsManager<G, A, R>(mapViewSettings, mapViewFactory, projectModel.getMapManager(), projectModel.getPickmapManager(), projectModel.getPathManager()); newMapDialogFactory = editorFactory.newNewMapDialogFactory(mapViewsManager, projectModel.getMapArchObjectFactory(), pickmapChooserView, parent); - fileControl = new DefaultFileControl<G, A, R>(projectModel.getProjectSettings(), volatileSettings, mapImageCache, projectModel.getMapManager(), mapViewsManager, parent, GuiFileFilters.MAP_FILE_FILTER, editorFactory.getScriptFileFilter(), newMapDialogFactory, scriptExtension, scriptEditControl, projectModel.getPathManager()); + fileControl = new DefaultFileControl<G, A, R>(projectModel.getProjectSettings(), volatileSettings, mapImageCache, projectModel.getMapManager(), mapViewsManager, parent, GuiFileFilters.MAP_FILE_FILTER, editorFactory.getScriptFileFilter(), newMapDialogFactory, scriptExtension, scriptEditControl); mapViewsManager.setFileControl(fileControl); final PickmapChooserControl<G, A, R> pickmapChooserControl = new PickmapChooserControl<G, A, R>(pickmapChooserModel, pickmapSettings, newMapDialogFactory, mapFolderTree, projectModel.getMapManager(), parent, mapViewsManager, fileControl, pickmapChooserView); final DefaultObjectChooser<G, A, R> objectChooser = new DefaultObjectChooser<G, A, R>(archetypeChooserControl, pickmapChooserControl, projectModel.getArchetypeChooserModel(), pickmapChooserModel, projectModel.getArchetypeTypeSet()); Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-03-09 21:01:46 UTC (rev 9691) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-03-09 21:22:08 UTC (rev 9692) @@ -131,12 +131,6 @@ private final SyntaxDocument document; @NotNull - private final DocumentListener documentHandler; - - @NotNull - private final Segment lineSegment = new Segment(); - - @NotNull private final TextAreaSelection selection; @NotNull @@ -164,7 +158,6 @@ config = new TextAreaConfig(defaults.getEditable(), defaults.getElectricScroll()); painter = new TextAreaPainter(this, selection, caret, defaults, brackets, config, paintInvalid); painter.recalculateVisibleLines(); - documentHandler = new DocumentHandler(); // Initialize the GUI setLayout(new ScrollLayout(this)); @@ -185,7 +178,7 @@ // Load the defaults inputHandler = defaults.getInputHandler(); this.document = document; - document.addDocumentListener(documentHandler); + document.addDocumentListener(new DocumentHandler()); select(0, 0); updateScrollBars(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-03-10 20:51:13
|
Revision: 9694 http://sourceforge.net/p/gridarta/code/9694 Author: akirschbaum Date: 2014-03-10 20:51:07 +0000 (Mon, 10 Mar 2014) Log Message: ----------- Remember new map path when using "save as" to save a map. Also clear the map's modified flag. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/DefaultMapControl.java trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/MapControl.java trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/DefaultMapControlTest.java trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/TestMapControlCreator.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/atrinik/ChangeLog 2014-03-10 20:51:07 UTC (rev 9694) @@ -1,3 +1,8 @@ +2014-03-10 Andreas Kirschbaum + + * Remember new map path when using "save as" to save a map. Also + clear the map's modified flag. + 2014-03-09 Andreas Kirschbaum * Properly update pickmap view when using a relative maps Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/crossfire/ChangeLog 2014-03-10 20:51:07 UTC (rev 9694) @@ -1,3 +1,8 @@ +2014-03-10 Andreas Kirschbaum + + * Remember new map path when using "save as" to save a map. Also + clear the map's modified flag. + 2014-03-09 Andreas Kirschbaum * Properly update pickmap view when using a relative maps Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/daimonin/ChangeLog 2014-03-10 20:51:07 UTC (rev 9694) @@ -1,3 +1,8 @@ +2014-03-10 Andreas Kirschbaum + + * Remember new map path when using "save as" to save a map. Also + clear the map's modified flag. + 2014-03-09 Andreas Kirschbaum * Properly update pickmap view when using a relative maps Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/DefaultFileControl.java 2014-03-10 20:51:07 UTC (rev 9694) @@ -31,6 +31,7 @@ import net.sf.gridarta.gui.mapimagecache.MapImageCache; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.model.mapcontrol.MapControl; import net.sf.gridarta.model.mapmanager.FileControl; @@ -125,6 +126,12 @@ private final ScriptEditControl scriptEditControl; /** + * The {@link PathManager} for creating {@link MapFile} instances. + */ + @NotNull + private final PathManager pathManager; + + /** * The {@link JFileChooser} for opening a file. Set to {@code null} if not * yet created. */ @@ -144,8 +151,9 @@ * @param newMapDialogFactory the new map dialog factory * @param scriptExtension the file extension for script files * @param scriptEditControl the script edit control to forward to + * @param pathManager the path manager for creating map file instances */ - 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) { + 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) { this.projectSettings = projectSettings; this.volatileSettings = volatileSettings; this.mapImageCache = mapImageCache; @@ -157,6 +165,7 @@ this.newMapDialogFactory = newMapDialogFactory; this.scriptExtension = scriptExtension; this.scriptEditControl = scriptEditControl; + this.pathManager = pathManager; } /** @@ -284,7 +293,7 @@ } try { - mapControl.saveAs(file); + mapControl.saveAs(pathManager.getMapFile(file)); } catch (final IOException ex) { reportSaveError(file, ex.getMessage()); return false; Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-03-10 20:51:07 UTC (rev 9694) @@ -378,7 +378,7 @@ final ArchetypeChooserControl<G, A, R> archetypeChooserControl = new ArchetypeChooserControl<G, A, R>(projectModel.getArchetypeChooserModel(), archetypeChooserView); mapViewsManager = new MapViewsManager<G, A, R>(mapViewSettings, mapViewFactory, projectModel.getMapManager(), projectModel.getPickmapManager(), projectModel.getPathManager()); newMapDialogFactory = editorFactory.newNewMapDialogFactory(mapViewsManager, projectModel.getMapArchObjectFactory(), pickmapChooserView, parent); - fileControl = new DefaultFileControl<G, A, R>(projectModel.getProjectSettings(), volatileSettings, mapImageCache, projectModel.getMapManager(), mapViewsManager, parent, GuiFileFilters.MAP_FILE_FILTER, editorFactory.getScriptFileFilter(), newMapDialogFactory, scriptExtension, scriptEditControl); + fileControl = new DefaultFileControl<G, A, R>(projectModel.getProjectSettings(), volatileSettings, mapImageCache, projectModel.getMapManager(), mapViewsManager, parent, GuiFileFilters.MAP_FILE_FILTER, editorFactory.getScriptFileFilter(), newMapDialogFactory, scriptExtension, scriptEditControl, projectModel.getPathManager()); mapViewsManager.setFileControl(fileControl); final PickmapChooserControl<G, A, R> pickmapChooserControl = new PickmapChooserControl<G, A, R>(pickmapChooserModel, pickmapSettings, newMapDialogFactory, mapFolderTree, projectModel.getMapManager(), parent, mapViewsManager, fileControl, pickmapChooserView); final DefaultObjectChooser<G, A, R> objectChooser = new DefaultObjectChooser<G, A, R>(archetypeChooserControl, pickmapChooserControl, projectModel.getArchetypeChooserModel(), pickmapChooserModel, projectModel.getArchetypeTypeSet()); Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/DefaultMapControl.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/DefaultMapControl.java 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/DefaultMapControl.java 2014-03-10 20:51:07 UTC (rev 9694) @@ -204,14 +204,6 @@ /** * {@inheritDoc} */ - @Override - public void saveAs(@NotNull final File file) throws IOException { - encodeMapFile(file); - } - - /** - * {@inheritDoc} - */ @NotNull @Override public MapModel<G, A, R> getMapModel() { Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/MapControl.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/MapControl.java 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/mapcontrol/MapControl.java 2014-03-10 20:51:07 UTC (rev 9694) @@ -19,7 +19,6 @@ package net.sf.gridarta.model.mapcontrol; -import java.io.File; import java.io.IOException; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; @@ -76,14 +75,6 @@ void saveAs(@NotNull MapFile mapFile) throws IOException; /** - * Saves the file with the given file. This does not update the map file and - * does not reset the modified state. - * @param file the file to be saved to - * @throws IOException if saving fails - */ - void saveAs(@NotNull File file) throws IOException; - - /** * Increases the use counter. */ void acquire(); Modified: trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/DefaultMapControlTest.java =================================================================== --- trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/DefaultMapControlTest.java 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/DefaultMapControlTest.java 2014-03-10 20:51:07 UTC (rev 9694) @@ -19,12 +19,14 @@ package net.sf.gridarta.model.mapcontrol; +import java.awt.Point; import java.io.File; import java.io.IOException; import net.sf.gridarta.model.archetype.TestArchetype; import net.sf.gridarta.model.gameobject.TestGameObject; import net.sf.gridarta.model.maparchobject.TestMapArchObject; import net.sf.gridarta.model.mapmodel.MapFile; +import net.sf.gridarta.model.mapmodel.MapModel; import net.sf.gridarta.utils.Size2D; import org.junit.Assert; import org.junit.Test; @@ -55,4 +57,37 @@ } } + /** + * Checks that {@link MapControl#saveAs(MapFile)} does update the map's file + * and that it does reset the map's modified flag. + * @throws InterruptedException if the test fails + * @throws IOException if the test fails + */ + @Test + public void testSaveAs1() throws IOException, InterruptedException { + final TestMapControlCreator mapControlCreator = new TestMapControlCreator(); + final File mapsDirectory = mapControlCreator.createMapsDirectory(); + try { + final MapFile mapFile = mapControlCreator.getPathManager().getMapFile(new File(mapControlCreator.getProjectSettings().getMapsDirectory(), "path1/path2/mapfile")); + final MapControl<TestGameObject, TestMapArchObject, TestArchetype> mapControl = mapControlCreator.newMapControl(null, "name", new Size2D(1, 1)); + + final MapModel<TestGameObject, TestMapArchObject, TestArchetype> mapModel = mapControl.getMapModel(); + mapModel.beginTransaction("TEST"); + try { + mapModel.addGameObjectToMap(mapControlCreator.getMapModelCreator().newGameObject("arch", "name"), new Point(0, 0), mapControlCreator.getMapModelCreator().getTopmostInsertionMode()); + } finally { + mapModel.endTransaction(); + } + + Assert.assertTrue(mapControl.getMapModel().isModified()); + Assert.assertNull(mapControl.getMapModel().getMapFile()); + mapControl.saveAs(mapFile); // save map must not fail even if the destination dir does not yet exist + Assert.assertTrue(mapFile.getFile().exists()); + Assert.assertFalse(mapControl.getMapModel().isModified()); + Assert.assertEquals(mapFile, mapControl.getMapModel().getMapFile()); + } finally { + TestMapControlCreator.deleteTempDir(mapsDirectory); + } + } + } Modified: trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/TestMapControlCreator.java =================================================================== --- trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/TestMapControlCreator.java 2014-03-10 20:26:52 UTC (rev 9693) +++ trunk/src/model/src/test/java/net/sf/gridarta/model/mapcontrol/TestMapControlCreator.java 2014-03-10 20:51:07 UTC (rev 9694) @@ -336,11 +336,12 @@ throw new IllegalArgumentException(); } - final File mapFile = new File(projectSettings.getMapsDirectory(), tmp[0]); + final MapFile mapFile = new PathManager(projectSettings).getMapFile(new File(projectSettings.getMapsDirectory(), tmp[0])); final String mapName = tmp[1]; - if (!mapFile.getParentFile().exists() && !mapFile.getParentFile().mkdirs()) { - throw new IOException("cannot create directory: " + mapFile.getParentFile()); + final File file = mapFile.getFile(); + if (!file.getParentFile().exists() && !file.getParentFile().mkdirs()) { + throw new IOException("cannot create directory: " + file.getParentFile()); } final MapModel<TestGameObject, TestMapArchObject, TestArchetype> mapModel = mapModelCreator.newMapModel(5, 5); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-03-11 09:07:08
|
Revision: 9696 http://sourceforge.net/p/gridarta/code/9696 Author: akirschbaum Date: 2014-03-11 09:07:04 +0000 (Tue, 11 Mar 2014) Log Message: ----------- Remove static state from CFPythonPopup. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/CFPythonPopup.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/DefaultInputHandler.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaDefaults.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/FunctionMenu.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/InputActions.java Added Paths: ----------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/MenuEntries.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-03-11 08:21:53 UTC (rev 9695) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -201,6 +201,7 @@ import net.sf.gridarta.model.settings.VolatileSettings; import net.sf.gridarta.plugin.PluginParameters; import net.sf.gridarta.project.ProjectModel; +import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; import net.sf.gridarta.textedit.textarea.TextAreaDefaults; import net.sf.gridarta.updater.UpdaterManager; @@ -349,7 +350,8 @@ final FindDialogManager<G, A, R> findDialogManager = new FindDialogManager<G, A, R>(parent, mapViewManager); final Exiter exiter = new DefaultExiter(parent); scriptEditControl = new ScriptEditControl(editorFactory.getScriptFileFilter(), scriptExtension, parent, projectModel.getProjectSettings().getMapsDirectory(), PREFERENCES, exiter); - final TextAreaDefaults textAreaDefaults = new TextAreaDefaults(scriptEditControl); + final MenuEntries menuEntries = new MenuEntries(); + final TextAreaDefaults textAreaDefaults = new TextAreaDefaults(scriptEditControl, menuEntries); scriptEditControl.setTextAreaDefaults(textAreaDefaults); final GameObjectAttributesDialogFactory<G, A, R> gameObjectAttributesDialogFactory = new GameObjectAttributesDialogFactory<G, A, R>(projectModel.getArchetypeTypeSet(), parent, treasureListTree, projectModel.getFaceObjectProviders(), projectModel.getAnimationObjects(), projectModel.getProjectSettings(), editorFactory.getMapFileFilter(), editorFactory.getScriptFileFilter(), projectModel.getFaceObjects(), projectModel.getGameObjectSpells(), projectModel.getNumberSpells(), editorFactory.getUndefinedSpellIndex(), projectModel.getTreasureTree(), noFaceSquareIcon, unknownSquareIcon, textAreaDefaults, projectModel.getMapManager()); final ScriptedEventEditor<G, A, R> scriptedEventEditor = new ScriptedEventEditor<G, A, R>(projectModel.getProjectSettings(), scriptEditControl); Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/CFPythonPopup.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/CFPythonPopup.java 2014-03-11 08:21:53 UTC (rev 9695) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/CFPythonPopup.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -22,24 +22,13 @@ import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; import javax.swing.JComboBox; import javax.swing.JPopupMenu; import javax.swing.text.BadLocationException; import net.sf.gridarta.textedit.textarea.JEditTextArea; -import net.sf.gridarta.utils.IOUtils; import org.apache.log4j.Category; import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * This class implements a popup window which shows all python methods in the @@ -53,12 +42,6 @@ public class CFPythonPopup extends JComboBox { /** - * Python menu definitions. - */ - @NotNull - private static final String PYTHON_MENU_FILE = "/cfpython_menu.def"; - - /** * The Logger for printing log messages. */ @NotNull @@ -70,13 +53,6 @@ private static final long serialVersionUID = 1L; /** - * List of menu entries (all CFPython commands). - * @serial - */ - @Nullable - private static String[] menuEntries; - - /** * The popup menu. * @serial */ @@ -87,7 +63,7 @@ * Whether this menu has been fully initialized. * @serial */ - private boolean isReady; + private final boolean isReady; /** * The caret position in the document where this popup was opened. @@ -98,92 +74,26 @@ /** * Creates a new instance. * @param scriptEditControl the script edit control to forward to + * @param menuEntries the menu entries to include */ - public CFPythonPopup(@NotNull final ScriptEditControl scriptEditControl) { + public CFPythonPopup(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries) { setBackground(Color.white); // white background - // make sure the command list is initialized - if (menuEntries == null) { - loadCommandList(); - } - menu = new CFPythonPopupMenu(this); - if (menuEntries != null) { - for (final String menuEntry : menuEntries) { - addItem(" " + menuEntry); - } + for (final String menuEntry : menuEntries) { + addItem(" " + menuEntry); } // listener for selection events addActionListener(new MenuActionListener(this, scriptEditControl)); - if (menuEntries != null && menuEntries.length > 0) { - isReady = true; // this menu is now ready for use - } + isReady = !menuEntries.isEmpty(); setRequestFocusEnabled(true); } /** - * Load the list of CFPython commands from the data file. - */ - private static void loadCommandList() { - try { - final InputStream inputStream = CFPythonPopup.class.getResourceAsStream(PYTHON_MENU_FILE); - if (inputStream == null) { - LOG.error("Resource '" + PYTHON_MENU_FILE + "' not found"); - return; - } - try { - final List<String> cmdList = new ArrayList<String>(); // temporary list to store commands - final Reader reader = new InputStreamReader(inputStream, IOUtils.MAP_ENCODING); - try { - final BufferedReader bufferedReader = new BufferedReader(reader); - try { - // read file into the cmdList vector: - while (true) { - final String inputLine = bufferedReader.readLine(); - if (inputLine == null) { - break; - } - final String line = inputLine.trim(); - if (!line.isEmpty() && !line.startsWith("#")) { - // ATM, the descriptive info about method headers is cut out - // (TODO: parse and show the full info in a status bar) - final int k = line.indexOf('('); - if (k > 0) { - cmdList.add(line.substring(0, k) + "()"); - } else { - LOG.error("Parse error in " + PYTHON_MENU_FILE + ":"); - LOG.error(" \"" + line + "\" missing '()'"); - cmdList.add(line + "()"); // that line is probably garbage, but will work - } - } - } - Collections.sort(cmdList, String.CASE_INSENSITIVE_ORDER); - - // now create the 'menuEntries' array - if (!cmdList.isEmpty()) { - menuEntries = cmdList.toArray(new String[cmdList.size()]); - } - } finally { - bufferedReader.close(); - } - } finally { - reader.close(); - } - } finally { - inputStream.close(); - } - } catch (final UnsupportedEncodingException ex) { - LOG.error("Cannot decode file '" + PYTHON_MENU_FILE + "': " + ex.getMessage()); - } catch (final IOException ex) { - LOG.error("Cannot read file '" + PYTHON_MENU_FILE + "': " + ex.getMessage()); - } - } - - /** * Returns whether this popup menu has been fully initialized and is ready * for use. * @return {@code true} if initialized, otherwise {@code false} Added: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/MenuEntries.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/MenuEntries.java (rev 0) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/MenuEntries.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -0,0 +1,137 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.textedit.scripteditor; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import net.sf.gridarta.utils.IOUtils; +import org.apache.log4j.Category; +import org.apache.log4j.Logger; +import org.jetbrains.annotations.NotNull; + +/** + * List of menu entries (all CFPython commands). + * @author Andreas Kirschbaum + */ +public class MenuEntries implements Iterable<String>, Serializable { + + /** + * The serial version UID. + */ + private static final long serialVersionUID = 1L; + + /** + * Python menu definitions. + */ + @NotNull + private static final String PYTHON_MENU_FILE = "/cfpython_menu.def"; + + /** + * The Logger for printing log messages. + */ + @NotNull + private static final Category LOG = Logger.getLogger(MenuEntries.class); + + /** + * List of menu entries (all CFPython commands). + * @serial + */ + @NotNull + private final List<String> menuEntries = new ArrayList<String>(); + + /** + * Creates a new instance. + */ + public MenuEntries() { + try { + final InputStream inputStream = CFPythonPopup.class.getResourceAsStream(PYTHON_MENU_FILE); + if (inputStream == null) { + LOG.error("Resource '" + PYTHON_MENU_FILE + "' not found"); + return; + } + try { + final Reader reader = new InputStreamReader(inputStream, IOUtils.MAP_ENCODING); + try { + final BufferedReader bufferedReader = new BufferedReader(reader); + try { + // read file into the cmdList vector: + while (true) { + final String inputLine = bufferedReader.readLine(); + if (inputLine == null) { + break; + } + final String line = inputLine.trim(); + if (!line.isEmpty() && !line.startsWith("#")) { + // ATM, the descriptive info about method headers is cut out + // (TODO: parse and show the full info in a status bar) + final int k = line.indexOf('('); + if (k > 0) { + menuEntries.add(line.substring(0, k) + "()"); + } else { + LOG.error("Parse error in " + PYTHON_MENU_FILE + ":"); + LOG.error(" \"" + line + "\" missing '()'"); + menuEntries.add(line + "()"); // that line is probably garbage, but will work + } + } + } + Collections.sort(menuEntries, String.CASE_INSENSITIVE_ORDER); + } finally { + bufferedReader.close(); + } + } finally { + reader.close(); + } + } finally { + inputStream.close(); + } + } catch (final UnsupportedEncodingException ex) { + LOG.error("Cannot decode file '" + PYTHON_MENU_FILE + "': " + ex.getMessage()); + } catch (final IOException ex) { + LOG.error("Cannot read file '" + PYTHON_MENU_FILE + "': " + ex.getMessage()); + } + } + + /** + * {@inheritDoc} + */ + @NotNull + @Override + public Iterator<String> iterator() { + return Collections.unmodifiableCollection(menuEntries).iterator(); + } + + /** + * Returns whether no menu entries have been loaded. + * @return whether no menu entries have been loaded + */ + public boolean isEmpty() { + return menuEntries.isEmpty(); + } + +} Property changes on: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/MenuEntries.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/DefaultInputHandler.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/DefaultInputHandler.java 2014-03-11 08:21:53 UTC (rev 9695) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/DefaultInputHandler.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.Map; import javax.swing.KeyStroke; +import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; import net.sf.gridarta.textedit.textarea.actions.InputActions; import org.apache.log4j.Category; @@ -45,9 +46,11 @@ /** * Creates a new input handler with no key bindings defined. * @param scriptEditControl the script edit control to affect + * @param menuEntries the menu entries to include in the function list + * popup */ - public DefaultInputHandler(@NotNull final ScriptEditControl scriptEditControl) { - inputActions = new InputActions(scriptEditControl); + public DefaultInputHandler(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries) { + inputActions = new InputActions(scriptEditControl, menuEntries); bindings = new HashMap<KeyStroke, ActionListener>(); } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaDefaults.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaDefaults.java 2014-03-11 08:21:53 UTC (rev 9695) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaDefaults.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -12,6 +12,7 @@ import java.awt.Color; import javax.swing.JPopupMenu; +import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -79,9 +80,11 @@ /** * Creates a new instance. * @param scriptEditControl the script edit control to affect + * @param menuEntries the menu entries to include in the function menu + * popup */ - public TextAreaDefaults(@NotNull final ScriptEditControl scriptEditControl) { - inputHandler = new DefaultInputHandler(scriptEditControl); + public TextAreaDefaults(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries) { + inputHandler = new DefaultInputHandler(scriptEditControl, menuEntries); inputHandler.addDefaultKeyBindings(); } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/FunctionMenu.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/FunctionMenu.java 2014-03-11 08:21:53 UTC (rev 9695) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/FunctionMenu.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -14,6 +14,7 @@ import java.awt.event.ActionListener; import javax.swing.text.BadLocationException; import net.sf.gridarta.textedit.scripteditor.CFPythonPopup; +import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; import net.sf.gridarta.textedit.textarea.InputHandler; import net.sf.gridarta.textedit.textarea.JEditTextArea; @@ -33,9 +34,10 @@ /** * Creates a new instance. * @param scriptEditControl the script edit control to forward to + * @param menuEntries the menu entries to include */ - public FunctionMenu(@NotNull final ScriptEditControl scriptEditControl) { - cfPythonPopup = new CFPythonPopup(scriptEditControl); + public FunctionMenu(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries) { + cfPythonPopup = new CFPythonPopup(scriptEditControl, menuEntries); } /** Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/InputActions.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/InputActions.java 2014-03-11 08:21:53 UTC (rev 9695) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/actions/InputActions.java 2014-03-11 09:07:04 UTC (rev 9696) @@ -14,6 +14,7 @@ import java.util.HashMap; import java.util.Map; import net.sf.gridarta.textedit.scripteditor.Actions; +import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; import org.jetbrains.annotations.NotNull; @@ -105,9 +106,9 @@ private final Map<String, ActionListener> actions = new HashMap<String, ActionListener>(); - public InputActions(@NotNull final ScriptEditControl scriptEditControl) { + public InputActions(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries) { final ActionListener save = new Save(scriptEditControl); - functionMenu = new FunctionMenu(scriptEditControl); + functionMenu = new FunctionMenu(scriptEditControl, menuEntries); actions.put("backspace", backspace); actions.put("backspace-word", backspaceWord); actions.put("delete", delete); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-03-15 12:59:28
|
Revision: 9697 http://sourceforge.net/p/gridarta/code/9697 Author: akirschbaum Date: 2014-03-15 12:59:20 +0000 (Sat, 15 Mar 2014) Log Message: ----------- Add debug output. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuEntry.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuLoader.java trunk/src/preferences/src/main/java/net/sf/gridarta/preferences/FilePreferences.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuEntry.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuEntry.java 2014-03-11 09:07:04 UTC (rev 9696) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuEntry.java 2014-03-15 12:59:20 UTC (rev 9697) @@ -77,4 +77,13 @@ */ public abstract void visit(@NotNull final MapMenuEntryVisitor visitor); + /** + * {@inheritDoc} + */ + @NotNull + @Override + public String toString() { + return title; + } + } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuLoader.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuLoader.java 2014-03-11 09:07:04 UTC (rev 9696) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapmenu/MapMenuLoader.java 2014-03-15 12:59:20 UTC (rev 9697) @@ -24,6 +24,8 @@ import java.util.prefs.Preferences; import net.sf.gridarta.MainControl; import net.sf.gridarta.model.io.PathManager; +import org.apache.log4j.Category; +import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; /** @@ -51,6 +53,12 @@ } /** + * The Logger for printing log messages. + */ + @NotNull + private static final Category LOG = Logger.getLogger(MapMenuLoader.class); + + /** * The {@link Preferences}. */ @NotNull @@ -74,6 +82,10 @@ * @param pathManager the global path manager instance */ public MapMenuLoader(@NotNull final String key, @NotNull final PathManager pathManager) { + if (LOG.isDebugEnabled()) { + //noinspection ThisEscapedInObjectConstruction + LOG.debug(System.identityHashCode(this) + " new " + key); + } this.key = key; this.pathManager = pathManager; } @@ -83,7 +95,11 @@ * @return the number of entries */ public int loadNumEntries() { - return PREFERENCES.getInt(key + "Num", 0); + final int result = PREFERENCES.getInt(key + "Num", 0); + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadNumEntries=" + result); + } + return result; } /** @@ -91,6 +107,9 @@ * @param num the number of entries */ public void saveNumEntries(final int num) { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " saveNumEntries(" + num + ")"); + } PREFERENCES.putInt(key + "Num", num); } @@ -111,6 +130,9 @@ try { type = Type.valueOf(typeString); } catch (final IllegalArgumentException ex) { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadEntry(" + index + ")=invalid type: " + typeString + " [" + ex.getMessage() + "]"); + } throw new IOException("invalid type: " + typeString, ex); } if (type == Type.DIR) { @@ -118,17 +140,34 @@ try { mapMenuEntry = new MapMenuEntryDir(title); } catch (final IllegalArgumentException ex) { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadEntry(" + index + ")=invalid directory name: " + title + " [" + ex.getMessage() + "]"); + } throw new IOException("invalid directory name: " + title, ex); } - return new Result(directory, mapMenuEntry); + final Result result = new Result(directory, mapMenuEntry); + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadEntry(" + index + ")=DIR[" + result + "]"); + } + return result; } else if (type == Type.MAP) { if (filename.isEmpty()) { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadEntry(" + index + ")=empty filename: " + title); + } throw new IOException("bookmark without file name: " + title); } final MapMenuEntry mapMenuEntry = new MapMenuEntryMap(pathManager.getMapFile(new File(filename)), title); - return new Result(directory, mapMenuEntry); + final Result result = new Result(directory, mapMenuEntry); + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadEntry(" + index + ")=MAP[" + result + "]"); + } + return result; } else { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " loadEntry(" + index + ")=invalid type: " + type); + } throw new IOException("invalid type: " + type); } } @@ -142,6 +181,9 @@ * @param type the entry's type */ public void saveEntry(final int index, @NotNull final String title, @NotNull final String filename, @NotNull final String directory, @NotNull final Type type) { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " saveEntry(title=" + title + ", filename=" + filename + ", directory=" + directory + ", type=" + type + ")"); + } final String suffix = "[" + index + "]"; PREFERENCES.put(key + "Title" + suffix, title); PREFERENCES.put(key + "Filename" + suffix, filename); @@ -162,6 +204,9 @@ * @param index the preference index */ public void removeEntry(final int index) { + if (LOG.isDebugEnabled()) { + LOG.debug(System.identityHashCode(this) + " removeEntry(" + index + ")"); + } final String suffix = "[" + index + "]"; PREFERENCES.remove(key + "Title" + suffix); PREFERENCES.remove(key + "Filename" + suffix); @@ -216,6 +261,15 @@ return mapMenuEntry; } + /** + * {@inheritDoc} + */ + @NotNull + @Override + public String toString() { + return "directory=" + directory + ",mapMenuEntry=" + mapMenuEntry; + } + } } Modified: trunk/src/preferences/src/main/java/net/sf/gridarta/preferences/FilePreferences.java =================================================================== --- trunk/src/preferences/src/main/java/net/sf/gridarta/preferences/FilePreferences.java 2014-03-11 09:07:04 UTC (rev 9696) +++ trunk/src/preferences/src/main/java/net/sf/gridarta/preferences/FilePreferences.java 2014-03-15 12:59:20 UTC (rev 9697) @@ -19,6 +19,7 @@ package net.sf.gridarta.preferences; +import java.util.Arrays; import java.util.prefs.AbstractPreferences; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; @@ -92,7 +93,11 @@ */ @Override protected String[] childrenNamesSpi() throws BackingStoreException { - return storage.childrenNames(fullName); + final String[] result = storage.childrenNames(fullName); + if (LOG.isDebugEnabled()) { + LOG.debug("childrenNamesSpi(" + fullName + ")=" + Arrays.toString(result)); + } + return result; } /** @@ -137,6 +142,10 @@ synchronized (lock) { if (isRemoved()) { + if (LOG.isDebugEnabled()) { + LOG.debug("get(" + fullName + ", " + key + ") called for removed node"); + } + throw new IllegalStateException("removed node"); } @@ -144,6 +153,10 @@ try { final String value = getSpi(key); if (value != null) { + if (LOG.isDebugEnabled()) { + LOG.debug("get(" + fullName + ", " + key + ", " + def + ")=" + value); + } + return value; } } catch (final Exception ignored) { @@ -153,6 +166,11 @@ if (def != null) { putSpi(key, def); } + + if (LOG.isDebugEnabled()) { + LOG.debug("get(" + fullName + ", " + key + ", " + def + ")=" + def); + } + return def; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-03-15 18:13:40
|
Revision: 9700 http://sourceforge.net/p/gridarta/code/9700 Author: akirschbaum Date: 2014-03-15 18:13:36 +0000 (Sat, 15 Mar 2014) Log Message: ----------- Update Map|Open in Client function according to ADS-2. [Atrinik] Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/actions/AtrinikServerActions.java trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AbstractServerActions.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-03-15 13:36:40 UTC (rev 9699) +++ trunk/src/atrinik/ChangeLog 2014-03-15 18:13:36 UTC (rev 9700) @@ -1,3 +1,7 @@ +2014-03-15 Alex Tokar + + * Update Map|Open in Client function according to ADS-2. + 2014-03-11 Andreas Kirschbaum * Properly load cfpython_menu.def. Modified: trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/actions/AtrinikServerActions.java =================================================================== --- trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/actions/AtrinikServerActions.java 2014-03-15 13:36:40 UTC (rev 9699) +++ trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/actions/AtrinikServerActions.java 2014-03-15 18:13:36 UTC (rev 9700) @@ -55,11 +55,26 @@ private static final String CHARSET_NAME = "US-ASCII"; /** - * Command sub-type: teleport character to map. + * Control command type: control a map. */ - private static final int CMD_CONTROL_UPDATE_MAP = 1; + private static final int CMD_CONTROL_MAP = 1; /** + * Control command type: control a player. + */ + private static final int CMD_CONTROL_PLAYER = 2; + + /** + * Control command sub-type: reset a map. + */ + private static final int CMD_CONTROL_MAP_RESET = 1; + + /** + * Control command sub-type: teleport character to map. + */ + private static final int CMD_CONTROL_PLAYER_TELEPORT = 1; + + /** * Creates a new instance. * @param fileControl the file control for saving maps */ @@ -68,9 +83,50 @@ } /** + * Send a bytes packet to the Atrinik server instance. + * @param stream packet to send. + * @throws IOException on failure + */ + private void sendPacket(@NotNull final ByteArrayOutputStream stream) throws IOException { + final byte[] packet = stream.toByteArray(); + packet[0] = (byte) ((packet.length - 2) >> 8); + packet[1] = (byte) (packet.length - 2); + try { + final Socket socket = new Socket("127.0.0.1", 13327); + try { + final OutputStream outputStream = socket.getOutputStream(); + outputStream.write(packet); + socket.shutdownOutput(); + } finally { + socket.close(); + } + } catch (final IOException ex) { + throw new IOException("127.0.0.1:13327: " + ex.getMessage(), ex); + } + } + + /** * {@inheritDoc} */ @Override + protected void resetMap(@NotNull final String mapPath) throws IOException { + final ByteArrayOutputStream tmp = new ByteArrayOutputStream(); + tmp.write(0); + tmp.write(0); + tmp.write(SERVER_CMD_CONTROL); + tmp.write(APPLICATION_NAME_IDENTIFIER.getBytes(CHARSET_NAME)); + tmp.write(0); // termination of application name identifier + tmp.write(CMD_CONTROL_MAP); + tmp.write(CMD_CONTROL_MAP_RESET); + tmp.write(mapPath.getBytes(CHARSET_NAME)); + tmp.write(0); + sendPacket(tmp); + } + + /** + * {@inheritDoc} + */ + @Override protected void teleportCharacterToMap(@NotNull final String mapPath, final int mapX, final int mapY) throws IOException { final ByteArrayOutputStream tmp = new ByteArrayOutputStream(); tmp.write(0); @@ -78,28 +134,16 @@ tmp.write(SERVER_CMD_CONTROL); tmp.write(APPLICATION_NAME_IDENTIFIER.getBytes(CHARSET_NAME)); tmp.write(0); // termination of application name identifier - tmp.write(CMD_CONTROL_UPDATE_MAP); + tmp.write(CMD_CONTROL_PLAYER); + tmp.write(CMD_CONTROL_PLAYER_TELEPORT); + tmp.write(0); // empty player name tmp.write(mapPath.getBytes(CHARSET_NAME)); tmp.write(0); tmp.write(mapX >> 8); tmp.write(mapX); tmp.write(mapY >> 8); tmp.write(mapY); - final byte[] packet = tmp.toByteArray(); - packet[0] = (byte) ((packet.length - 2) >> 8); - packet[1] = (byte) (packet.length - 2); - try { - final Socket socket = new Socket("127.0.0.1", 13327); - try { - final OutputStream outputStream = socket.getOutputStream(); - outputStream.write(packet); - socket.shutdownOutput(); - } finally { - socket.close(); - } - } catch (final IOException ex) { - throw new IOException("127.0.0.1:13327: " + ex.getMessage(), ex); - } + sendPacket(tmp); } } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AbstractServerActions.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AbstractServerActions.java 2014-03-15 13:36:40 UTC (rev 9699) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AbstractServerActions.java 2014-03-15 18:13:36 UTC (rev 9700) @@ -116,6 +116,7 @@ final int mapY = cursor.y; final String mapPath = mapFile.getMapPath().toString(); try { + resetMap(mapPath); // TODO: remove from here and add to map saving teleportCharacterToMap(mapPath, mapX, mapY); } catch (final IOException ex) { fileControl.reportTeleportCharacterError(mapPath, ex.getMessage()); @@ -126,6 +127,13 @@ } /** + * Resets a map identified by the given map path. + * @param mapPath the map path to reset. + * @throws IOException if reset fails + */ + protected abstract void resetMap(@NotNull final String mapPath) throws IOException; + + /** * Teleports the character to the given map path. * @param mapPath the map path to teleport to * @param mapX the x coordinate to teleport to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-03-24 20:34:00
|
Revision: 9702 http://sourceforge.net/p/gridarta/code/9702 Author: akirschbaum Date: 2014-03-24 20:33:55 +0000 (Mon, 24 Mar 2014) Log Message: ----------- Include more debug output in test reports. Modified Paths: -------------- trunk/src/atrinik/src/test/resources/log4j.properties trunk/src/crossfire/src/test/resources/log4j.properties trunk/src/daimonin/src/test/resources/log4j.properties trunk/src/gridarta/src/test/resources/log4j.properties trunk/src/model/src/test/resources/log4j.properties trunk/src/plugin/src/test/resources/log4j.properties trunk/src/preferences/src/test/resources/log4j.properties trunk/src/project/src/test/resources/log4j.properties trunk/src/textedit/src/test/resources/log4j.properties trunk/src/utils/src/test/resources/log4j.properties Modified: trunk/src/atrinik/src/test/resources/log4j.properties =================================================================== --- trunk/src/atrinik/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/atrinik/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/crossfire/src/test/resources/log4j.properties =================================================================== --- trunk/src/crossfire/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/crossfire/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/daimonin/src/test/resources/log4j.properties =================================================================== --- trunk/src/daimonin/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/daimonin/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/gridarta/src/test/resources/log4j.properties =================================================================== --- trunk/src/gridarta/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/gridarta/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/model/src/test/resources/log4j.properties =================================================================== --- trunk/src/model/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/model/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/plugin/src/test/resources/log4j.properties =================================================================== --- trunk/src/plugin/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/plugin/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DBEUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/preferences/src/test/resources/log4j.properties =================================================================== --- trunk/src/preferences/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/preferences/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/project/src/test/resources/log4j.properties =================================================================== --- trunk/src/project/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/project/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/textedit/src/test/resources/log4j.properties =================================================================== --- trunk/src/textedit/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/textedit/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender Modified: trunk/src/utils/src/test/resources/log4j.properties =================================================================== --- trunk/src/utils/src/test/resources/log4j.properties 2014-03-24 20:33:21 UTC (rev 9701) +++ trunk/src/utils/src/test/resources/log4j.properties 2014-03-24 20:33:55 UTC (rev 9702) @@ -17,8 +17,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Set root logger level to INFO and its only appender to A1. -log4j.rootLogger=INFO, A1 +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-10-07 20:26:39
|
Revision: 9707 http://sourceforge.net/p/gridarta/code/9707 Author: akirschbaum Date: 2014-10-07 20:26:35 +0000 (Tue, 07 Oct 2014) Log Message: ----------- Browse archetypes: Add option to save the current selection as a CSV file. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesDialog.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesTableModel.java trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties trunk/src/utils/src/main/java/net/sf/gridarta/utils/FileFilters.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/atrinik/ChangeLog 2014-10-07 20:26:35 UTC (rev 9707) @@ -1,3 +1,8 @@ +2014-10-07 Andreas Kirschbaum + + * Browse archetypes: Add option to save the current selection as a + CSV file. + 2014-03-15 Alex Tokar * Update Map|Open in Client function according to ADS-2. Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/crossfire/ChangeLog 2014-10-07 20:26:35 UTC (rev 9707) @@ -1,3 +1,8 @@ +2014-10-07 Andreas Kirschbaum + + * Browse archetypes: Add option to save the current selection as a + CSV file. + 2014-05-30 Andreas Kirschbaum * Support map attribute "first_load". Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/daimonin/ChangeLog 2014-10-07 20:26:35 UTC (rev 9707) @@ -1,3 +1,8 @@ +2014-10-07 Andreas Kirschbaum + + * Browse archetypes: Add option to save the current selection as a + CSV file. + 2014-03-10 Andreas Kirschbaum * Remember new map path when using "save as" to save a map. Also Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesDialog.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesDialog.java 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesDialog.java 2014-10-07 20:26:35 UTC (rev 9707) @@ -26,6 +26,8 @@ import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.io.File; +import java.io.IOException; import java.util.Collection; import java.util.TreeSet; import javax.swing.BoxLayout; @@ -34,6 +36,7 @@ import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; +import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; @@ -54,6 +57,8 @@ import net.sf.gridarta.model.gameobject.GameObject; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.utils.ActionBuilderUtils; +import net.sf.gridarta.utils.FileChooserUtils; +import net.sf.gridarta.utils.FileFilters; import net.sf.japi.swing.action.ActionBuilder; import net.sf.japi.swing.action.ActionBuilderFactory; import net.sf.japi.swing.action.ActionMethod; @@ -135,6 +140,12 @@ private final JComboBox addAttributeComboBox; /** + * The {@link JFileChooser} for saving CSV files. + */ + @NotNull + private final JFileChooser chooser = new JFileChooser(); + + /** * Creates a new instance. * @param parentComponent the parent component for the dialog * @param archetypeChooserControl the archetype chooser control to to @@ -247,6 +258,7 @@ addAttributePanel.setLayout(new BoxLayout(addAttributePanel, BoxLayout.LINE_AXIS)); addAttributePanel.add(addAttributeButton); addAttributePanel.add(addAttributeComboBox); + addAttributePanel.add(new JButton(ACTION_BUILDER.createAction(false, "browseArchetypesSave", this))); setOptions(new Object[] { addAttributePanel }); updateComboBox(); @@ -262,6 +274,9 @@ dialog.setLocationRelativeTo(parentComponent); setInitialValue(archetypesTable); updateActions(); + + chooser.setDialogTitle(ActionBuilderUtils.getString(ACTION_BUILDER, "browseArchetypesSave.title")); + chooser.setFileFilter(FileFilters.CSV_FILE_FILTER); } /** @@ -299,6 +314,28 @@ } /** + * Action method for saving the current list to a CSV file. + */ + @ActionMethod + public void browseArchetypesSave() { + chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + chooser.setMultiSelectionEnabled(false); + FileChooserUtils.sanitizeCurrentDirectory(chooser); + final int returnVal = chooser.showSaveDialog(this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = chooser.getSelectedFile(); + try { + if (chooser.getFileFilter() == FileFilters.CSV_FILE_FILTER && !file.getName().endsWith(".csv")) { + file = new File(file.getParentFile(), file.getName() + ".csv"); + } + archetypesTableModel.saveAsCsv(file); + } catch (final IOException ex) { + ACTION_BUILDER.showMessageDialog(this, "browseArchetypesSaveIOException", file, ex.getMessage()); + } + } + } + + /** * Adds an attribute to the table. * @param performAction whether the action should be performed * @return whether the action can or was performed Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesTableModel.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesTableModel.java 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/browsearchetypes/BrowseArchetypesTableModel.java 2014-10-07 20:26:35 UTC (rev 9707) @@ -19,10 +19,18 @@ package net.sf.gridarta.gui.dialog.browsearchetypes; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.WeakHashMap; +import java.util.regex.Pattern; import javax.swing.table.AbstractTableModel; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.archetypeset.ArchetypeSet; @@ -53,6 +61,19 @@ private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta"); /** + * If a value written into a CSV file matches this regex, it will not be + * surrounded by " characters. + */ + @NotNull + private static final Pattern PATTERN_PLAIN_CSV_VALUE = Pattern.compile("[a-zA-Z_0-9]+"); + + /** + * A {@link Pattern} that matches a single " character. + */ + @NotNull + private static final Pattern PATTERN_QUOTE = Pattern.compile("\""); + + /** * The {@link ArchetypeSet} from which archetypes are shown. */ @NotNull @@ -256,4 +277,62 @@ return archetypes.get(index); } + /** + * Saves the current contents as a CSV file. + * @param file the file to write to + * @throws IOException if an I/O error occurs writing the file + */ + public void saveAsCsv(@NotNull final File file) throws IOException { + final OutputStream outputStream = new FileOutputStream(file); + try { + final Writer writer = new OutputStreamWriter(outputStream); + try { + final BufferedWriter bufferedWriter = new BufferedWriter(writer); + try { + final int columns = getColumnCount(); + final int rows = getRowCount(); + for (int column = 0; column < columns; column++) { + if (column > 0) { + bufferedWriter.write(","); + } + writeCsvValue(bufferedWriter, getColumnName(column)); + } + bufferedWriter.newLine(); + for (int row = 0; row < rows; row++) { + for (int column = 0; column < columns; column++) { + if (column > 0) { + bufferedWriter.write(","); + } + final Object value = getValueAt(row, column); + writeCsvValue(bufferedWriter, value == null ? "" : value.toString()); + } + bufferedWriter.newLine(); + } + } finally { + bufferedWriter.close(); + } + } finally { + writer.close(); + } + } finally { + outputStream.close(); + } + } + + /** + * Writes a value into a CSV value. + * @param writer the file to write to + * @param value the value to write + * @throws IOException if an I/O error occurs writing the value + */ + private static void writeCsvValue(@NotNull final Writer writer, @NotNull final String value) throws IOException { + if (PATTERN_PLAIN_CSV_VALUE.matcher(value).matches()) { + writer.write(value); + } else { + writer.write("\""); + writer.write(PATTERN_QUOTE.matcher(value).replaceAll("\"\"")); + writer.write("\""); + } + } + } Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-10-07 20:26:35 UTC (rev 9707) @@ -639,6 +639,7 @@ attribApply.text=Apply attribCancel.text=Cancel +fileDialog.filter.csv=CSV Images fileDialog.filter.maps=Map Files fileDialog.filter.png=PNG Images fileDialog.filter.python=Python Scripts @@ -1841,6 +1842,12 @@ # Browse Archetypes Dialog browseArchetypesAddAttribute.text=Add Attribute browseArchetypesAddAttribute.shortdescription=Displays an attribute. +browseArchetypesSave.text= +browseArchetypesSave.shortdescription=Saves the current list into a CSV file. +browseArchetypesSave.icon=general/Save16 +browseArchetypesSave.title=Save as CSV file +browseArchetypesSaveIOException.title=Couldn''t save CSV file +browseArchetypesSaveIOException.message=The CSV file could not be created because the file\n{0} cannot be written:\n{1} browseArchetypes.title=Browse Archetypes browseArchetypes.table.archetype=Archetype browseArchetypes.table.name=Name Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties 2014-10-07 20:26:35 UTC (rev 9707) @@ -617,6 +617,7 @@ attribApply.text=Anwenden attribCancel.text=Abbrechen +fileDialog.filter.csv=CSV-Dateien fileDialog.filter.maps=Karten-Dateien fileDialog.filter.png=PNG-Grafiken fileDialog.filter.python=Python-Skripte @@ -1587,6 +1588,11 @@ # Browse Archetypes Dialog browseArchetypesAddAttribute.text=Attribut anzeigen browseArchetypesAddAttribute.shortdescription=F\xFCgt das Attribut zur Tabelle hinzu. +browseArchetypesSave.text= +browseArchetypesSave.shortdescription=Speicher the aktuelle Auswahl als CSV-Datei. +browseArchetypesSave.title=Als CSV-Datei speichern +browseArchetypesSaveIOException.title=Kann CSV-Datei nicht speichern +browseArchetypesSaveIOException.message=Die CSV-Datei kann nicht erzeugt werden, da ein Ein-/Ausgabefehler\nbeim Schreiben von {0} aufgetreten ist:\n{1} browseArchetypes.title=Archetypen anzeigen browseArchetypes.table.archetype=Archetyp browseArchetypes.table.name=Name Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties 2014-10-07 20:26:35 UTC (rev 9707) @@ -611,6 +611,7 @@ attribApply.text=Appliquer attribCancel.text=Annuler +#fileDialog.filter.csv= fileDialog.filter.maps=Fichier carte fileDialog.filter.png=Images PNG fileDialog.filter.python=Scripts python @@ -1574,6 +1575,11 @@ # Browse Archetypes Dialog browseArchetypesAddAttribute.text=Ajouter browseArchetypesAddAttribute.shortdescription=Ajouter un attribut \u00e0 l'affichage. +#browseArchetypesSave.text= +#browseArchetypesSave.shortdescription= +#browseArchetypesSave.title= +#browseArchetypesSaveIOException.title= +#browseArchetypesSaveIOException.message= browseArchetypes.title=Parcourir les arch\u00e9types browseArchetypes.table.archetype=Arch\u00e9type browseArchetypes.table.name=Nom Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties 2014-10-07 20:26:35 UTC (rev 9707) @@ -611,6 +611,7 @@ attribApply.text=Anv\u00e4nd attribCancel.text=Avbryt +#fileDialog.filter.csv= fileDialog.filter.maps=Kartfiler fileDialog.filter.png=PNG-bilder fileDialog.filter.python=Pythonscript @@ -1573,6 +1574,11 @@ # Browse Archetypes Dialog #browseArchetypesAddAttribute.text= #browseArchetypesAddAttribute.shortdescription= +#browseArchetypesSave.text= +#browseArchetypesSave.shortdescription= +#browseArchetypesSave.title= +#browseArchetypesSaveIOException.title= +#browseArchetypesSaveIOException.message= #browseArchetypes.title= #browseArchetypes.table.archetype= #browseArchetypes.table.name= Modified: trunk/src/utils/src/main/java/net/sf/gridarta/utils/FileFilters.java =================================================================== --- trunk/src/utils/src/main/java/net/sf/gridarta/utils/FileFilters.java 2014-10-07 20:16:12 UTC (rev 9706) +++ trunk/src/utils/src/main/java/net/sf/gridarta/utils/FileFilters.java 2014-10-07 20:26:35 UTC (rev 9707) @@ -67,4 +67,10 @@ @NotNull public static final FileFilter PNG_FILE_FILTER = new HideFileFilterProxy(new EndingFileFilter(true, ActionBuilderUtils.getString(ACTION_BUILDER, "fileDialog.filter.png"), ".png")); + /** + * Swing FileFilter for CSV files. + */ + @NotNull + public static final FileFilter CSV_FILE_FILTER = new HideFileFilterProxy(new EndingFileFilter(true, ActionBuilderUtils.getString(ACTION_BUILDER, "fileDialog.filter.csv"), ".csv")); + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 13:24:36
|
Revision: 9718 http://sourceforge.net/p/gridarta/code/9718 Author: akirschbaum Date: 2014-11-29 13:24:31 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Weaken types. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -19,6 +19,7 @@ package net.sf.gridarta.gui.dialog.plugin; +import bsh.ConsoleInterface; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; @@ -206,7 +207,7 @@ } @NotNull - public PluginConsole createConsole(@NotNull final String name) { + public ConsoleInterface createConsole(@NotNull final String name) { showConsoleFrame(); final PluginConsole pluginConsole = new PluginConsole(); consolePane.addCloseableTab(name, pluginConsole, true); Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -19,6 +19,7 @@ package net.sf.gridarta.model.gameobject; +import javax.swing.Icon; import javax.swing.ImageIcon; import net.sf.gridarta.model.anim.AnimationObjects; import net.sf.gridarta.model.archetype.Archetype; @@ -162,7 +163,7 @@ * @return the transparent face for this game object */ @NotNull - public ImageIcon getTransparentImage() { + public Icon getTransparentImage() { if (transFace == null) { transFace = faceObjectProviders.getTrans(this); } @@ -174,7 +175,7 @@ * @return the double face for this game object */ @NotNull - public ImageIcon getDoubleImage() { + public Icon getDoubleImage() { if (doubleFace == null) { doubleFace = faceObjectProviders.getDouble(this); } @@ -186,7 +187,7 @@ * @return the transparent face for this game object */ @NotNull - public ImageIcon getTransparentDoubleImage() { + public Icon getTransparentDoubleImage() { if (transDoubleFace == null) { transDoubleFace = faceObjectProviders.getTransDouble(this); } Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -99,7 +99,7 @@ * @throws NoSuchValidatorException if the validator cannot be created */ @NotNull - public Validator<G, A, R> newValidator(@NotNull final String spec) throws NoSuchValidatorException { + public Validator<G, A, R> newValidator(@NotNull final CharSequence spec) throws NoSuchValidatorException { final String[] args = StringUtils.PATTERN_WHITESPACE.split(spec); final Class<?> tmpClass; //noinspection ErrorNotRethrown Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -38,6 +38,7 @@ import net.sf.gridarta.plugin.parameter.StringParameter; import net.sf.gridarta.utils.EventListenerList2; import nu.xom.Element; +import nu.xom.Node; import org.apache.log4j.Category; import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; @@ -475,7 +476,7 @@ * @return the plugin parameter in XML representation */ @NotNull - public Element toXML(@NotNull final PluginParameter<G, A, R, ?> pluginParameter) { + public Node toXML(@NotNull final PluginParameter<G, A, R, ?> pluginParameter) { return codec.toXML(pluginParameter); } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -46,6 +46,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; +import javax.swing.text.PlainDocument; import javax.swing.text.Segment; import javax.swing.undo.AbstractUndoableEdit; import javax.swing.undo.CannotRedoException; @@ -489,7 +490,7 @@ * Returns the document this text area is editing. */ @NotNull - public SyntaxDocument getDocument() { + public PlainDocument getDocument() { return selection.getDocument(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 13:34:08
|
Revision: 9720 http://sourceforge.net/p/gridarta/code/9720 Author: akirschbaum Date: 2014-11-29 13:33:58 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Suppress warnings. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java 2014-11-29 13:33:30 UTC (rev 9719) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java 2014-11-29 13:33:58 UTC (rev 9720) @@ -205,6 +205,7 @@ @NotNull private JTextComponent replaceDensityInput; + @SuppressWarnings("RedundantFieldInitialization") private int lastSelectedIndex = REPLACE_WITH_OBJECT_CHOOSER; /** Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java 2014-11-29 13:33:30 UTC (rev 9719) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java 2014-11-29 13:33:58 UTC (rev 9720) @@ -42,6 +42,7 @@ * The id for the key matching the path between the root node and this * node. */ + @SuppressWarnings("RedundantFieldInitialization") private byte id = Token.NULL; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 14:55:38
|
Revision: 9722 http://sourceforge.net/p/gridarta/code/9722 Author: akirschbaum Date: 2014-11-29 14:55:30 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Rename identifiers. Modified Paths: -------------- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java 2014-11-29 13:48:50 UTC (rev 9721) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java 2014-11-29 14:55:30 UTC (rev 9722) @@ -125,7 +125,7 @@ /** * The {@link Logger} for printing log messages. */ - private static final Category log = Logger.getLogger(DefaultEditorFactory.class); + private static final Category LOG = Logger.getLogger(DefaultEditorFactory.class); /** * {@inheritDoc} @@ -228,7 +228,7 @@ try { attributeRangeChecker.add(monsterMatcher, "level", "level", 1, 200); } catch (final InvalidCheckException ex) { - log.warn(ex.getMessage() + " for monster checker"); + LOG.warn(ex.getMessage() + " for monster checker"); } } return attributeRangeChecker; Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java 2014-11-29 13:48:50 UTC (rev 9721) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java 2014-11-29 14:55:30 UTC (rev 9722) @@ -222,21 +222,21 @@ final PickmapChooserModelListener<G, A, R> pickmapChooserModelListener = new PickmapChooserModelListener<G, A, R>() { @Override - public void activePickmapChanged(@Nullable final PickmapState<G, A, R> mapFile) { - if (activePickmapState != mapFile) { // ignore non-changes - updateActivePickmap(mapFile); + public void activePickmapChanged(@Nullable final PickmapState<G, A, R> pickmapState) { + if (activePickmapState != pickmapState) { // ignore non-changes + updateActivePickmap(pickmapState); } } @Override - public void pickmapReverted(@NotNull final PickmapState<G, A, R> mapFile) { - if (activePickmapState == mapFile) { // ignore unless active pickmap was reverted - updateActivePickmap(mapFile); + public void pickmapReverted(@NotNull final PickmapState<G, A, R> pickmapState) { + if (activePickmapState == pickmapState) { // ignore unless active pickmap was reverted + updateActivePickmap(pickmapState); } } @Override - public void pickmapModifiedChanged(final int index, final PickmapState<G, A, R> mapFile) { + public void pickmapModifiedChanged(final int index, final PickmapState<G, A, R> pickmapState) { // ignore } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-05 08:51:43
|
Revision: 9726 http://sourceforge.net/p/gridarta/code/9726 Author: akirschbaum Date: 2014-12-05 08:51:37 +0000 (Fri, 05 Dec 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -486,27 +486,21 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { final int x = point.x - borderOffset.x; final int y = point.y - borderOffset.y; if (x < 0 || y < 0) { - return null; + return false; } final int xm = x / IGUIConstants.SQUARE_WIDTH; final int ym = y / IGUIConstants.SQUARE_HEIGHT; if (xm >= mapSize.getWidth() || ym >= mapSize.getHeight()) { - return null; + return false; } - if (retPoint == null) { - return new Point(xm, ym); - } - retPoint.setLocation(xm, ym); - return retPoint; - + return true; } /** Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -35,7 +35,6 @@ import net.sf.gridarta.var.crossfire.model.gameobject.GameObject; import net.sf.gridarta.var.crossfire.model.maparchobject.MapArchObject; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Renders maps without MapGrid. @@ -90,9 +89,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { throw new IllegalStateException(); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -452,14 +452,10 @@ final Point posDL = new Point(posUL.x, posUL.y + visDim.height); final Point posDR = new Point(posUR.x, posDL.y); // Calculate map positions of corners and from them properties of Rectangle - final Point mapPosUL = getSquareLocationAt(posUL, tmpPoint); - rec.x = mapPosUL == null ? 0 : mapPosUL.x; - final Point mapPosUR = getSquareLocationAt(posUR, tmpPoint); - rec.y = mapPosUR == null ? 0 : mapPosUR.y; - final Point mapPosDL = getSquareLocationAt(posDL, tmpPoint); - rec.height = mapPosDL == null ? mapSize.getHeight() - rec.y : mapPosDL.y - rec.y + 1; - final Point mapPosDR = getSquareLocationAt(posDR, tmpPoint); - rec.width = mapPosDR == null ? mapSize.getWidth() - rec.x : mapPosDR.x - rec.x + 1; + rec.x = getSquareLocationAt(posUL, tmpPoint) ? tmpPoint.x : 0; + rec.y = getSquareLocationAt(posUR, tmpPoint) ? tmpPoint.y : 0; + rec.height = getSquareLocationAt(posDL, tmpPoint) ? tmpPoint.y - rec.y + 1 : mapSize.getHeight() - rec.y; + rec.width = getSquareLocationAt(posDR, tmpPoint) ? tmpPoint.x - rec.x + 1 : mapSize.getWidth() - rec.x; return rec; } @@ -739,9 +735,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { final int x0 = point.x - origin.x; final int y0 = point.y - origin.y; final int yt = (2 * y0 - x0) / 2; @@ -749,14 +744,11 @@ final int xm = xt / isoMapSquareInfo.getXLen2(); final int ym = yt / isoMapSquareInfo.getYLen2() / 2; if (xm < 0 || xm >= mapSize.getWidth() || ym < 0 || ym >= mapSize.getHeight()) { - return null; + return false; } - if (retPoint != null) { - retPoint.setLocation(xm, ym); - return retPoint; - } - return new Point(xm, ym); + retPoint.setLocation(xm, ym); + return true; } /** Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -119,12 +119,11 @@ @Nullable @Override public String getToolTipText(@NotNull final MouseEvent event) { - final Point mapLocation = getSquareLocationAt(event.getPoint(), tmpPoint); - if (mapLocation == null) { + if (!getSquareLocationAt(event.getPoint(), tmpPoint)) { return null; } - final MapSquare<G, A, R> mapSquare = mapModel.getMapSquare(mapLocation); + final MapSquare<G, A, R> mapSquare = mapModel.getMapSquare(tmpPoint); final ToolTipAppender<G, A, R> toolTipAppender = new ToolTipAppender<G, A, R>(gameObjectParser); for (final G gameObject : mapSquare.reverse()) { Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -33,7 +33,6 @@ import net.sf.gridarta.model.mapmodel.MapModel; import net.sf.gridarta.utils.Size2D; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Abstract base class for ISO {@link MapRenderer MapRenderers}. @@ -129,9 +128,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { throw new IllegalStateException(); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -27,7 +27,6 @@ import java.io.File; import java.io.IOException; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Common interface for renderers of map control instances. @@ -43,15 +42,12 @@ BufferedImage getFullImage(); /** - * Returns the map location at the given point or null if no map location is - * at the point. + * Returns the map location at the given point. * @param point the coordinates in the renderer view - * @param retPoint if {@code (retPoint != null)} this point will be returned - * otherwise a new point will be created - * @return the map location + * @param retPoint this point will be returned + * @return whether the location is within the map bounds */ - @Nullable - Point getSquareLocationAt(@NotNull Point point, @Nullable Point retPoint); + boolean getSquareLocationAt(@NotNull Point point, @NotNull Point retPoint); /** * Repaint the view because some view parameters may have changed. Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -188,7 +188,7 @@ */ @Nullable private Point getMapLocation(@NotNull final MouseEvent event) { - return renderer.getSquareLocationAt(event.getPoint(), tmpPoint); + return renderer.getSquareLocationAt(event.getPoint(), tmpPoint) ? tmpPoint : null; } } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -376,10 +376,9 @@ */ private void mousePosChanged(@NotNull final MouseEvent e) { final MapRenderer renderer = (MapRenderer) e.getSource(); - final Point mouseMap = renderer.getSquareLocationAt(e.getPoint(), mouseMapTmp); - if (mouseMap != null) { - final int mouseMapX = mouseMap.x; - final int mouseMapY = mouseMap.y; + if (renderer.getSquareLocationAt(e.getPoint(), mouseMapTmp)) { + final int mouseMapX = mouseMapTmp.x; + final int mouseMapY = mouseMapTmp.y; mouse.setText(ACTION_BUILDER.format("statusMouseOn", mouseMapX, mouseMapY)); } else { mouse.setText(ACTION_BUILDER.format("statusMouseOff")); Modified: trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java =================================================================== --- trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -27,7 +27,6 @@ import net.sf.gridarta.model.maparchobject.TestMapArchObject; import net.sf.gridarta.model.mapmodel.MapModel; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * A {@link MapRenderer} implementation for testing purposes. @@ -60,9 +59,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { throw new AssertionError(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 11:07:54
|
Revision: 9730 http://sourceforge.net/p/gridarta/code/9730 Author: akirschbaum Date: 2014-12-07 11:07:51 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-12-07 10:56:49 UTC (rev 9729) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-12-07 11:07:51 UTC (rev 9730) @@ -65,10 +65,9 @@ * @noinspection TypeMayBeWeakened */ public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter, @NotNull final PathManager pathManager) { - final String value = parameter.getValueOrNull(); - final MapFile mapFile = pathManager.getMapFile(MapPathUtils.newAbsoluteMapPath("/" + value)); - this.value = new JFileField(parent, "mapPathPluginParameter", mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); - this.value.addDocumentListener(new DocumentListener() { + final MapFile mapFile = pathManager.getMapFile(MapPathUtils.newAbsoluteMapPath("/" + parameter.getValue())); + value = new JFileField(parent, "mapPathPluginParameter", mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); + value.addDocumentListener(new DocumentListener() { @Override public void insertUpdate(final DocumentEvent e) { @@ -90,7 +89,7 @@ */ private void setFile() { try { - parameter.setFile(MapPathParameterView.this.value.getFile()); + parameter.setFile(value.getFile()); } catch (final InvalidValueException ex) { JOptionPane.showMessageDialog(parent, "Invalid file: " + ex.getMessage()); } Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java 2014-12-07 10:56:49 UTC (rev 9729) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java 2014-12-07 11:07:51 UTC (rev 9730) @@ -88,7 +88,7 @@ */ @NotNull @Override - public String getValue() throws InvalidValueException { + public String getValue() { return getStringValue(); } @@ -98,11 +98,7 @@ @Nullable @Override public String getValueOrNull() { - try { - return getValue(); - } catch (final InvalidValueException ignored) { - return null; - } + return getValue(); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 21:54:32
|
Revision: 9731 http://sourceforge.net/p/gridarta/code/9731 Author: akirschbaum Date: 2014-12-07 21:54:19 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Define "rendererFactory" variable in plugins when run from command line. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/atrinik/ChangeLog 2014-12-07 21:54:19 UTC (rev 9731) @@ -1,3 +1,8 @@ +2014-12-07 Andreas Kirschbaum + + * Define "rendererFactory" variable in plugins when run from + command line. Makes WorldMaker plugin work again. + 2014-11-16 Alex Tokar * Remove support for 'no_priest' map attribute; add support for Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/crossfire/ChangeLog 2014-12-07 21:54:19 UTC (rev 9731) @@ -1,3 +1,8 @@ +2014-12-07 Andreas Kirschbaum + + * Define "rendererFactory" variable in plugins when run from + command line. Makes WorldMaker plugin work again. + 2014-10-07 Andreas Kirschbaum * Browse archetypes: Add option to save the current selection as a Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/daimonin/ChangeLog 2014-12-07 21:54:19 UTC (rev 9731) @@ -1,3 +1,8 @@ +2014-12-07 Andreas Kirschbaum + + * Define "rendererFactory" variable in plugins when run from + command line. Makes WorldMaker plugin work again. + 2014-10-07 Andreas Kirschbaum * Browse archetypes: Add option to save the current selection as a Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-07 21:54:19 UTC (rev 9731) @@ -199,7 +199,6 @@ import net.sf.gridarta.model.settings.DefaultVolatileSettings; import net.sf.gridarta.model.settings.EditorSettings; import net.sf.gridarta.model.settings.VolatileSettings; -import net.sf.gridarta.plugin.PluginParameters; import net.sf.gridarta.project.ProjectModel; import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; @@ -401,9 +400,7 @@ final GameObjectTab<G, A, R> gameObjectTab = new GameObjectTab<G, A, R>("gameObject", gameObjectAttributesControl, Location.BOTTOM, false, 0, true); final ReplaceDialogManager<G, A, R> replaceDialogManager = new ReplaceDialogManager<G, A, R>(parent, copyBuffer, objectChooser, mapViewManager, projectModel.getFaceObjectProviders(), insertionModeSet); final PluginParameterViewFactory<G, A, R> pluginParameterViewFactory = new PluginParameterViewFactory<G, A, R>(projectModel.getArchetypeSet(), gameObjectAttributesModel, objectChooser, projectModel.getMapManager(), projectModel.getFaceObjectProviders(), projectModel.getPathManager()); - final PluginParameters pluginParameters = projectModel.newPluginParameters(); - pluginParameters.addPluginParameter("rendererFactory", rendererFactory); - final PluginController<G, A, R> pluginControl = new PluginController<G, A, R>(filterControl, projectModel.getPluginModel(), pluginParameters, parent, pluginParameterViewFactory, scriptsFile, resourceIcons); + final PluginController<G, A, R> pluginControl = new PluginController<G, A, R>(filterControl, projectModel.getPluginModel(), projectModel.newPluginParameters(rendererFactory), parent, pluginParameterViewFactory, scriptsFile, resourceIcons); final EditorAction mainActions = new MainActions<G, A, R>(findDialogManager, replaceDialogManager, mainViewFrame, mapViewSettings, projectModel.getArchetypeSet(), copyBuffer, objectChooser, projectModel.getMapManager(), insertionModeSet); final EditorAction mapCursorActions = new MapCursorActions<G, A, R>(mapActions); final Action moveSquareDownAction = editorActionManager.createAction("moveSquareDown", "Selected Square View", new MoveSquareDownAction<G, A, R>(selectedSquareModel, projectModel.getMapManager())); Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java 2014-12-07 21:54:19 UTC (rev 9731) @@ -38,14 +38,20 @@ import net.sf.gridarta.gui.dialog.errorview.ConsoleErrorView; import net.sf.gridarta.gui.dialog.errorview.DefaultErrorView; import net.sf.gridarta.gui.dialog.prefs.GUIPreferences; +import net.sf.gridarta.gui.filter.DefaultFilterControl; +import net.sf.gridarta.gui.filter.FilterControl; +import net.sf.gridarta.gui.map.renderer.RendererFactory; import net.sf.gridarta.mainactions.DefaultExiter; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.configsource.ConfigSource; import net.sf.gridarta.model.configsource.ConfigSourceFactory; import net.sf.gridarta.model.configsource.DefaultConfigSourceFactory; import net.sf.gridarta.model.errorview.ErrorView; +import net.sf.gridarta.model.filter.NamedFilter; import net.sf.gridarta.model.gameobject.GameObject; import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapviewsettings.DefaultMapViewSettings; +import net.sf.gridarta.model.mapviewsettings.MapViewSettings; import net.sf.gridarta.model.settings.DefaultEditorSettings; import net.sf.gridarta.model.settings.EditorSettings; import net.sf.gridarta.model.settings.ProjectSettings; @@ -194,7 +200,7 @@ final ProjectModel<G, A, R> projectModel = new ProjectModel<G, A, R>(errorView, projectSettings, editorFactory, resourceIcons, configSource); if (plugin != null) { - returnCode = runPlugin(plugin, errorView, args2, projectModel); + returnCode = runPlugin(plugin, errorView, args2, editorFactory, projectModel, resourceIcons); } else { try { switch (mode) { @@ -239,13 +245,19 @@ * @param plugin the name of the plugin to run * @param errorView the error view to add errors to * @param args the arguments for the plugin + * @param editorFactory the editor factory to use * @param projectModel the project model to use + * @param resourceIcons the gui utils to use * @return return code suitable for passing to {@link System#exit(int)} */ - private int runPlugin(@NotNull final String plugin, final ErrorView errorView, final Iterable<String> args, @NotNull final ProjectModel<G, A, R> projectModel) { + private int runPlugin(@NotNull final String plugin, final ErrorView errorView, final Iterable<String> args, @NotNull final EditorFactory<G, A, R> editorFactory, @NotNull final ProjectModel<G, A, R> projectModel, @NotNull final ResourceIcons resourceIcons) { checkForErrors(errorView); waitDialog(errorView); - return new PluginExecutor<G, A, R>(projectModel.getPluginModel(), projectModel.newPluginParameters()).executePlugin(plugin, args); + final NamedFilter defaultNamedFilterList = new NamedFilter(projectModel.getGameObjectMatchers().getFilters()); + final FilterControl<G, A, R> filterControl = new DefaultFilterControl<G, A, R>(defaultNamedFilterList); + final MapViewSettings mapViewSettings = new DefaultMapViewSettings(); + final RendererFactory<G, A, R> rendererFactory = editorFactory.newRendererFactory(mapViewSettings, filterControl, projectModel.getGameObjectParser(), projectModel.getFaceObjectProviders(), resourceIcons, projectModel.getSmoothFaces()); + return new PluginExecutor<G, A, R>(projectModel.getPluginModel(), projectModel.newPluginParameters(rendererFactory)).executePlugin(plugin, args); } /** Modified: trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java =================================================================== --- trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java 2014-12-07 21:54:19 UTC (rev 9731) @@ -593,10 +593,11 @@ /** * Creates a new {@link PluginParameters} instance for this project model. + * @param rendererFactory the renderer factory to include * @return the plugin parameters; may be modified */ @NotNull - public PluginParameters newPluginParameters() { + public PluginParameters newPluginParameters(@NotNull final Object rendererFactory) { final PluginParameters pluginParameters = new PluginParameters(); pluginParameters.addPluginParameter("archetypeSet", archetypeSet); pluginParameters.addPluginParameter("projectSettings", projectSettings); @@ -604,6 +605,7 @@ pluginParameters.addPluginParameter("mapManager", mapManager); pluginParameters.addPluginParameter("validators", validators); pluginParameters.addPluginParameter("gameObjectMatchers", gameObjectMatchers); + pluginParameters.addPluginParameter("rendererFactory", rendererFactory); return pluginParameters; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-17 19:21:02
|
Revision: 9732 http://sourceforge.net/p/gridarta/code/9732 Author: akirschbaum Date: 2014-12-17 19:20:52 +0000 (Wed, 17 Dec 2014) Log Message: ----------- Tentative fix for incorrect map file names. Modified Paths: -------------- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-12-07 21:54:19 UTC (rev 9731) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-12-17 19:20:52 UTC (rev 9732) @@ -83,7 +83,7 @@ public MapFile getMapFile(@NotNull final File file) { final String canonicalFile = IOUtils.getCanonicalPath(file); final File mapsDirectory = projectSettings.getMapsDirectory(); - final String canonicalMapsDir = IOUtils.getCanonicalPath(mapsDirectory) + File.separator; + final String canonicalMapsDir = IOUtils.getCanonicalPath(mapsDirectory) + "/"; final String mapPath; final File baseDir; if (canonicalFile.startsWith(canonicalMapsDir)) { Modified: trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java =================================================================== --- trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java 2014-12-07 21:54:19 UTC (rev 9731) +++ trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java 2014-12-17 19:20:52 UTC (rev 9732) @@ -197,11 +197,13 @@ */ @NotNull public static String getCanonicalPath(@NotNull final File file) { + String path; try { - return file.getCanonicalPath(); + path = file.getCanonicalPath(); } catch (final IOException ignored) { - return file.getAbsolutePath(); + path = file.getAbsolutePath(); } + return path.replace(File.separatorChar, '/'); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-17 19:47:58
|
Revision: 9733 http://sourceforge.net/p/gridarta/code/9733 Author: akirschbaum Date: 2014-12-17 19:47:40 +0000 (Wed, 17 Dec 2014) Log Message: ----------- Add support for tiled maps in up and down direction. [Atrinik] Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java Added Paths: ----------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/ChangeLog 2014-12-17 19:47:40 UTC (rev 9733) @@ -1,3 +1,7 @@ +2014-12-17 Alex Tokar + + * Add support for tiled maps in up and down direction. + 2014-12-07 Andreas Kirschbaum * Define "rendererFactory" variable in plugins when run from Modified: trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java =================================================================== --- trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -48,7 +48,7 @@ import javax.swing.filechooser.FileFilter; import net.sf.gridarta.gui.dialog.help.Help; import net.sf.gridarta.gui.map.maptilepane.AbstractMapTilePane; -import net.sf.gridarta.gui.map.maptilepane.IsoMapTilePane; +import net.sf.gridarta.gui.map.maptilepane.Iso3DMapTilePane; import net.sf.gridarta.gui.utils.GUIConstants; import net.sf.gridarta.gui.utils.TextComponentUtils; import net.sf.gridarta.model.mapmanager.MapManager; @@ -333,7 +333,7 @@ final Component mainPanel = createMainPanel(map); tabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "mapMapTabTitle"), mainPanel); - mapTilePane = new IsoMapTilePane<GameObject, MapArchObject, Archetype>(mapManager, projectSettings, mapModel, mapFileFilter); + mapTilePane = new Iso3DMapTilePane<GameObject, MapArchObject, Archetype>(mapManager, projectSettings, mapModel, mapFileFilter); final Component tilePanel = createTilePathPanel(mapTilePane); tabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "mapTilesTabTitle"), tilePanel); Modified: trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java =================================================================== --- trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -535,7 +535,7 @@ @NotNull @Override public Direction[] getDirectionMap() { - return new Direction[] { Direction.NORTH_EAST, Direction.SOUTH_EAST, Direction.SOUTH_WEST, Direction.NORTH_WEST, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH, }; + return new Direction[] { Direction.NORTH_EAST, Direction.SOUTH_EAST, Direction.SOUTH_WEST, Direction.NORTH_WEST, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH, Direction.UP, Direction.DOWN }; } /** Modified: trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties =================================================================== --- trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties 2014-12-17 19:47:40 UTC (rev 9733) @@ -27,7 +27,7 @@ main.menubar=file edit map archetypes pickmaps resources tools analyze view bookmarks plugins window help file.menu=newMap openFile goMap recent closeMap - saveMap saveMapAs saveAllMaps - closeAllMaps reloadMap createImage - options shortcuts - exit edit.menu=undo redo - clear cut copy paste pasteTiled - shift - find findNext findPrev replace fillAuto fillAbove fillBelow randFillAuto randFillAbove randFillBelow floodFill - selectAll invertSelection expandEmptySelection growSelection shrinkSelection -map.menu=autoJoin - enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects - gameObjectTextEditor +map.menu=autoJoin - enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap enterUpMap enterDownMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects - gameObjectTextEditor archetypes.menu=displayGameObjectNames displayArchetypeNames displayIconsOnly - findArchetypes browseArchetypes #pickmaps.menu: See gridarta resources.menu=collectArches collectSpells - reloadFaces - viewTreasurelists @@ -42,7 +42,7 @@ mapwindowFile.menu=saveMap saveMapAs createImage - reloadMap - closeMap mapwindowEdit.menu=undo redo - clear cut copy paste pasteTiled - shift - find findNext findPrev replace fillAuto fillAbove fillBelow randFillAuto randFillAbove randFillBelow floodFill - selectAll invertSelection expandEmptySelection growSelection shrinkSelection -mapwindowMap.menu=gridVisible lightVisible - goExit enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects openInClient +mapwindowMap.menu=gridVisible lightVisible - goExit enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap enterUpMap enterDownMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects openInClient mapwindowCursor.menu=moveCursor - exitConnector - selectSquare startStopDrag addToSelection subFromSelection releaseDrag - insertArch deleteArch - selectArchAbove selectArchBelow - archAttributes ########## Modified: trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties =================================================================== --- trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties 2014-12-17 19:47:40 UTC (rev 9733) @@ -122,6 +122,8 @@ enterSouthWestMap.accel=ctrl pressed NUMPAD4 enterWestMap.accel=ctrl pressed NUMPAD7 enterNorthWestMap.accel=ctrl pressed NUMPAD8 +enterUpMap.accel=ctrl pressed ADD +enterDownMap.accel=ctrl pressed SUBTRACT ####### Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -238,6 +238,11 @@ scrollTo = new Rectangle(newViewSize.width - oldViewRectangle.width, newViewSize.height - oldViewRectangle.height, oldViewRectangle.width, oldViewRectangle.height); break; + case UP: + case DOWN: + scrollTo = new Rectangle(oldViewRectangle.x, oldViewRectangle.y, oldViewRectangle.width, oldViewRectangle.height); + break; + default: throw new AssertionError(); } @@ -297,6 +302,10 @@ case NORTH_WEST: return new Point(mapSize.getWidth() - 1, mapSize.getHeight() - 1); + case UP: + case DOWN: + return new Point(oldCursorLocation.x, oldCursorLocation.y); + default: throw new AssertionError(); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -68,7 +68,7 @@ * Possible directions for "enter xxx map". */ @NotNull - private final String[] directionsMap = { "enterNorthMap", "enterEastMap", "enterSouthMap", "enterWestMap", "enterNorthEastMap", "enterSouthEastMap", "enterSouthWestMap", "enterNorthWestMap" }; + private final String[] directionsMap = { "enterNorthMap", "enterEastMap", "enterSouthMap", "enterWestMap", "enterNorthEastMap", "enterSouthEastMap", "enterSouthWestMap", "enterNorthWestMap", "enterUpMap", "enterDownMap" }; /** * Action for "grid visible". @@ -564,6 +564,22 @@ } /** + * Action method for entering the up map. + */ + @ActionMethod + public void enterUpMap() { + doEnterMap(true, Direction.UP); + } + + /** + * Action method for entering the down map. + */ + @ActionMethod + public void enterDownMap() { + doEnterMap(true, Direction.DOWN); + } + + /** * Deletes all game objects referencing unknown archetypes. */ @ActionMethod Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -140,10 +140,10 @@ this.mapModel = mapModel; this.nextFocus = nextFocus.clone(); this.mapFileFilter = mapFileFilter; - assert tileLink.length == 8; - tileLinks = new TileLink[] { newTileLink("mapNorth", tileLink[0], Direction.SOUTH), newTileLink("mapEast", tileLink[1], Direction.WEST), newTileLink("mapSouth", tileLink[2], Direction.NORTH), newTileLink("mapWest", tileLink[3], Direction.EAST), newTileLink("mapNorthEast", tileLink[4], Direction.SOUTH_WEST), newTileLink("mapSouthEast", tileLink[5], Direction.NORTH_WEST), newTileLink("mapSouthWest", tileLink[6], Direction.NORTH_EAST), newTileLink("mapNorthWest", tileLink[7], Direction.SOUTH_EAST), }; + assert tileLink.length == 10; + tileLinks = new TileLink[] { newTileLink("mapNorth", tileLink[0], Direction.SOUTH), newTileLink("mapEast", tileLink[1], Direction.WEST), newTileLink("mapSouth", tileLink[2], Direction.NORTH), newTileLink("mapWest", tileLink[3], Direction.EAST), newTileLink("mapNorthEast", tileLink[4], Direction.SOUTH_WEST), newTileLink("mapSouthEast", tileLink[5], Direction.NORTH_WEST), newTileLink("mapSouthWest", tileLink[6], Direction.NORTH_EAST), newTileLink("mapNorthWest", tileLink[7], Direction.SOUTH_EAST), newTileLink("mapUp", tileLink[8], Direction.DOWN), newTileLink("mapDown", tileLink[9], Direction.UP)}; attachTiledMaps = new AttachTiledMaps<G, A, R>(mapManager, tileLinks); - canAttachMaps = tileLink[0].length + tileLink[1].length + tileLink[2].length + tileLink[3].length + tileLink[4].length + tileLink[5].length + tileLink[6].length + tileLink[7].length > 0; + canAttachMaps = tileLink[0].length + tileLink[1].length + tileLink[2].length + tileLink[3].length + tileLink[4].length + tileLink[5].length + tileLink[6].length + tileLink[7].length + tileLink[8].length + tileLink[9].length > 0; mapArchObject = mapModel.getMapArchObject(); tilePaths = buildComponents(directionMapping); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -45,7 +45,7 @@ /** * The tile links used for the attach map algorithm. */ - private static final MapLink[][] TILE_LINK = new MapLink[8][0]; + private static final MapLink[][] TILE_LINK = new MapLink[10][0]; /** * Maps map direction to {@link net.sf.gridarta.gui.utils.DirectionLayout} Added: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java (rev 0) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -0,0 +1,99 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.gui.map.maptilepane; + +import javax.swing.filechooser.FileFilter; +import net.sf.gridarta.model.archetype.Archetype; +import net.sf.gridarta.model.direction.Direction; +import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapmanager.MapManager; +import net.sf.gridarta.model.mapmodel.MapModel; +import net.sf.gridarta.model.settings.ProjectSettings; +import net.sf.gridarta.model.tiles.MapLink; +import org.jetbrains.annotations.NotNull; + +/** + * A Panel for managing the tiling of maps. Implementation for 10 tile paths. + * @author <a href="mailto:mic...@no...">Michael Toennies</a> + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class Iso3DMapTilePane<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractMapTilePane<G, A, R> { + + /** + * Serial Version UID. + */ + private static final long serialVersionUID = 1L; + + /** + * The tile links used for the attach map algorithm. + */ + private static final MapLink[][] TILE_LINK = new MapLink[10][2]; + + static { + /* fine list of indirect links von maps around to other maps around us */ + TILE_LINK[Direction.NORTH.ordinal()][0] = new MapLink(Direction.NORTH_WEST, Direction.WEST); + TILE_LINK[Direction.NORTH.ordinal()][1] = new MapLink(Direction.NORTH_EAST, Direction.EAST); + + TILE_LINK[Direction.NORTH_EAST.ordinal()][0] = new MapLink(Direction.NORTH, Direction.WEST); + TILE_LINK[Direction.NORTH_EAST.ordinal()][1] = new MapLink(Direction.EAST, Direction.SOUTH); + + TILE_LINK[Direction.EAST.ordinal()][0] = new MapLink(Direction.NORTH_EAST, Direction.NORTH); + TILE_LINK[Direction.EAST.ordinal()][1] = new MapLink(Direction.SOUTH_EAST, Direction.SOUTH); + + TILE_LINK[Direction.SOUTH_EAST.ordinal()][0] = new MapLink(Direction.EAST, Direction.NORTH); + TILE_LINK[Direction.SOUTH_EAST.ordinal()][1] = new MapLink(Direction.SOUTH, Direction.WEST); + + TILE_LINK[Direction.SOUTH.ordinal()][0] = new MapLink(Direction.SOUTH_EAST, Direction.EAST); + TILE_LINK[Direction.SOUTH.ordinal()][1] = new MapLink(Direction.SOUTH_WEST, Direction.WEST); + + TILE_LINK[Direction.SOUTH_WEST.ordinal()][0] = new MapLink(Direction.SOUTH, Direction.EAST); + TILE_LINK[Direction.SOUTH_WEST.ordinal()][1] = new MapLink(Direction.WEST, Direction.NORTH); + + TILE_LINK[Direction.WEST.ordinal()][0] = new MapLink(Direction.SOUTH_WEST, Direction.SOUTH); + TILE_LINK[Direction.WEST.ordinal()][1] = new MapLink(Direction.NORTH_WEST, Direction.NORTH); + + TILE_LINK[Direction.NORTH_WEST.ordinal()][0] = new MapLink(Direction.WEST, Direction.SOUTH); + TILE_LINK[Direction.NORTH_WEST.ordinal()][1] = new MapLink(Direction.NORTH, Direction.EAST); + } + + /** + * Maps map direction to {@link net.sf.gridarta.gui.utils.DirectionLayout} + * direction. + */ + private static final Direction[] DIRECTION_MAPPING = { Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH_EAST, Direction.SOUTH_EAST, Direction.SOUTH_WEST, Direction.NORTH_WEST, Direction.UP, Direction.DOWN }; + + /** + * Indices of next focus. + */ + private static final int[] NEXT_FOCUS = { 4, 5, 6, 7, 1, 2, 3, 0 }; + + /** + * Create a MapTilePane. + * @param mapManager the map manager to use + * @param projectSettings the project settings instance + * @param mapModel the map that's tiles are to be viewed / controlled + * @param mapFileFilter the Swing file filter to use + */ + public Iso3DMapTilePane(final MapManager<G, A, R> mapManager, @NotNull final ProjectSettings projectSettings, final MapModel<G, A, R> mapModel, final FileFilter mapFileFilter) { + super(mapManager, projectSettings, mapModel, TILE_LINK, DIRECTION_MAPPING, NEXT_FOCUS, mapFileFilter); + } + +} Property changes on: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -45,7 +45,7 @@ /** * The tile links used for the attach map algorithm. */ - private static final MapLink[][] TILE_LINK = new MapLink[8][2]; + private static final MapLink[][] TILE_LINK = new MapLink[10][2]; static { /* fine list of indirect links von maps around to other maps around us */ Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -53,7 +53,7 @@ * illegal if this were declared inside the enum. */ @NotNull - private static final Direction[] DAIMONIN_TO_DIRECTION_MAP = new Direction[8]; + private static final Direction[] DAIMONIN_TO_DIRECTION_MAP = new Direction[10]; static { addDirection(Direction.NORTH); @@ -64,6 +64,8 @@ addDirection(Direction.SOUTH_EAST); addDirection(Direction.SOUTH_WEST); addDirection(Direction.NORTH_WEST); + addDirection(Direction.UP); + addDirection(Direction.DOWN); } /** @@ -157,6 +159,20 @@ private Component cC; /** + * Up Component. + * @serial include + */ + @Nullable + private Component cU; + + /** + * Down Component. + * @serial include + */ + @Nullable + private Component cD; + + /** * Creates a DirectionLayout with zero gaps. */ public DirectionLayout() { @@ -217,6 +233,12 @@ case NORTH_WEST: cNW = comp; break; + case UP: + cU = comp; + break; + case DOWN: + cD = comp; + break; default: assert false; break; @@ -257,6 +279,10 @@ cSW = null; } else if (cNW == comp) { cNW = null; + } else if (cU == comp) { + cU = null; + } else if (cD == comp) { + cD = null; } } } @@ -278,7 +304,9 @@ final Dimension dSE = getMinimumSize(cSE); final Dimension dSW = getMinimumSize(cSW); final Dimension dNW = getMinimumSize(cNW); - dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height; + final Dimension dU = getMinimumSize(cU); + final Dimension dD = getMinimumSize(cD); + dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height + max(dU.height, dD.height); dim.width = max(hGap * 2 + dSW.width + max(dNW.width, dC.width, dSE.width) + dNE.width, hGap + max(dW.width, dS.width) + max(dN.width, dE.width), max(dNW.width, dSE.width)); final Insets insets = parent.getInsets(); dim.width += insets.left + insets.right; @@ -315,7 +343,9 @@ final Dimension dSE = getPreferredSize(cSE); final Dimension dSW = getPreferredSize(cSW); final Dimension dNW = getPreferredSize(cNW); - dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height; + final Dimension dU = getMinimumSize(cU); + final Dimension dD = getMinimumSize(cD); + dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height + max(dU.height, dD.height); dim.width = hGap * 2 + dSW.width + max(dNW.width, dC.width, dSE.width) + dNE.width; final Insets insets = parent.getInsets(); dim.width += insets.left + insets.right; @@ -396,6 +426,9 @@ if (cSE != null) { rows++; } + if (cU != null || cD != null) { + rows++; + } if (rows <= 0) { return; } @@ -439,7 +472,17 @@ } if (cSE != null) { cSE.setBounds(left + colWidth + hGap, top, colWidth, rowHeight); + top += rowHeight + vGap; } + if (cU != null || cD != null) { + if (cU != null) { + cU.setBounds(left + ((colWidth + hGap) / 2), top, colWidth, rowHeight); + } + if (cD != null) { + cD.setBounds(left + ((colWidth + hGap) * 3 / 2), top, colWidth, rowHeight); + } + top += rowHeight + vGap; + } } } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -437,6 +437,8 @@ editorActionManager.createAction("enterSouthEastMap", "Map Navigation", mapActions); editorActionManager.createAction("enterSouthWestMap", "Map Navigation", mapActions); editorActionManager.createAction("enterNorthWestMap", "Map Navigation", mapActions); + editorActionManager.createAction("enterUpMap", "Map Navigation", mapActions); + editorActionManager.createAction("enterDownMap", "Map Navigation", mapActions); editorActionManager.createToggleAction("gridVisible", "Map Navigation", mapActions); editorActionManager.createToggleAction("lightVisible", "Map Navigation", new LightVisibleAction(mapViewSettings)); editorActionManager.createToggleAction("smoothing", "Map Navigation", mapActions); Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-12-17 19:47:40 UTC (rev 9733) @@ -247,6 +247,12 @@ enterNorthWestMap.text=Enter Northwest Map enterNorthWestMap.shortdescription=Opens the tiled map north west of the current map. +enterUpMap.text=Enter Up Map +enterUpMap.shortdescription=Opens the tiled map up of the current map. + +enterDownMap.text=Enter Down Map +enterDownMap.shortdescription=Opens the tiled map down of the current map. + deleteUnknownObjects.text=Delete unknown objects deleteUnknownObjects.shortdescription=Deletes game objects referring to undefined archetypes from the current map. @@ -549,6 +555,8 @@ mapNorthWest=Northwest mapSouthEast=Southeast mapSouthWest=Southwest +mapUp=Up +mapDown=Down mapTiles=Paths for Map-Tiling mapControl=Control Map-Tiling mapTilesAttach.text=Attach Map Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -65,9 +65,19 @@ /** * North west. */ - NORTH_WEST(-1, -1, "NorthWest"); + NORTH_WEST(-1, -1, "NorthWest"), /** + * Up. + */ + UP(0, 0, "Up"), + + /** + * Down. + */ + DOWN(0, 0, "Down"); + + /** * The relative x direction. */ private final int dx; Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -21,6 +21,8 @@ import java.io.BufferedReader; import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.sf.gridarta.model.direction.Direction; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.utils.NumberUtils; @@ -38,6 +40,13 @@ public abstract class AbstractMapArchObjectParser<A extends MapArchObject<A>> implements MapArchObjectParser<A> { /** + * Matches the remainder of a "tile_path_xyz" line. First group is the + * direction, second group is the destination path. + */ + @NotNull + private static final Pattern TILE_PATH_PATTERN = Pattern.compile("(\\d+) (.+)"); + + /** * {@inheritDoc} */ @Override @@ -112,11 +121,16 @@ mapArchObject.setOutdoor(true); } } else if (trimmedLine.startsWith("tile_path_")) { + final Matcher m = TILE_PATH_PATTERN.matcher(trimmedLine.substring(10)); + if (!m.matches()) { + throw new InvalidMapFormatException("unexpected map attribute: '" + trimmedLine + "'"); + } + // get tile path try { - final int index = Integer.valueOf(trimmedLine.substring(10, 11)); - if (index > 0 && index <= Direction.values().length && trimmedLine.length() >= 12 && trimmedLine.charAt(11) == ' ') { - mapArchObject.setTilePath(Direction.values()[index - 1], trimmedLine.substring(12)); + final int index = Integer.valueOf(m.group(1)); + if (index > 0 && index <= Direction.values().length) { + mapArchObject.setTilePath(Direction.values()[index - 1], m.group(2)); } else { throw new InvalidMapFormatException("unexpected map attribute: '" + trimmedLine + "'"); } Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -126,7 +126,8 @@ /** * The map tile paths used for map tiling. 0 = north, 1 = east, 2 = south, 3 - * = west. 4 = northeast, 5 = southeast, 6 = southwest, 7 = northwest + * = west. 4 = northeast, 5 = southeast, 6 = southwest, 7 = northwest, + * 8 = up, 9 = down */ @NotNull private final String[] tilePaths; Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -377,6 +377,9 @@ * @return {@code true} if cursor really moved */ public boolean goTo(final boolean performAction, @NotNull final Direction dir) { + if (dir.getDx() == 0 && dir.getDy() == 0) { + return false; + } tmpPoint.setLocation(pos.x + dir.getDx(), pos.y + dir.getDy()); if (!mapRec.contains(tmpPoint)) { return false; Modified: trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java =================================================================== --- trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -224,8 +224,13 @@ cursor.setLocation(p); testEvents(1, 0); for (final Direction dir : Direction.values()) { - Assert.assertTrue("go(" + dir + ") should return true. (Maybe the grid was too small.)", cursor.goTo(true, dir)); - testEvents(1, 0); + if (dir == Direction.UP || dir == Direction.DOWN) { + Assert.assertFalse("go(" + dir + ") should return false. (Maybe the grid was too small.)", cursor.goTo(true, dir)); + testEvents(0, 0); + } else { + Assert.assertTrue("go(" + dir + ") should return true. (Maybe the grid was too small.)", cursor.goTo(true, dir)); + testEvents(1, 0); + } p.x += dir.getDx(); p.y += dir.getDy(); Assert.assertEquals("Moving cursor.", p, cursor.getLocation()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-26 11:50:57
|
Revision: 9735 http://sourceforge.net/p/gridarta/code/9735 Author: akirschbaum Date: 2014-12-26 11:50:32 +0000 (Fri, 26 Dec 2014) Log Message: ----------- Fix undo/redo operations involving game object attribute changes. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/atrinik/ChangeLog 2014-12-26 11:50:32 UTC (rev 9735) @@ -1,3 +1,7 @@ +2014-12-26 Andreas Kirschbaum + + * Fix undo/redo operations involving game object attribute changes. + 2014-12-25 Alex Tokar * Add support for auto-tiling: omit tile_path map attributes that Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/crossfire/ChangeLog 2014-12-26 11:50:32 UTC (rev 9735) @@ -1,3 +1,7 @@ +2014-12-26 Andreas Kirschbaum + + * Fix undo/redo operations involving game object attribute changes. + 2014-12-07 Andreas Kirschbaum * Define "rendererFactory" variable in plugins when run from Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/daimonin/ChangeLog 2014-12-26 11:50:32 UTC (rev 9735) @@ -1,3 +1,7 @@ +2014-12-26 Andreas Kirschbaum + + * Fix undo/redo operations involving game object attribute changes. + 2014-12-07 Andreas Kirschbaum * Define "rendererFactory" variable in plugins when run from Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java 2014-12-26 11:50:32 UTC (rev 9735) @@ -352,7 +352,7 @@ @Override public void setAttributeString(@NotNull final String attributeName, @NotNull final String value) { final boolean sameAsInArchetype = getArchetype().getAttributeString(attributeName).equals(value); - if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, value)) { + if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, value, this)) { return; } @@ -365,7 +365,7 @@ @Override public void setAttributeInt(@NotNull final String attributeName, final int value) { final boolean sameAsInArchetype = getArchetype().getAttributeInt(attributeName) == value; - if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, Integer.toString(value))) { + if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, Integer.toString(value), this)) { return; } @@ -377,7 +377,7 @@ */ @Override public void removeAttribute(@NotNull final String attributeName) { - if (!gameObjectText.removeAttribute(attributeName)) { + if (!gameObjectText.removeAttribute(attributeName, this)) { return; } @@ -753,7 +753,7 @@ */ @Override public void addObjectText(@NotNull final String line) { - if (!gameObjectText.addObjectText(line)) { + if (!gameObjectText.addObjectText(line, this)) { return; } @@ -765,7 +765,7 @@ */ @Override public void setObjectText(@NotNull final String objectText) { - if (!gameObjectText.setObjectText(objectText)) { + if (!gameObjectText.setObjectText(objectText, this)) { return; } Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java 2014-12-26 11:50:32 UTC (rev 9735) @@ -133,15 +133,21 @@ * Appends a line to the object text. * @param line the line to append, may contain '\n' for appending multiple * lines + * @param baseObject the game object to notify of changes * @return whether the object text was changed */ - public boolean addObjectText(@NotNull final String line) { + public boolean addObjectText(@NotNull final String line, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { if (line.isEmpty()) { return false; } - objectText.append(line); - if (!line.endsWith("\n")) { - objectText.append('\n'); + baseObject.beginGameObjectChange(); + try { + objectText.append(line); + if (!line.endsWith("\n")) { + objectText.append('\n'); + } + } finally { + baseObject.endGameObjectChange(); } clearAttributeCache(); return true; @@ -150,9 +156,10 @@ /** * Sets the object text. * @param objectText the object text to set + * @param baseObject the game object to notify of changes * @return whether the object text was changed */ - public boolean setObjectText(@NotNull final String objectText) { + public boolean setObjectText(@NotNull final String objectText, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { final String oldObjectText = this.objectText.toString(); if (oldObjectText.length() == objectText.length()) { final String oldSortedObjectText = StringUtils.sortLines(oldObjectText); @@ -162,10 +169,15 @@ } } - this.objectText.setLength(0); - this.objectText.append(objectText); - if (!objectText.isEmpty() && !objectText.endsWith("\n")) { - this.objectText.append('\n'); + baseObject.beginGameObjectChange(); + try { + this.objectText.setLength(0); + this.objectText.append(objectText); + if (!objectText.isEmpty() && !objectText.endsWith("\n")) { + this.objectText.append('\n'); + } + } finally { + baseObject.endGameObjectChange(); } clearAttributeCache(); return true; @@ -197,9 +209,10 @@ /** * Removes an attribute. * @param attributeName the attribute name + * @param baseObject the game object to notify of changes * @return whether the object text has changed */ - public boolean removeAttribute(@NotNull final String attributeName) { + public boolean removeAttribute(@NotNull final String attributeName, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { final String attributeNameWithSpace = attributeName.trim() + " "; // attributeName must be followed by space final StringBuilder sb = new StringBuilder(); @@ -208,7 +221,7 @@ sb.append(line).append('\n'); } } - return setObjectText(sb.toString()); + return setObjectText(sb.toString(), baseObject); } /** @@ -217,11 +230,12 @@ * @param sameAsInArchetype whether the new value is the same as in the * archetype * @param value the new value + * @param baseObject the game object to notify of changes * @return whether the object text has changed */ - public boolean setAttributeValue(@NotNull final String attributeName, final boolean sameAsInArchetype, @NotNull final String value) { + public boolean setAttributeValue(@NotNull final String attributeName, final boolean sameAsInArchetype, @NotNull final String value, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { if (value.isEmpty()) { - return removeAttribute(attributeName); + return removeAttribute(attributeName, baseObject); } final String attributeNameWithSpace = attributeName.trim() + " "; @@ -242,7 +256,7 @@ if (!exists && !sameAsInArchetype) { result.append(attributeNameWithSpace).append(value).append('\n'); } - return setObjectText(result.toString()); + return setObjectText(result.toString(), baseObject); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |