[tiled] r696 - in trunk/src/tiled: core mapeditor mapeditor/dialogs mapeditor/util mapeditor/widget view
svn@biggeruniverse.com
svn at biggeruniverse.com
Sun Sep 10 09:17:29 PDT 2006
Author: bjorn
Date: 2006-09-10 11:17:28 -0500 (Sun, 10 Sep 2006)
New Revision: 696
Modified:
trunk/src/tiled/core/Map.java
trunk/src/tiled/mapeditor/MapEditor.java
trunk/src/tiled/mapeditor/dialogs/TilesetManager.java
trunk/src/tiled/mapeditor/util/MapChangeListener.java
trunk/src/tiled/mapeditor/util/MapChangedEvent.java
trunk/src/tiled/mapeditor/widget/TabbedTilesetsPane.java
trunk/src/tiled/mapeditor/widget/TilePalettePanel.java
trunk/src/tiled/view/MapView.java
Log:
Make sure tile palette tabs are correctly added and removed when tilesets are.
Modified: trunk/src/tiled/core/Map.java
===================================================================
--- trunk/src/tiled/core/Map.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/core/Map.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -93,7 +93,36 @@
}
}
+
/**
+ * Notifies all registered map change listeners about the removal of a
+ * tileset.
+ */
+ protected void fireTilesetRemoved(int index) {
+ Iterator iterator = mapChangeListeners.iterator();
+ MapChangedEvent event = null;
+
+ while (iterator.hasNext()) {
+ if (event == null) event = new MapChangedEvent(this);
+ ((MapChangeListener) iterator.next()).tilesetRemoved(event, index);
+ }
+ }
+
+ /**
+ * Notifies all registered map change listeners about the addition of a
+ * tileset.
+ */
+ protected void fireTilesetAdded(TileSet tileset) {
+ Iterator iterator = mapChangeListeners.iterator();
+ MapChangedEvent event = null;
+
+ while (iterator.hasNext()) {
+ if (event == null) event = new MapChangedEvent(this);
+ ((MapChangeListener) iterator.next()).tilesetAdded(event, tileset);
+ }
+ }
+
+ /**
* Causes a MapChangedEvent to be fired.
*/
public void touch() {
@@ -158,7 +187,7 @@
}
tilesets.add(tileset);
- fireMapChanged();
+ fireTilesetAdded(tileset);
}
/**
@@ -171,7 +200,8 @@
*/
public void removeTileset(TileSet tileset) throws LayerLockedException {
// Sanity check
- if (tilesets.indexOf(tileset) == -1)
+ final int tilesetIndex = tilesets.indexOf(tileset);
+ if (tilesetIndex == -1)
return;
// Go through the map and remove any instances of the tiles in the set
@@ -180,15 +210,15 @@
Tile tile = (Tile)tileIterator.next();
Iterator layerIterator = getLayers();
while (layerIterator.hasNext()) {
- MapLayer ml = (MapLayer)layerIterator.next();
+ MapLayer ml = (MapLayer) layerIterator.next();
if (ml instanceof TileLayer) {
- ((TileLayer)ml).removeTile(tile);
+ ((TileLayer) ml).removeTile(tile);
}
}
}
tilesets.remove(tileset);
- fireMapChanged();
+ fireTilesetRemoved(tilesetIndex);
}
public void addObject(MapObject o) {
Modified: trunk/src/tiled/mapeditor/MapEditor.java
===================================================================
--- trunk/src/tiled/mapeditor/MapEditor.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/mapeditor/MapEditor.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -1294,13 +1294,23 @@
if (e.getMap() == currentMap) {
mapScrollPane.setViewportView(mapView);
updateLayerTable();
- if (tilePaletteDialog != null) {
- tilePaletteDialog.setMap(currentMap);
- }
mapView.repaint();
}
}
+ public void tilesetAdded(MapChangedEvent e, TileSet tileset) {
+ if (tilePaletteDialog != null) {
+ tilePaletteDialog.setMap(currentMap);
+ }
+ }
+
+ public void tilesetRemoved(MapChangedEvent e, int index) {
+ if (tilePaletteDialog != null) {
+ tilePaletteDialog.setMap(currentMap);
+ }
+ mapView.repaint();
+ }
+
public void valueChanged(ListSelectionEvent e) {
int selectedRow = layerTable.getSelectedRow();
Modified: trunk/src/tiled/mapeditor/dialogs/TilesetManager.java
===================================================================
--- trunk/src/tiled/mapeditor/dialogs/TilesetManager.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/mapeditor/dialogs/TilesetManager.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -13,8 +13,12 @@
package tiled.mapeditor.dialogs;
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.File;
import java.util.Iterator;
import java.util.Vector;
@@ -25,10 +29,14 @@
import tiled.core.*;
import tiled.io.MapHelper;
import tiled.io.MapWriter;
-import tiled.mapeditor.util.*;
+import tiled.mapeditor.Resources;
import tiled.mapeditor.plugin.PluginClassLoader;
-import tiled.mapeditor.Resources;
+import tiled.mapeditor.util.TiledFileFilter;
+import tiled.mapeditor.util.TilesetTableModel;
+/**
+ * @version $Id$
+ */
public class TilesetManager extends JDialog implements ActionListener,
ListSelectionListener
{
Modified: trunk/src/tiled/mapeditor/util/MapChangeListener.java
===================================================================
--- trunk/src/tiled/mapeditor/util/MapChangeListener.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/mapeditor/util/MapChangeListener.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -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>
*/
@@ -14,10 +14,19 @@
import java.util.EventListener;
+import tiled.core.TileSet;
+
/**
+ * Gets notified about changes made to a map. This includes events relating to
+ * changes in the list of layers or tilesets used by this map.
+ *
* @version $Id$
*/
public interface MapChangeListener extends EventListener
{
public void mapChanged(MapChangedEvent e);
+
+ public void tilesetAdded(MapChangedEvent e, TileSet tileset);
+
+ public void tilesetRemoved(MapChangedEvent e, int index);
}
Modified: trunk/src/tiled/mapeditor/util/MapChangedEvent.java
===================================================================
--- trunk/src/tiled/mapeditor/util/MapChangedEvent.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/mapeditor/util/MapChangedEvent.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -5,29 +5,27 @@
* 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>
*/
package tiled.mapeditor.util;
-//import java.util.EventObject;
+import java.util.EventObject;
import tiled.core.Map;
/**
* @version $Id$
*/
-public class MapChangedEvent //extends EventObject
+public class MapChangedEvent extends EventObject
{
- private final Map map;
-
public MapChangedEvent(Map map) {
- this.map = map;
+ super(map);
}
public Map getMap() {
- return map;
+ return (Map) getSource();
}
}
Modified: trunk/src/tiled/mapeditor/widget/TabbedTilesetsPane.java
===================================================================
--- trunk/src/tiled/mapeditor/widget/TabbedTilesetsPane.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/mapeditor/widget/TabbedTilesetsPane.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -25,9 +25,7 @@
import tiled.core.TileSet;
import tiled.mapeditor.MapEditor;
import tiled.mapeditor.brush.CustomBrush;
-import tiled.mapeditor.util.TileRegionSelectionEvent;
-import tiled.mapeditor.util.TileSelectionEvent;
-import tiled.mapeditor.util.TileSelectionListener;
+import tiled.mapeditor.util.*;
/**
* Shows one tab for each Tileset.
@@ -40,7 +38,9 @@
* List of the tile palette panels (one for each tileset).
*/
private final List tilePanels = new ArrayList();
+ private final MapChangeListener listener = new MyMapChangeListener();
private final MapEditor mapEditor;
+ private Map map;
/**
* Constructor.
@@ -52,12 +52,19 @@
/**
* Sets the tiles panes to the the ones from this map.
*/
- public void setMap(Map currentMap) {
- if (currentMap == null) {
+ public void setMap(Map map) {
+ if (this.map != null) {
+ this.map.removeMapChangeListener(listener);
+ }
+
+ if (map == null) {
removeAll();
} else {
- recreateTabs(currentMap.getTilesets());
+ recreateTabs(map.getTilesets());
+ map.addMapChangeListener(listener);
}
+
+ this.map = map;
}
/**
@@ -80,19 +87,28 @@
{
TileSet tileset = (TileSet) it.next();
if (tileset != null) {
- TilePalettePanel tilePanel = new TilePalettePanel();
- tilePanel.setTileset(tileset);
- tilePanel.addTileSelectionListener(this);
- JScrollPane paletteScrollPane = new JScrollPane(tilePanel,
- JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- addTab(tileset.getName(), paletteScrollPane);
+ addTabForTileset(tileset);
}
}
}
}
/**
+ * Adds a tab with a {@link TilePalettePanel} for the given tileset.
+ *
+ * @param tileset the given tileset
+ */
+ private void addTabForTileset(TileSet tileset) {
+ TilePalettePanel tilePanel = new TilePalettePanel();
+ tilePanel.setTileset(tileset);
+ tilePanel.addTileSelectionListener(this);
+ JScrollPane paletteScrollPane = new JScrollPane(tilePanel,
+ JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+ JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ addTab(tileset.getName(), paletteScrollPane);
+ }
+
+ /**
* Informs the editor of the new tile.
*/
public void tileSelected(TileSelectionEvent e) {
@@ -106,4 +122,20 @@
public void tileRegionSelected(TileRegionSelectionEvent e) {
mapEditor.setBrush(new CustomBrush(e.getTileRegion()));
}
+
+ private class MyMapChangeListener implements MapChangeListener
+ {
+ public void mapChanged(MapChangedEvent e) {
+ }
+
+ public void tilesetAdded(MapChangedEvent e, TileSet tileset)
+ {
+ addTabForTileset(tileset);
+ }
+
+ public void tilesetRemoved(MapChangedEvent e, int index)
+ {
+ removeTabAt(index);
+ }
+ }
}
Modified: trunk/src/tiled/mapeditor/widget/TilePalettePanel.java
===================================================================
--- trunk/src/tiled/mapeditor/widget/TilePalettePanel.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/mapeditor/widget/TilePalettePanel.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -28,7 +28,8 @@
import tiled.mapeditor.util.TileSelectionListener;
/**
- * Displays a tileset and allows selecting a specific tile.
+ * Displays a tileset and allows selecting a specific tile as well as
+ * selecting several tiles for the creation of a stamp brush.
*
* @version $Id$
*/
Modified: trunk/src/tiled/view/MapView.java
===================================================================
--- trunk/src/tiled/view/MapView.java 2006-08-19 17:33:52 UTC (rev 695)
+++ trunk/src/tiled/view/MapView.java 2006-09-10 16:17:28 UTC (rev 696)
@@ -13,10 +13,9 @@
package tiled.view;
import java.awt.*;
-//import java.awt.geom.PathIterator;
import java.util.Iterator;
-import javax.swing.Scrollable;
import javax.swing.JPanel;
+import javax.swing.Scrollable;
import tiled.core.*;
import tiled.mapeditor.brush.Brush;
@@ -62,6 +61,7 @@
*/
protected MapView(Map map) {
this.map = map;
+ setOpaque(true);
}
public void toggleMode(int modeModifier) {
@@ -224,7 +224,7 @@
* @see SelectionLayer
*/
public void paintComponent(Graphics g) {
- Graphics2D g2d = (Graphics2D)g.create();
+ Graphics2D g2d = (Graphics2D) g.create();
MapLayer layer;
Rectangle clip = g2d.getClipBounds();
@@ -301,13 +301,9 @@
Iterator li = m.getLayers();
MapLayer layer;
- if (g2d == null) {
- g2d = (Graphics2D)getGraphics().create();
- g2d.setClip(getVisibleRect());
- }
-
while (li.hasNext()) {
- if ((layer = (MapLayer)li.next()) != null) {
+ layer = (MapLayer) li.next();
+ if (layer != null) {
float opacity = layer.getOpacity() * mapOpacity;
if (layer.isVisible() && opacity > 0.0f) {
if (opacity < 1.0f) {
More information about the tiled-commit
mailing list