[tiled] r695 - in trunk/src/tiled: core io mapeditor/dialogs mapeditor/widget
svn@biggeruniverse.com
svn at biggeruniverse.com
Sat Aug 19 10:33:52 PDT 2006
Author: bjorn
Date: 2006-08-19 12:33:52 -0500 (Sat, 19 Aug 2006)
New Revision: 695
Modified:
trunk/src/tiled/core/Map.java
trunk/src/tiled/io/MapWriter.java
trunk/src/tiled/mapeditor/dialogs/PropertiesDialog.java
trunk/src/tiled/mapeditor/widget/TilePalettePanel.java
Log:
Cleaned up usages of EventListenerList and fixed out of bounds exceptions while creating a stamp brush from the tile palette when the mouse is dragged outside of the palette.
Modified: trunk/src/tiled/core/Map.java
===================================================================
--- trunk/src/tiled/core/Map.java 2006-08-14 23:49:11 UTC (rev 694)
+++ trunk/src/tiled/core/Map.java 2006-08-19 17:33:52 UTC (rev 695)
@@ -12,11 +12,7 @@
package tiled.core;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Properties;
-import java.util.Vector;
-import javax.swing.event.EventListenerList;
+import java.util.*;
import tiled.mapeditor.Resources;
import tiled.mapeditor.util.MapChangeListener;
@@ -47,9 +43,8 @@
private LinkedList objects;
private int tileWidth, tileHeight;
- private int totalObjects;
private int orientation = MDO_ORTHO;
- private EventListenerList mapChangeListeners;
+ private final List mapChangeListeners = new LinkedList();
private Properties properties;
private String filename;
@@ -60,7 +55,6 @@
public Map(int width, int height) {
super(width, height);
- mapChangeListeners = new EventListenerList();
properties = new Properties();
tilesets = new Vector();
specialLayers = new Vector();
@@ -71,33 +65,31 @@
* Adds a change listener. The listener will be notified when the map
* changes in certain ways.
*
- * @param l the change listener to add
+ * @param listener the change listener to add
* @see MapChangeListener#mapChanged(MapChangedEvent)
*/
- public void addMapChangeListener(MapChangeListener l) {
- mapChangeListeners.add(MapChangeListener.class, l);
+ public void addMapChangeListener(MapChangeListener listener) {
+ mapChangeListeners.add(listener);
}
/**
* Removes a change listener.
- * @param l
+ * @param listener
*/
- public void removeMapChangeListener(MapChangeListener l) {
- mapChangeListeners.remove(MapChangeListener.class, l);
+ public void removeMapChangeListener(MapChangeListener listener) {
+ mapChangeListeners.remove(listener);
}
/**
* Notifies all registered map change listeners about a change.
*/
protected void fireMapChanged() {
- Object[] listeners = mapChangeListeners.getListenerList();
+ Iterator iterator = mapChangeListeners.iterator();
MapChangedEvent event = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == MapChangeListener.class) {
- if (event == null) event = new MapChangedEvent(this);
- ((MapChangeListener)listeners[i + 1]).mapChanged(event);
- }
+ while (iterator.hasNext()) {
+ if (event == null) event = new MapChangedEvent(this);
+ ((MapChangeListener) iterator.next()).mapChanged(event);
}
}
@@ -108,17 +100,17 @@
fireMapChanged();
}
- public void addLayerSpecial(MapLayer l) {
- l.setMap(this);
- specialLayers.add(l);
+ public void addLayerSpecial(MapLayer layer) {
+ layer.setMap(this);
+ specialLayers.add(layer);
fireMapChanged();
}
- public MapLayer addLayer(MapLayer l) {
- l.setMap(this);
- super.addLayer(l);
+ public MapLayer addLayer(MapLayer layer) {
+ layer.setMap(this);
+ super.addLayer(layer);
fireMapChanged();
- return l;
+ return layer;
}
/**
@@ -135,24 +127,24 @@
return layer;
}
- public void setLayer(int index, MapLayer l) {
- l.setMap(this);
- super.setLayer(index, l);
+ public void setLayer(int index, MapLayer layer) {
+ layer.setMap(this);
+ super.setLayer(index, layer);
fireMapChanged();
}
-
+
/**
* Adds a Tileset to this Map. If the set is already attached to this map,
* <code>addTileset</code> simply returns.
*
- * @param s a tileset to add
+ * @param tileset a tileset to add
*/
- public void addTileset(TileSet s) {
- if (s == null || tilesets.indexOf(s) > -1) {
+ public void addTileset(TileSet tileset) {
+ if (tileset == null || tilesets.indexOf(tileset) > -1) {
return;
}
- Tile t = s.getTile(0);
+ Tile t = tileset.getTile(0);
if (t != null) {
int tw = t.getWidth();
@@ -165,7 +157,7 @@
}
}
- tilesets.add(s);
+ tilesets.add(tileset);
fireMapChanged();
}
@@ -174,16 +166,16 @@
* from the map layers. A {@link MapChangedEvent} is fired when all
* processing is complete.
*
- * @param s TileSet to remove
+ * @param tileset TileSet to remove
* @throws LayerLockedException
*/
- public void removeTileset(TileSet s) throws LayerLockedException {
+ public void removeTileset(TileSet tileset) throws LayerLockedException {
// Sanity check
- if (tilesets.indexOf(s) == -1)
+ if (tilesets.indexOf(tileset) == -1)
return;
// Go through the map and remove any instances of the tiles in the set
- Iterator tileIterator = s.iterator();
+ Iterator tileIterator = tileset.iterator();
while (tileIterator.hasNext()) {
Tile tile = (Tile)tileIterator.next();
Iterator layerIterator = getLayers();
@@ -195,7 +187,7 @@
}
}
- tilesets.remove(s);
+ tilesets.remove(tileset);
fireMapChanged();
}
@@ -296,8 +288,8 @@
/**
* Sets a new tile width.
- *
- * @param width
+ *
+ * @param width
*/
public void setTileWidth(int width) {
tileWidth = width;
@@ -306,8 +298,8 @@
/**
* Sets a new tile height.
- *
- * @param height
+ *
+ * @param height
*/
public void setTileHeight(int height) {
tileHeight = height;
@@ -339,7 +331,7 @@
/**
* Returns a vector with the currently loaded tilesets.
- *
+ *
* @return Vector
*/
public Vector getTilesets() {
@@ -349,8 +341,8 @@
/**
* Get the tile set that matches the given global tile id, only to be used
* when loading a map.
- *
- * @param gid
+ *
+ * @param gid
* @return TileSet
*/
public TileSet findTileSetForTileGID(int gid) {
@@ -367,7 +359,7 @@
/**
* Returns width of map in tiles.
- *
+ *
* @return int
*/
public int getWidth() {
@@ -376,7 +368,7 @@
/**
* Returns height of map in tiles.
- *
+ *
* @return int
*/
public int getHeight() {
@@ -450,15 +442,6 @@
*/
/**
- * Returns the amount of objects on the map.
- *
- * @return The total objects in the map
- */
- public int getTotalObjects() {
- return totalObjects;
- }
-
- /**
* Returns the orientation of this map. Orientation will be one of
* {@link Map#MDO_ISO}, {@link Map#MDO_ORTHO}, {@link Map#MDO_HEX},
* {@link Map#MDO_OBLIQUE} and {@link Map#MDO_SHIFTED}.
Modified: trunk/src/tiled/io/MapWriter.java
===================================================================
--- trunk/src/tiled/io/MapWriter.java 2006-08-14 23:49:11 UTC (rev 694)
+++ trunk/src/tiled/io/MapWriter.java 2006-08-19 17:33:52 UTC (rev 695)
@@ -5,7 +5,7 @@
* 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.
- *
+ *
* Adam Turk <aturk at biggeruniverse.com>
* Bjorn Lindeijer <b.lindeijer at xs4all.nl>
*/
@@ -29,7 +29,7 @@
{
/**
* Saves a map to a file.
- *
+ *
* @param map
* @param filename the filename of the map file
* @throws Exception
@@ -38,26 +38,26 @@
/**
* Saves a tileset to a file.
- *
+ *
* @param set
* @param filename the filename of the tileset file
* @throws Exception
*/
public void writeTileset(TileSet set, String filename) throws Exception;
-
+
/**
* Writes a map to an already opened stream. Useful
* for maps which are part of a larger binary dataset
- *
+ *
* @param map the Map to be written
* @param out
* @throws Exception
*/
public void writeMap(Map map, OutputStream out) throws Exception;
-
+
/**
* Overload this to write a tileset to an open stream.
- *
+ *
* @param set
* @param out
* @throws Exception
Modified: trunk/src/tiled/mapeditor/dialogs/PropertiesDialog.java
===================================================================
--- trunk/src/tiled/mapeditor/dialogs/PropertiesDialog.java 2006-08-14 23:49:11 UTC (rev 694)
+++ trunk/src/tiled/mapeditor/dialogs/PropertiesDialog.java 2006-08-19 17:33:52 UTC (rev 695)
@@ -85,7 +85,7 @@
//create actionlisteners
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
- buildPropertiesAndDispose();
+ buildPropertiesAndDispose();
}
});
@@ -141,7 +141,7 @@
}
private void deleteSelected() {
- int total = propertiesTable.getSelectedRowCount();
+ int total = propertiesTable.getSelectedRowCount();
Object[] keys = new Object[total];
int[] selRows = propertiesTable.getSelectedRows();
Modified: trunk/src/tiled/mapeditor/widget/TilePalettePanel.java
===================================================================
--- trunk/src/tiled/mapeditor/widget/TilePalettePanel.java 2006-08-14 23:49:11 UTC (rev 694)
+++ trunk/src/tiled/mapeditor/widget/TilePalettePanel.java 2006-08-19 17:33:52 UTC (rev 695)
@@ -14,17 +14,15 @@
import java.awt.*;
import java.awt.event.MouseEvent;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.Scrollable;
-import javax.swing.event.EventListenerList;
import javax.swing.event.MouseInputAdapter;
-import tiled.core.Tile;
-import tiled.core.TileLayer;
-import tiled.core.TileSet;
-import tiled.core.TilesetChangeListener;
-import tiled.core.TilesetChangedEvent;
+import tiled.core.*;
import tiled.mapeditor.util.TileRegionSelectionEvent;
import tiled.mapeditor.util.TileSelectionEvent;
import tiled.mapeditor.util.TileSelectionListener;
@@ -39,12 +37,12 @@
{
private static final int TILES_PER_ROW = 4;
private TileSet tileset;
- private EventListenerList tileSelectionListeners;
+ private List tileSelectionListeners;
private Vector tilesetMap;
private Rectangle selection;
public TilePalettePanel() {
- tileSelectionListeners = new EventListenerList();
+ tileSelectionListeners = new LinkedList();
MouseInputAdapter mouseInputAdapter = new MouseInputAdapter() {
private Point origin;
@@ -77,44 +75,32 @@
* user selects a tile.
*/
public void addTileSelectionListener(TileSelectionListener listener) {
- tileSelectionListeners.add(TileSelectionListener.class, listener);
+ tileSelectionListeners.add(listener);
}
/**
* Removes tile selection listener.
*/
public void removeTileSelectionListener(TileSelectionListener listener) {
- tileSelectionListeners.remove(TileSelectionListener.class, listener);
+ tileSelectionListeners.remove(listener);
}
- protected void fireTileSelectionEvent(Tile selectedTile) {
- Object[] listeners = tileSelectionListeners.getListenerList();
- TileSelectionEvent event = null;
+ private void fireTileSelectionEvent(Tile selectedTile) {
+ TileSelectionEvent event = new TileSelectionEvent(this, selectedTile);
+ Iterator iterator = tileSelectionListeners.iterator();
- for (int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == TileSelectionListener.class) {
- if (event == null) {
- event = new TileSelectionEvent(this, selectedTile);
- }
-
- ((TileSelectionListener) listeners[i + 1]).tileSelected(event);
- }
+ while (iterator.hasNext()) {
+ ((TileSelectionListener) iterator.next()).tileSelected(event);
}
}
private void fireTileRegionSelectionEvent(Rectangle selection) {
- Object[] listeners = tileSelectionListeners.getListenerList();
- TileRegionSelectionEvent event = null;
+ TileLayer region = createTileLayerFromRegion(selection);
+ TileRegionSelectionEvent event = new TileRegionSelectionEvent(this, region);
+ Iterator iterator = tileSelectionListeners.iterator();
- for (int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == TileSelectionListener.class) {
- if (event == null) {
- TileLayer region = createTileLayerFromRegion(selection);
- event = new TileRegionSelectionEvent(this, region);
- }
-
- ((TileSelectionListener) listeners[i + 1]).tileRegionSelected(event);
- }
+ while (iterator.hasNext()) {
+ ((TileSelectionListener) iterator.next()).tileRegionSelected(event);
}
}
@@ -167,14 +153,19 @@
/**
* Converts pixel coordinates to tile coordinates. The returned coordinates
- * are adjusted with respect to the number of tiles per row.
+ * are at least 0 and adjusted with respect to the number of tiles per row
+ * and the number of rows.
*/
private Point getTileCoordinates(int x, int y) {
int twidth = tileset.getTileWidth() + 1;
int theight = tileset.getTileHeight() + 1;
+ int tileCount = tilesetMap.size();
+ int tilesPerRow = getTilesPerRow();
+ int rows = tileCount / tilesPerRow +
+ (tileCount % tilesPerRow > 0 ? 1 : 0);
- int tileX = Math.min(x / twidth, getTilesPerRow() - 1);
- int tileY = y / theight;
+ int tileX = Math.max(0, Math.min(x / twidth, tilesPerRow - 1));
+ int tileY = Math.max(0, Math.min(y / theight, rows - 1));
return new Point(tileX, tileY);
}
More information about the tiled-commit
mailing list