[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