[tiled] r578 - in branches/bjorn/src/tiled/mapeditor: . dialogs

svn@biggeruniverse.com svn at biggeruniverse.com
Sat Feb 11 06:10:31 PST 2006


Author: bjorn
Date: 2006-02-11 08:10:30 -0600 (Sat, 11 Feb 2006)
New Revision: 578

Added:
   branches/bjorn/src/tiled/mapeditor/dialogs/BrushDialog.java
   branches/bjorn/src/tiled/mapeditor/dialogs/TilePaletteDialog.java
   branches/bjorn/src/tiled/mapeditor/dialogs/TilesetManager.java
Removed:
   branches/bjorn/src/tiled/mapeditor/BrushDialog.java
   branches/bjorn/src/tiled/mapeditor/TilePaletteDialog.java
   branches/bjorn/src/tiled/mapeditor/TilesetManager.java
Log:
Ok I guess these are indeed dialogs too.

Deleted: branches/bjorn/src/tiled/mapeditor/BrushDialog.java
===================================================================
--- branches/bjorn/src/tiled/mapeditor/BrushDialog.java	2006-02-11 13:44:22 UTC (rev 577)
+++ branches/bjorn/src/tiled/mapeditor/BrushDialog.java	2006-02-11 14:10:30 UTC (rev 578)
@@ -1,348 +0,0 @@
-/*
- *  Tiled Map Editor, (c) 2004-2006
- *
- *  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.
- *
- *  Adam Turk <aturk at biggeruniverse.com>
- *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
- */
-
-package tiled.mapeditor;
-
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import javax.swing.*;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import tiled.core.Tile;
-import tiled.io.MapHelper;
-import tiled.io.MapReader;
-import tiled.mapeditor.brush.*;
-import tiled.mapeditor.plugin.PluginClassLoader;
-import tiled.mapeditor.util.LayerTableModel;
-import tiled.mapeditor.util.TiledFileFilter;
-import tiled.mapeditor.widget.BrushBrowser;
-import tiled.mapeditor.widget.IntegerSpinner;
-import tiled.mapeditor.widget.MiniMapViewer;
-import tiled.mapeditor.widget.VerticalStaticJPanel;
-import tiled.util.TiledConfiguration;
-
-/**
- * @version $Id$
- */
-public class BrushDialog extends JDialog implements ActionListener,
-       ItemListener, ChangeListener, PropertyChangeListener,
-       ListSelectionListener
-{
-    private AbstractBrush myBrush;
-    private final MapEditor editor;
-
-    private JCheckBox cbRandomBrush;
-    private IntegerSpinner affectLayers, brushSize;
-    private JSlider sRandomAmount;
-    private JButton bOk, bApply, bCancel;
-    private BrushBrowser brushes;
-    private MiniMapViewer mmv;
-
-    public BrushDialog(MapEditor editor, JFrame parent,
-                       AbstractBrush currentBrush)
-    {
-        super(parent, "Brush Options", false);
-        myBrush = currentBrush;
-        this.editor = editor;
-
-        init();
-        update();
-        pack();
-
-        setLocationRelativeTo(parent);
-    }
-
-    private JPanel createShapePanel() {
-        // Brush presets
-        brushes = new BrushBrowser();
-        JScrollPane brushScrollPane = new JScrollPane(brushes);
-        brushScrollPane.setPreferredSize(new Dimension(100, 100));
-        brushes.addPropertyChangeListener(this);
-        brushes.setSelectedBrush(myBrush);
-
-        JPanel presets = new JPanel();
-        presets.setBorder(BorderFactory.createCompoundBorder(
-                    BorderFactory.createTitledBorder("Presets"),
-                    BorderFactory.createEmptyBorder(0, 5, 5, 5)));
-        presets.setLayout(new GridLayout(1, 1));
-        presets.add(brushScrollPane);
-
-        // Brush size
-        brushSize = new IntegerSpinner(1, 1);
-        if (myBrush != null) {
-            brushSize.setValue(myBrush.getBounds().width);
-        }
-        brushSize.addChangeListener(this);
-        brushSize.setToolTipText("Sets the size of the brush in tiles");
-
-        // Number of affected layers
-        affectLayers = new IntegerSpinner(myBrush.getAffectedLayers(), 1);
-        affectLayers.addChangeListener(this);
-
-        // Randomize tile placement
-        cbRandomBrush = new JCheckBox("Random");
-        cbRandomBrush.setToolTipText(
-                "Make brush paint randomly within the shape area");
-        cbRandomBrush.addItemListener(this);
-        sRandomAmount = new JSlider();
-        sRandomAmount.setPreferredSize(new Dimension(
-                    50, sRandomAmount.getPreferredSize().height));
-        sRandomAmount.setToolTipText(
-                "The amount of area to fill with randomness");
-        sRandomAmount.addChangeListener(this);
-
-        // Brush options section
-        JPanel opts = new VerticalStaticJPanel();
-        opts.setLayout(new GridBagLayout());
-        opts.setBorder(BorderFactory.createCompoundBorder(
-                    BorderFactory.createTitledBorder("Options"),
-                    BorderFactory.createEmptyBorder(0, 5, 5, 5)));
-        GridBagConstraints c = new GridBagConstraints();
-        c.fill = GridBagConstraints.NONE;
-        c.anchor = GridBagConstraints.NORTHWEST;
-        c.weightx = 0;
-        c.insets = new Insets(0, 0, 5, 0);
-        opts.add(new JLabel("Brush size: "), c);
-        c.gridy = 1;
-        opts.add(new JLabel("Affected layers: "), c);
-        c.gridy = 2;
-        opts.add(cbRandomBrush, c);
-        c.gridy = 0; c.gridx = 1; c.weightx = 0.3;
-        c.fill = GridBagConstraints.HORIZONTAL;
-        opts.add(brushSize, c);
-        c.gridy = 1;
-        opts.add(affectLayers, c);
-        c.gridy = 2;
-        opts.add(sRandomAmount, c);
-
-        JPanel shapePanel = new JPanel();
-        shapePanel.setLayout(new BoxLayout(shapePanel, BoxLayout.Y_AXIS));
-        shapePanel.add(presets);
-        shapePanel.add(opts);
-
-        return shapePanel;
-    }
-
-    private JPanel createCustomPanel() {
-        JPanel customPanel = new JPanel();
-
-        mmv = new MiniMapViewer();
-        if (myBrush instanceof CustomBrush) {
-            //mmv.setView(((CustomBrush)myBrush));
-        }
-
-        JScrollPane miniSp = new JScrollPane();
-        miniSp.getViewport().setView(mmv);
-        miniSp.setPreferredSize(new Dimension(100,100));
-        JButton bCreate = new JButton("Create...");
-        bCreate.addActionListener(this);
-        //TODO: create functionality is not available yet
-        bCreate.setEnabled(false);
-        JButton bLoad = new JButton("Load...");
-        bLoad.addActionListener(this);
-        JTable layerTable = new JTable(new LayerTableModel(myBrush));
-        layerTable.getColumnModel().getColumn(0).setPreferredWidth(32);
-        layerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        layerTable.getSelectionModel().addListSelectionListener(this);
-
-        customPanel.setLayout(new GridBagLayout());
-        GridBagConstraints c = new GridBagConstraints();
-        c.anchor = GridBagConstraints.NORTH;
-        c.fill = GridBagConstraints.NONE;
-        c.weightx = 2; c.weighty = 2;
-        customPanel.add(miniSp, c);
-        c.weightx = 1; c.weighty = 1;
-        c.gridx=2;
-        customPanel.add(bCreate, c);
-        c.gridy=1;
-        customPanel.add(bLoad, c);
-        c.gridx=0; c.gridy=2;
-        customPanel.add(layerTable, c);
-
-        return customPanel;
-    }
-
-    private void init() {
-        createCustomPanel();
-
-        bOk = new JButton("OK");
-        bApply = new JButton("Apply");
-        bCancel = new JButton("Cancel");
-        bOk.addActionListener(this);
-        bApply.addActionListener(this);
-        bCancel.addActionListener(this);
-        bApply.setEnabled(false);
-
-        /* BUTTONS PANEL */
-        JPanel buttons = new VerticalStaticJPanel();
-        buttons.setLayout(new BoxLayout(buttons, BoxLayout.X_AXIS));
-        buttons.add(Box.createGlue());
-        buttons.add(bOk);
-        buttons.add(Box.createRigidArea(new Dimension(5, 0)));
-        buttons.add(bApply);
-        buttons.add(Box.createRigidArea(new Dimension(5, 0)));
-        buttons.add(bCancel);
-
-        JPanel mainPanel = new JPanel();
-        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
-        mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-        mainPanel.add(createShapePanel());
-        mainPanel.add(Box.createRigidArea(new Dimension(0, 5)));
-        mainPanel.add(buttons);
-
-        getContentPane().add(mainPanel);
-        getRootPane().setDefaultButton(bOk);
-    }
-
-    private void createFromOptions() {
-        Tile t = null;
-
-        if (myBrush instanceof ShapeBrush) {
-            t = ((ShapeBrush)myBrush).getTile();
-        }
-
-        ShapeBrush sel = (ShapeBrush)brushes.getSelectedBrush();
-        sel.setSize(((Integer)brushSize.getValue()).intValue());
-
-        if (cbRandomBrush.isSelected()) {
-            RandomBrush randomBrush = new RandomBrush(sel);
-            randomBrush.setRatio(
-                    sRandomAmount.getValue() /
-                    (double)sRandomAmount.getMaximum());
-            myBrush = randomBrush;
-        } else {
-            myBrush = new ShapeBrush(sel);
-        }
-
-        ((ShapeBrush)myBrush).setTile(t);
-        myBrush.setAffectedLayers(
-                ((Integer)affectLayers.getValue()).intValue());
-
-        update();
-    }
-
-    private void update() {
-        if (myBrush instanceof CustomBrush) {  // Custom brush
-            brushSize.setEnabled(false);
-            affectLayers.setEnabled(false);
-            cbRandomBrush.setEnabled(false);
-        } else if (myBrush instanceof RandomBrush) {  // Random brush
-            cbRandomBrush.setSelected(true);
-            sRandomAmount.setValue(
-                    (int)(((RandomBrush)myBrush).getRatio() * 100));
-        }
-
-        sRandomAmount.setEnabled(cbRandomBrush.isSelected());
-    }
-
-    public void actionPerformed(ActionEvent e) {
-        Object source = e.getSource();
-
-        if (source == bOk) {
-            createFromOptions();
-            editor.setBrush(myBrush);
-            dispose();
-        }
-        else if (source == bApply) {
-            createFromOptions();
-            editor.setBrush(myBrush);
-            bApply.setEnabled(false);
-        }
-        else if (source == bCancel) {
-            dispose();
-        }
-        else if (e.getActionCommand().equals("Load...")) {
-            try {
-                openMap();
-                //mmv.setView(((CustomBrush)myBrush));
-            } catch (Exception e1) {
-                e1.printStackTrace();
-                JOptionPane.showMessageDialog(this,
-                        e1.toString(), "Load Brush",
-                        JOptionPane.WARNING_MESSAGE);
-            }
-            repaint();
-        }
-    }
-
-    public void stateChanged(ChangeEvent e) {
-        bApply.setEnabled(true);
-    }
-
-    public void itemStateChanged(ItemEvent event) {
-        Object source = event.getItemSelectable();
-
-        if (source == cbRandomBrush) {
-            sRandomAmount.setEnabled(cbRandomBrush.isSelected());
-        }
-
-        bApply.setEnabled(true);
-    }
-
-    public void propertyChange(PropertyChangeEvent evt) {
-        if (evt.getPropertyName().equals("selectedbrush")) {
-            Brush b = brushes.getSelectedBrush();
-            if (b != null) {
-                brushSize.setValue(b.getBounds().width);
-            }
-        }
-
-        bApply.setEnabled(true);
-    }
-
-    public void valueChanged(ListSelectionEvent e) {
-        // TODO Auto-generated method stub
-    }
-
-    private void openMap() throws Exception {
-        String startLocation = "";
-        TiledConfiguration configuration = TiledConfiguration.getInstance();
-
-        // Start at the location of the most recently loaded map file
-        if (configuration.hasOption("tiled.recent.1")) {
-            startLocation = configuration.getValue("tiled.recent.1");
-        }
-
-        JFileChooser ch = new JFileChooser(startLocation);
-
-        try {
-            MapReader[] readers = PluginClassLoader.getInstance().getReaders();
-            for(int i = 0; i < readers.length; i++) {
-                ch.addChoosableFileFilter(new TiledFileFilter(
-                            readers[i].getFilter(), readers[i].getName()));
-            }
-        } catch (Throwable e) {
-            JOptionPane.showMessageDialog(this,
-                    "Error while loading plugins: " + e.getMessage(),
-                    "Error while loading map",
-                    JOptionPane.ERROR_MESSAGE);
-            e.printStackTrace();
-        }
-
-        ch.addChoosableFileFilter(
-                new TiledFileFilter(TiledFileFilter.FILTER_TMX));
-
-        int ret = ch.showOpenDialog(this);
-        if (ret == JFileChooser.APPROVE_OPTION) {
-            myBrush = new CustomBrush(
-                    MapHelper.loadMap(ch.getSelectedFile().getAbsolutePath()));
-        }
-    }
-}

Deleted: branches/bjorn/src/tiled/mapeditor/TilePaletteDialog.java
===================================================================
--- branches/bjorn/src/tiled/mapeditor/TilePaletteDialog.java	2006-02-11 13:44:22 UTC (rev 577)
+++ branches/bjorn/src/tiled/mapeditor/TilePaletteDialog.java	2006-02-11 14:10:30 UTC (rev 578)
@@ -1,104 +0,0 @@
-/*
- *  Tiled Map Editor, (c) 2004-2006
- *
- *  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.
- * 
- *  Adam Turk <aturk at biggeruniverse.com>
- *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
- */
-
-package tiled.mapeditor;
-
-import java.awt.event.*;
-import java.awt.*;
-import java.util.Vector;
-import javax.swing.*;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import tiled.core.*;
-import tiled.mapeditor.util.*;
-import tiled.mapeditor.widget.*;
-
-
-public class TilePaletteDialog extends JDialog implements ActionListener,
-    TileSelectionListener, ListSelectionListener
-{
-    private final MapEditor editor;
-    private Map currentMap;
-    private TilePalettePanel pc;
-    private JList sets;
-    private Tile currentTile;
-
-    public TilePaletteDialog(MapEditor editor, Map map) {
-        super(editor.getAppFrame(), "Palette", false);
-        this.editor = editor;
-        init();
-        setMap(map);
-        setSize(new Dimension(300, 200));
-        setLocationRelativeTo(getOwner());
-        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
-    }
-
-    public void setMap(Map map) {
-        Vector tilesets = new Vector();
-        currentMap = map;
-        if (currentMap != null) {
-            tilesets = currentMap.getTilesets();
-        }
-        pc.setTilesets(tilesets);
-        sets.setListData(tilesets);
-    }
-
-    private void init() {
-        sets = new JList();
-        //TODO: the full functionality for multiple sets is not yet available.
-        //sets.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
-        sets.addListSelectionListener(this);
-        JScrollPane setsSp = new JScrollPane(sets);
-
-        pc = new TilePalettePanel();
-        pc.addTileSelectionListener(this);
-        JScrollPane paletteScrollPane = new JScrollPane(pc,
-                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
-                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
-
-        JSplitPane splitPane = new JSplitPane(
-                JSplitPane.HORIZONTAL_SPLIT, true);
-        splitPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
-        splitPane.setResizeWeight(0.75);
-        splitPane.setLeftComponent(paletteScrollPane);
-        splitPane.setRightComponent(setsSp);
-
-        JPanel mainPanel = new JPanel(new GridBagLayout());
-        GridBagConstraints c = new GridBagConstraints();
-        c.fill = GridBagConstraints.BOTH;
-        c.weightx = 1; c.weighty = 1;
-        mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-        mainPanel.add(splitPane, c);
-
-        getContentPane().add(mainPanel);
-    }
-
-    public void actionPerformed(ActionEvent e) {
-    }
-
-    public void tileSelected(TileSelectionEvent event) {
-        Tile tile = event.getTile();
-        if (tile != null) {
-            editor.setCurrentTile(tile);
-        }
-    }
-
-    public void valueChanged(ListSelectionEvent e) {
-        Vector add = new Vector();
-        Object[] setlist = sets.getSelectedValues();
-        for (int i = 0; i < setlist.length; i++) {
-            add.add(setlist[i]);
-        }
-        pc.setTilesets(add);
-    }
-}

Deleted: branches/bjorn/src/tiled/mapeditor/TilesetManager.java
===================================================================
--- branches/bjorn/src/tiled/mapeditor/TilesetManager.java	2006-02-11 13:44:22 UTC (rev 577)
+++ branches/bjorn/src/tiled/mapeditor/TilesetManager.java	2006-02-11 14:10:30 UTC (rev 578)
@@ -1,234 +0,0 @@
-/*
- *  Tiled Map Editor, (c) 2004-2006
- *
- *  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.
- *
- *  Adam Turk <aturk at biggeruniverse.com>
- *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
- *  Rainer Deyke <rainerd at eldwood.com>
- */
-
-package tiled.mapeditor;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.io.File;
-import java.util.Iterator;
-import java.util.Vector;
-import javax.swing.*;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import tiled.core.*;
-import tiled.io.MapHelper;
-import tiled.io.MapWriter;
-import tiled.mapeditor.dialogs.TileDialog;
-import tiled.mapeditor.util.*;
-import tiled.mapeditor.plugin.PluginClassLoader;
-
-
-public class TilesetManager extends JDialog implements ActionListener,
-       ListSelectionListener
-{
-    private final Map map;
-
-    private JButton saveAsButton, saveButton, embedButton;
-    private JButton removeButton, editButton, closeButton;
-    private JTable tilesetTable;
-
-    public TilesetManager(JFrame parent, Map map) {
-        super(parent, "Tileset Manager", true);
-        this.map = map;
-        init();
-        pack();
-        setLocationRelativeTo(getOwner());
-    }
-
-    private void init() {
-        // Create the tileset table
-        tilesetTable = new JTable(new TilesetTableModel(map));
-        tilesetTable.getSelectionModel().addListSelectionListener(this);
-        JScrollPane tilesetScrollPane = new JScrollPane(tilesetTable);
-        tilesetScrollPane.setPreferredSize(new Dimension(360, 150));
-
-        // Create the buttons
-        saveButton = new JButton("Save");
-        editButton = new JButton("Edit...");
-        saveAsButton = new JButton("Save as...");
-        embedButton = new JButton("Embed");
-        removeButton = new JButton("Remove");
-        closeButton = new JButton("Close");
-
-        saveAsButton.addActionListener(this);
-        saveButton.addActionListener(this);
-        embedButton.addActionListener(this);
-        removeButton.addActionListener(this);
-        editButton.addActionListener(this);
-        closeButton.addActionListener(this);
-
-        // Create the main panel
-        JPanel mainPanel = new JPanel(new GridBagLayout());
-        mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-        GridBagConstraints c = new GridBagConstraints();
-        c.fill = GridBagConstraints.BOTH;
-        c.gridy = 0;
-        c.gridwidth = 7;
-        c.gridheight = 1;
-        c.weightx = 1;
-        c.weighty = 1;
-        mainPanel.add(tilesetScrollPane, c);
-        c.insets = new Insets(5, 0, 0, 5);
-        c.gridy = 1;
-        c.weighty = 0;
-        c.weightx = 0;
-        c.gridwidth = 1;
-        mainPanel.add(saveButton, c);
-        mainPanel.add(saveAsButton, c);
-        mainPanel.add(embedButton, c);
-        mainPanel.add(removeButton, c);
-        mainPanel.add(editButton, c);
-        c.weightx = 1;
-        mainPanel.add(Box.createGlue(), c);
-        c.weightx = 0;
-        c.insets = new Insets(5, 0, 0, 0);
-        mainPanel.add(closeButton, c);
-
-        getContentPane().add(mainPanel);
-        getRootPane().setDefaultButton(closeButton);
-
-        tilesetTable.changeSelection(0, 0, false, false);
-    }
-
-    public void actionPerformed(ActionEvent event) {
-        String command = event.getActionCommand();
-        int selectedRow = tilesetTable.getSelectedRow();
-        Vector tilesets = map.getTilesets();
-        TileSet set = null;
-        try {
-            set = (TileSet)tilesets.get(selectedRow);
-        } catch (IndexOutOfBoundsException e) {
-        }
-
-
-        if (command.equals("Close")) {
-            dispose();
-        } else if (command.equals("Edit...")) {
-            if (map != null && selectedRow >= 0) {
-                TileDialog tileDialog = new TileDialog(this, set);
-                tileDialog.setVisible(true);
-            }
-        } else if (command.equals("Remove")) {
-            try {
-                if (checkSetUsage(set) > 0) {
-                    int ret = JOptionPane.showConfirmDialog(this,
-                            "This tileset is currently in use. " +
-                            "Are you sure you wish to remove it?",
-                            "Sure?", JOptionPane.YES_NO_CANCEL_OPTION);
-                    if (ret == JOptionPane.YES_OPTION) {
-                        map.removeTileset(set);
-                        updateTilesetTable();
-                    }
-                } else {
-                    map.removeTileset(set);
-                    updateTilesetTable();
-                }
-            } catch (ArrayIndexOutOfBoundsException a) {
-            } catch (Exception e) {
-                JOptionPane.showMessageDialog(this, e.getMessage());
-            }
-        } else if (command.equals("Save as...")) {
-            JFileChooser ch = new JFileChooser(map.getFilename());
-
-            MapWriter writers[] = PluginClassLoader.getInstance().getWriters();
-            for (int i = 0; i < writers.length; i++) {
-                try {
-                    ch.addChoosableFileFilter(new TiledFileFilter(
-                                writers[i].getFilter(), writers[i].getName()));
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            ch.addChoosableFileFilter
-              (new TiledFileFilter(TiledFileFilter.FILTER_TSX));
-            int ret = ch.showSaveDialog(this);
-            if (ret == JFileChooser.APPROVE_OPTION) {
-                String filename = ch.getSelectedFile().getAbsolutePath();
-                File exist = new File(filename);
-
-                if ((exist.exists()
-                      && JOptionPane.showConfirmDialog(this,
-                        "The file already exists. Do you wish to overwrite it?"
-                        ) == JOptionPane.OK_OPTION)
-                    || !exist.exists()) {
-                    try {
-                        MapHelper.saveTileset(set, filename);
-                        set.setSource(filename);
-                        embedButton.setEnabled(true);
-                        saveButton.setEnabled(true);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-        } else if (command.equals("Save")) {
-            try {
-                MapHelper.saveTileset(set, set.getSource());
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } else if (command.equals("Embed")) {
-            set.setSource(null);
-            embedButton.setEnabled(false);
-            saveButton.setEnabled(false);
-        } else {
-            System.out.println("Unimplemented command: " + command);
-        }
-    }
-
-    private void updateTilesetTable() {
-        ((TilesetTableModel)tilesetTable.getModel()).setMap(map);
-        tilesetTable.repaint();
-    }
-
-    private int checkSetUsage(TileSet s) {
-        int used = 0;
-        Iterator tileIterator = s.iterator();
-
-        while (tileIterator.hasNext()) {
-            Tile tile = (Tile)tileIterator.next();
-            Iterator layerIterator = map.getLayers();
-
-            while (layerIterator.hasNext()) {
-                MapLayer ml = (MapLayer)layerIterator.next();
-                if (ml.isUsed(tile)) {
-                    used++;
-                    break;
-                }
-            }
-        }
-
-        return used;
-    }
-
-    public void valueChanged(ListSelectionEvent event) {
-        updateButtons();
-    }
-
-    private void updateButtons() {
-        int selectedRow = tilesetTable.getSelectedRow();
-        Vector tilesets = map.getTilesets();
-        TileSet set = null;
-        try {
-            set = (TileSet)tilesets.get(selectedRow);
-        } catch (IndexOutOfBoundsException e) {
-        }
-
-        editButton.setEnabled(set != null);
-        removeButton.setEnabled(set != null);
-        saveButton.setEnabled(set != null && set.getSource() != null);
-        embedButton.setEnabled(set != null && set.getSource() != null);
-    }
-}

Copied: branches/bjorn/src/tiled/mapeditor/dialogs/BrushDialog.java (from rev 575, branches/bjorn/src/tiled/mapeditor/BrushDialog.java)
===================================================================
--- branches/bjorn/src/tiled/mapeditor/BrushDialog.java	2006-02-11 12:37:18 UTC (rev 575)
+++ branches/bjorn/src/tiled/mapeditor/dialogs/BrushDialog.java	2006-02-11 14:10:30 UTC (rev 578)
@@ -0,0 +1,349 @@
+/*
+ *  Tiled Map Editor, (c) 2004-2006
+ *
+ *  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.
+ *
+ *  Adam Turk <aturk at biggeruniverse.com>
+ *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
+ */
+
+package tiled.mapeditor.dialogs;
+
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import tiled.core.Tile;
+import tiled.io.MapHelper;
+import tiled.io.MapReader;
+import tiled.mapeditor.brush.*;
+import tiled.mapeditor.plugin.PluginClassLoader;
+import tiled.mapeditor.util.LayerTableModel;
+import tiled.mapeditor.util.TiledFileFilter;
+import tiled.mapeditor.widget.BrushBrowser;
+import tiled.mapeditor.widget.IntegerSpinner;
+import tiled.mapeditor.widget.MiniMapViewer;
+import tiled.mapeditor.widget.VerticalStaticJPanel;
+import tiled.mapeditor.MapEditor;
+import tiled.util.TiledConfiguration;
+
+/**
+ * @version $Id$
+ */
+public class BrushDialog extends JDialog implements ActionListener,
+       ItemListener, ChangeListener, PropertyChangeListener,
+       ListSelectionListener
+{
+    private AbstractBrush myBrush;
+    private final MapEditor editor;
+
+    private JCheckBox cbRandomBrush;
+    private IntegerSpinner affectLayers, brushSize;
+    private JSlider sRandomAmount;
+    private JButton bOk, bApply, bCancel;
+    private BrushBrowser brushes;
+    private MiniMapViewer mmv;
+
+    public BrushDialog(MapEditor editor, JFrame parent,
+                       AbstractBrush currentBrush)
+    {
+        super(parent, "Brush Options", false);
+        myBrush = currentBrush;
+        this.editor = editor;
+
+        init();
+        update();
+        pack();
+
+        setLocationRelativeTo(parent);
+    }
+
+    private JPanel createShapePanel() {
+        // Brush presets
+        brushes = new BrushBrowser();
+        JScrollPane brushScrollPane = new JScrollPane(brushes);
+        brushScrollPane.setPreferredSize(new Dimension(100, 100));
+        brushes.addPropertyChangeListener(this);
+        brushes.setSelectedBrush(myBrush);
+
+        JPanel presets = new JPanel();
+        presets.setBorder(BorderFactory.createCompoundBorder(
+                    BorderFactory.createTitledBorder("Presets"),
+                    BorderFactory.createEmptyBorder(0, 5, 5, 5)));
+        presets.setLayout(new GridLayout(1, 1));
+        presets.add(brushScrollPane);
+
+        // Brush size
+        brushSize = new IntegerSpinner(1, 1);
+        if (myBrush != null) {
+            brushSize.setValue(myBrush.getBounds().width);
+        }
+        brushSize.addChangeListener(this);
+        brushSize.setToolTipText("Sets the size of the brush in tiles");
+
+        // Number of affected layers
+        affectLayers = new IntegerSpinner(myBrush.getAffectedLayers(), 1);
+        affectLayers.addChangeListener(this);
+
+        // Randomize tile placement
+        cbRandomBrush = new JCheckBox("Random");
+        cbRandomBrush.setToolTipText(
+                "Make brush paint randomly within the shape area");
+        cbRandomBrush.addItemListener(this);
+        sRandomAmount = new JSlider();
+        sRandomAmount.setPreferredSize(new Dimension(
+                    50, sRandomAmount.getPreferredSize().height));
+        sRandomAmount.setToolTipText(
+                "The amount of area to fill with randomness");
+        sRandomAmount.addChangeListener(this);
+
+        // Brush options section
+        JPanel opts = new VerticalStaticJPanel();
+        opts.setLayout(new GridBagLayout());
+        opts.setBorder(BorderFactory.createCompoundBorder(
+                    BorderFactory.createTitledBorder("Options"),
+                    BorderFactory.createEmptyBorder(0, 5, 5, 5)));
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.NONE;
+        c.anchor = GridBagConstraints.NORTHWEST;
+        c.weightx = 0;
+        c.insets = new Insets(0, 0, 5, 0);
+        opts.add(new JLabel("Brush size: "), c);
+        c.gridy = 1;
+        opts.add(new JLabel("Affected layers: "), c);
+        c.gridy = 2;
+        opts.add(cbRandomBrush, c);
+        c.gridy = 0; c.gridx = 1; c.weightx = 0.3;
+        c.fill = GridBagConstraints.HORIZONTAL;
+        opts.add(brushSize, c);
+        c.gridy = 1;
+        opts.add(affectLayers, c);
+        c.gridy = 2;
+        opts.add(sRandomAmount, c);
+
+        JPanel shapePanel = new JPanel();
+        shapePanel.setLayout(new BoxLayout(shapePanel, BoxLayout.Y_AXIS));
+        shapePanel.add(presets);
+        shapePanel.add(opts);
+
+        return shapePanel;
+    }
+
+    private JPanel createCustomPanel() {
+        JPanel customPanel = new JPanel();
+
+        mmv = new MiniMapViewer();
+        if (myBrush instanceof CustomBrush) {
+            //mmv.setView(((CustomBrush)myBrush));
+        }
+
+        JScrollPane miniSp = new JScrollPane();
+        miniSp.getViewport().setView(mmv);
+        miniSp.setPreferredSize(new Dimension(100,100));
+        JButton bCreate = new JButton("Create...");
+        bCreate.addActionListener(this);
+        //TODO: create functionality is not available yet
+        bCreate.setEnabled(false);
+        JButton bLoad = new JButton("Load...");
+        bLoad.addActionListener(this);
+        JTable layerTable = new JTable(new LayerTableModel(myBrush));
+        layerTable.getColumnModel().getColumn(0).setPreferredWidth(32);
+        layerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        layerTable.getSelectionModel().addListSelectionListener(this);
+
+        customPanel.setLayout(new GridBagLayout());
+        GridBagConstraints c = new GridBagConstraints();
+        c.anchor = GridBagConstraints.NORTH;
+        c.fill = GridBagConstraints.NONE;
+        c.weightx = 2; c.weighty = 2;
+        customPanel.add(miniSp, c);
+        c.weightx = 1; c.weighty = 1;
+        c.gridx=2;
+        customPanel.add(bCreate, c);
+        c.gridy=1;
+        customPanel.add(bLoad, c);
+        c.gridx=0; c.gridy=2;
+        customPanel.add(layerTable, c);
+
+        return customPanel;
+    }
+
+    private void init() {
+        createCustomPanel();
+
+        bOk = new JButton("OK");
+        bApply = new JButton("Apply");
+        bCancel = new JButton("Cancel");
+        bOk.addActionListener(this);
+        bApply.addActionListener(this);
+        bCancel.addActionListener(this);
+        bApply.setEnabled(false);
+
+        /* BUTTONS PANEL */
+        JPanel buttons = new VerticalStaticJPanel();
+        buttons.setLayout(new BoxLayout(buttons, BoxLayout.X_AXIS));
+        buttons.add(Box.createGlue());
+        buttons.add(bOk);
+        buttons.add(Box.createRigidArea(new Dimension(5, 0)));
+        buttons.add(bApply);
+        buttons.add(Box.createRigidArea(new Dimension(5, 0)));
+        buttons.add(bCancel);
+
+        JPanel mainPanel = new JPanel();
+        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
+        mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        mainPanel.add(createShapePanel());
+        mainPanel.add(Box.createRigidArea(new Dimension(0, 5)));
+        mainPanel.add(buttons);
+
+        getContentPane().add(mainPanel);
+        getRootPane().setDefaultButton(bOk);
+    }
+
+    private void createFromOptions() {
+        Tile t = null;
+
+        if (myBrush instanceof ShapeBrush) {
+            t = ((ShapeBrush)myBrush).getTile();
+        }
+
+        ShapeBrush sel = (ShapeBrush)brushes.getSelectedBrush();
+        sel.setSize(((Integer)brushSize.getValue()).intValue());
+
+        if (cbRandomBrush.isSelected()) {
+            RandomBrush randomBrush = new RandomBrush(sel);
+            randomBrush.setRatio(
+                    sRandomAmount.getValue() /
+                    (double)sRandomAmount.getMaximum());
+            myBrush = randomBrush;
+        } else {
+            myBrush = new ShapeBrush(sel);
+        }
+
+        ((ShapeBrush)myBrush).setTile(t);
+        myBrush.setAffectedLayers(
+                ((Integer)affectLayers.getValue()).intValue());
+
+        update();
+    }
+
+    private void update() {
+        if (myBrush instanceof CustomBrush) {  // Custom brush
+            brushSize.setEnabled(false);
+            affectLayers.setEnabled(false);
+            cbRandomBrush.setEnabled(false);
+        } else if (myBrush instanceof RandomBrush) {  // Random brush
+            cbRandomBrush.setSelected(true);
+            sRandomAmount.setValue(
+                    (int)(((RandomBrush)myBrush).getRatio() * 100));
+        }
+
+        sRandomAmount.setEnabled(cbRandomBrush.isSelected());
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        Object source = e.getSource();
+
+        if (source == bOk) {
+            createFromOptions();
+            editor.setBrush(myBrush);
+            dispose();
+        }
+        else if (source == bApply) {
+            createFromOptions();
+            editor.setBrush(myBrush);
+            bApply.setEnabled(false);
+        }
+        else if (source == bCancel) {
+            dispose();
+        }
+        else if (e.getActionCommand().equals("Load...")) {
+            try {
+                openMap();
+                //mmv.setView(((CustomBrush)myBrush));
+            } catch (Exception e1) {
+                e1.printStackTrace();
+                JOptionPane.showMessageDialog(this,
+                        e1.toString(), "Load Brush",
+                        JOptionPane.WARNING_MESSAGE);
+            }
+            repaint();
+        }
+    }
+
+    public void stateChanged(ChangeEvent e) {
+        bApply.setEnabled(true);
+    }
+
+    public void itemStateChanged(ItemEvent event) {
+        Object source = event.getItemSelectable();
+
+        if (source == cbRandomBrush) {
+            sRandomAmount.setEnabled(cbRandomBrush.isSelected());
+        }
+
+        bApply.setEnabled(true);
+    }
+
+    public void propertyChange(PropertyChangeEvent evt) {
+        if (evt.getPropertyName().equals("selectedbrush")) {
+            Brush b = brushes.getSelectedBrush();
+            if (b != null) {
+                brushSize.setValue(b.getBounds().width);
+            }
+        }
+
+        bApply.setEnabled(true);
+    }
+
+    public void valueChanged(ListSelectionEvent e) {
+        // TODO Auto-generated method stub
+    }
+
+    private void openMap() throws Exception {
+        String startLocation = "";
+        TiledConfiguration configuration = TiledConfiguration.getInstance();
+
+        // Start at the location of the most recently loaded map file
+        if (configuration.hasOption("tiled.recent.1")) {
+            startLocation = configuration.getValue("tiled.recent.1");
+        }
+
+        JFileChooser ch = new JFileChooser(startLocation);
+
+        try {
+            MapReader[] readers = PluginClassLoader.getInstance().getReaders();
+            for(int i = 0; i < readers.length; i++) {
+                ch.addChoosableFileFilter(new TiledFileFilter(
+                            readers[i].getFilter(), readers[i].getName()));
+            }
+        } catch (Throwable e) {
+            JOptionPane.showMessageDialog(this,
+                    "Error while loading plugins: " + e.getMessage(),
+                    "Error while loading map",
+                    JOptionPane.ERROR_MESSAGE);
+            e.printStackTrace();
+        }
+
+        ch.addChoosableFileFilter(
+                new TiledFileFilter(TiledFileFilter.FILTER_TMX));
+
+        int ret = ch.showOpenDialog(this);
+        if (ret == JFileChooser.APPROVE_OPTION) {
+            myBrush = new CustomBrush(
+                    MapHelper.loadMap(ch.getSelectedFile().getAbsolutePath()));
+        }
+    }
+}


Property changes on: branches/bjorn/src/tiled/mapeditor/dialogs/BrushDialog.java
___________________________________________________________________
Name: svn:keywords
   + Id

Copied: branches/bjorn/src/tiled/mapeditor/dialogs/TilePaletteDialog.java (from rev 575, branches/bjorn/src/tiled/mapeditor/TilePaletteDialog.java)
===================================================================
--- branches/bjorn/src/tiled/mapeditor/TilePaletteDialog.java	2006-02-11 12:37:18 UTC (rev 575)
+++ branches/bjorn/src/tiled/mapeditor/dialogs/TilePaletteDialog.java	2006-02-11 14:10:30 UTC (rev 578)
@@ -0,0 +1,104 @@
+/*
+ *  Tiled Map Editor, (c) 2004-2006
+ *
+ *  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.
+ * 
+ *  Adam Turk <aturk at biggeruniverse.com>
+ *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
+ */
+
+package tiled.mapeditor.dialogs;
+
+import java.awt.event.*;
+import java.awt.*;
+import java.util.Vector;
+import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import tiled.core.*;
+import tiled.mapeditor.util.*;
+import tiled.mapeditor.widget.*;
+import tiled.mapeditor.MapEditor;
+
+public class TilePaletteDialog extends JDialog implements ActionListener,
+    TileSelectionListener, ListSelectionListener
+{
+    private final MapEditor editor;
+    private Map currentMap;
+    private TilePalettePanel pc;
+    private JList sets;
+    private Tile currentTile;
+
+    public TilePaletteDialog(MapEditor editor, Map map) {
+        super(editor.getAppFrame(), "Palette", false);
+        this.editor = editor;
+        init();
+        setMap(map);
+        setSize(new Dimension(300, 200));
+        setLocationRelativeTo(getOwner());
+        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+    }
+
+    public void setMap(Map map) {
+        Vector tilesets = new Vector();
+        currentMap = map;
+        if (currentMap != null) {
+            tilesets = currentMap.getTilesets();
+        }
+        pc.setTilesets(tilesets);
+        sets.setListData(tilesets);
+    }
+
+    private void init() {
+        sets = new JList();
+        //TODO: the full functionality for multiple sets is not yet available.
+        //sets.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+        sets.addListSelectionListener(this);
+        JScrollPane setsSp = new JScrollPane(sets);
+
+        pc = new TilePalettePanel();
+        pc.addTileSelectionListener(this);
+        JScrollPane paletteScrollPane = new JScrollPane(pc,
+                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+
+        JSplitPane splitPane = new JSplitPane(
+                JSplitPane.HORIZONTAL_SPLIT, true);
+        splitPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
+        splitPane.setResizeWeight(0.75);
+        splitPane.setLeftComponent(paletteScrollPane);
+        splitPane.setRightComponent(setsSp);
+
+        JPanel mainPanel = new JPanel(new GridBagLayout());
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.BOTH;
+        c.weightx = 1; c.weighty = 1;
+        mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        mainPanel.add(splitPane, c);
+
+        getContentPane().add(mainPanel);
+    }
+
+    public void actionPerformed(ActionEvent e) {
+    }
+
+    public void tileSelected(TileSelectionEvent event) {
+        Tile tile = event.getTile();
+        if (tile != null) {
+            editor.setCurrentTile(tile);
+        }
+    }
+
+    public void valueChanged(ListSelectionEvent e) {
+        Vector add = new Vector();
+        Object[] setlist = sets.getSelectedValues();
+        for (int i = 0; i < setlist.length; i++) {
+            add.add(setlist[i]);
+        }
+        pc.setTilesets(add);
+    }
+}


Property changes on: branches/bjorn/src/tiled/mapeditor/dialogs/TilePaletteDialog.java
___________________________________________________________________
Name: svn:keywords
   + Id

Copied: branches/bjorn/src/tiled/mapeditor/dialogs/TilesetManager.java (from rev 575, branches/bjorn/src/tiled/mapeditor/TilesetManager.java)
===================================================================
--- branches/bjorn/src/tiled/mapeditor/TilesetManager.java	2006-02-11 12:37:18 UTC (rev 575)
+++ branches/bjorn/src/tiled/mapeditor/dialogs/TilesetManager.java	2006-02-11 14:10:30 UTC (rev 578)
@@ -0,0 +1,233 @@
+/*
+ *  Tiled Map Editor, (c) 2004-2006
+ *
+ *  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.
+ *
+ *  Adam Turk <aturk at biggeruniverse.com>
+ *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
+ *  Rainer Deyke <rainerd at eldwood.com>
+ */
+
+package tiled.mapeditor.dialogs;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.io.File;
+import java.util.Iterator;
+import java.util.Vector;
+import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import tiled.core.*;
+import tiled.io.MapHelper;
+import tiled.io.MapWriter;
+import tiled.mapeditor.dialogs.TileDialog;
+import tiled.mapeditor.util.*;
+import tiled.mapeditor.plugin.PluginClassLoader;
+
+public class TilesetManager extends JDialog implements ActionListener,
+       ListSelectionListener
+{
+    private final Map map;
+
+    private JButton saveAsButton, saveButton, embedButton;
+    private JButton removeButton, editButton, closeButton;
+    private JTable tilesetTable;
+
+    public TilesetManager(JFrame parent, Map map) {
+        super(parent, "Tileset Manager", true);
+        this.map = map;
+        init();
+        pack();
+        setLocationRelativeTo(getOwner());
+    }
+
+    private void init() {
+        // Create the tileset table
+        tilesetTable = new JTable(new TilesetTableModel(map));
+        tilesetTable.getSelectionModel().addListSelectionListener(this);
+        JScrollPane tilesetScrollPane = new JScrollPane(tilesetTable);
+        tilesetScrollPane.setPreferredSize(new Dimension(360, 150));
+
+        // Create the buttons
+        saveButton = new JButton("Save");
+        editButton = new JButton("Edit...");
+        saveAsButton = new JButton("Save as...");
+        embedButton = new JButton("Embed");
+        removeButton = new JButton("Remove");
+        closeButton = new JButton("Close");
+
+        saveAsButton.addActionListener(this);
+        saveButton.addActionListener(this);
+        embedButton.addActionListener(this);
+        removeButton.addActionListener(this);
+        editButton.addActionListener(this);
+        closeButton.addActionListener(this);
+
+        // Create the main panel
+        JPanel mainPanel = new JPanel(new GridBagLayout());
+        mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.BOTH;
+        c.gridy = 0;
+        c.gridwidth = 7;
+        c.gridheight = 1;
+        c.weightx = 1;
+        c.weighty = 1;
+        mainPanel.add(tilesetScrollPane, c);
+        c.insets = new Insets(5, 0, 0, 5);
+        c.gridy = 1;
+        c.weighty = 0;
+        c.weightx = 0;
+        c.gridwidth = 1;
+        mainPanel.add(saveButton, c);
+        mainPanel.add(saveAsButton, c);
+        mainPanel.add(embedButton, c);
+        mainPanel.add(removeButton, c);
+        mainPanel.add(editButton, c);
+        c.weightx = 1;
+        mainPanel.add(Box.createGlue(), c);
+        c.weightx = 0;
+        c.insets = new Insets(5, 0, 0, 0);
+        mainPanel.add(closeButton, c);
+
+        getContentPane().add(mainPanel);
+        getRootPane().setDefaultButton(closeButton);
+
+        tilesetTable.changeSelection(0, 0, false, false);
+    }
+
+    public void actionPerformed(ActionEvent event) {
+        String command = event.getActionCommand();
+        int selectedRow = tilesetTable.getSelectedRow();
+        Vector tilesets = map.getTilesets();
+        TileSet set = null;
+        try {
+            set = (TileSet)tilesets.get(selectedRow);
+        } catch (IndexOutOfBoundsException e) {
+        }
+
+
+        if (command.equals("Close")) {
+            dispose();
+        } else if (command.equals("Edit...")) {
+            if (map != null && selectedRow >= 0) {
+                TileDialog tileDialog = new TileDialog(this, set);
+                tileDialog.setVisible(true);
+            }
+        } else if (command.equals("Remove")) {
+            try {
+                if (checkSetUsage(set) > 0) {
+                    int ret = JOptionPane.showConfirmDialog(this,
+                            "This tileset is currently in use. " +
+                            "Are you sure you wish to remove it?",
+                            "Sure?", JOptionPane.YES_NO_CANCEL_OPTION);
+                    if (ret == JOptionPane.YES_OPTION) {
+                        map.removeTileset(set);
+                        updateTilesetTable();
+                    }
+                } else {
+                    map.removeTileset(set);
+                    updateTilesetTable();
+                }
+            } catch (ArrayIndexOutOfBoundsException a) {
+            } catch (Exception e) {
+                JOptionPane.showMessageDialog(this, e.getMessage());
+            }
+        } else if (command.equals("Save as...")) {
+            JFileChooser ch = new JFileChooser(map.getFilename());
+
+            MapWriter writers[] = PluginClassLoader.getInstance().getWriters();
+            for (int i = 0; i < writers.length; i++) {
+                try {
+                    ch.addChoosableFileFilter(new TiledFileFilter(
+                                writers[i].getFilter(), writers[i].getName()));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            ch.addChoosableFileFilter
+              (new TiledFileFilter(TiledFileFilter.FILTER_TSX));
+            int ret = ch.showSaveDialog(this);
+            if (ret == JFileChooser.APPROVE_OPTION) {
+                String filename = ch.getSelectedFile().getAbsolutePath();
+                File exist = new File(filename);
+
+                if ((exist.exists()
+                      && JOptionPane.showConfirmDialog(this,
+                        "The file already exists. Do you wish to overwrite it?"
+                        ) == JOptionPane.OK_OPTION)
+                    || !exist.exists()) {
+                    try {
+                        MapHelper.saveTileset(set, filename);
+                        set.setSource(filename);
+                        embedButton.setEnabled(true);
+                        saveButton.setEnabled(true);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        } else if (command.equals("Save")) {
+            try {
+                MapHelper.saveTileset(set, set.getSource());
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else if (command.equals("Embed")) {
+            set.setSource(null);
+            embedButton.setEnabled(false);
+            saveButton.setEnabled(false);
+        } else {
+            System.out.println("Unimplemented command: " + command);
+        }
+    }
+
+    private void updateTilesetTable() {
+        ((TilesetTableModel)tilesetTable.getModel()).setMap(map);
+        tilesetTable.repaint();
+    }
+
+    private int checkSetUsage(TileSet s) {
+        int used = 0;
+        Iterator tileIterator = s.iterator();
+
+        while (tileIterator.hasNext()) {
+            Tile tile = (Tile)tileIterator.next();
+            Iterator layerIterator = map.getLayers();
+
+            while (layerIterator.hasNext()) {
+                MapLayer ml = (MapLayer)layerIterator.next();
+                if (ml.isUsed(tile)) {
+                    used++;
+                    break;
+                }
+            }
+        }
+
+        return used;
+    }
+
+    public void valueChanged(ListSelectionEvent event) {
+        updateButtons();
+    }
+
+    private void updateButtons() {
+        int selectedRow = tilesetTable.getSelectedRow();
+        Vector tilesets = map.getTilesets();
+        TileSet set = null;
+        try {
+            set = (TileSet)tilesets.get(selectedRow);
+        } catch (IndexOutOfBoundsException e) {
+        }
+
+        editButton.setEnabled(set != null);
+        removeButton.setEnabled(set != null);
+        saveButton.setEnabled(set != null && set.getSource() != null);
+        embedButton.setEnabled(set != null && set.getSource() != null);
+    }
+}


Property changes on: branches/bjorn/src/tiled/mapeditor/dialogs/TilesetManager.java
___________________________________________________________________
Name: svn:keywords
   + Id




More information about the tiled-commit mailing list