Package tiled.mapeditor.util

Source Code of tiled.mapeditor.util.TiledFileFilter

/*
*  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@biggeruniverse.com>
*  Bjorn Lindeijer <bjorn@lindeijer.nl>
*/

package tiled.mapeditor.util;

import java.io.File;
import java.util.Iterator;
import java.util.LinkedList;

import tiled.io.PluggableMapIO;
import tiled.io.PluggableMapWriter;
import tiled.mapeditor.resources.Resources;

/**
* @version $Id$
*/
public class TiledFileFilter extends ConfirmableFileFilter
{
    public static final int FILTER_EXT  = 0;
    public static final int FILTER_TMX  = 1;
    public static final int FILTER_TSX  = 2;
    public static final int FILTER_BOTH = 3;
    public static final int FILTER_PLUG = 4;

    private String desc;
    private LinkedList<String> exts;
    private PluggableMapIO pmio;
    private int type = FILTER_EXT;

    private static final String FILETYPE_TILED = Resources.getString("general.filetype.tiled");
    private static final String FILETYPE_TMX = Resources.getString("general.filetype.tiledmap");
    private static final String FILETYPE_TSX = Resources.getString("general.filetype.tiledtileset");
    private static final String FILETYPE_EXT = Resources.getString("general.filetype.byextension");

    public TiledFileFilter() {
        desc = FILETYPE_TILED;
        exts = new LinkedList<String>();
        exts.add("tmx");
        exts.add("tmx.gz");
        exts.add("tsx");
        pmio = new PluggableMapWriter();
    }

    public TiledFileFilter(int filter) {
        exts = new LinkedList<String>();
        desc = "";
        type = filter;

        if ((filter & FILTER_TMX) != 0) {
            desc = FILETYPE_TMX;
            exts.add("tmx");
            exts.add("tmx.gz");
            pmio = new PluggableMapWriter();
        }

        if ((filter & FILTER_TSX) != 0) {
            desc += FILETYPE_TSX;
            exts.add("tsx");
            if (pmio == null) {
                pmio = new PluggableMapWriter();
            }
        }

        if (filter == FILTER_EXT) {
            desc = FILETYPE_EXT;
        }
    }

    public TiledFileFilter(PluggableMapIO p) throws Exception {
        exts = new LinkedList<String>();
        pmio = p;
        buildFilter(p.getFilter(), p.getName());
    }

    public TiledFileFilter(String filter, String desc) {
        exts = new LinkedList<String>();
        buildFilter(filter, desc);
    }

    private void buildFilter(String filter, String desc) {
        this.desc = desc;
        String[] extensions = filter.split(",");
        for (String extension : extensions) {
            exts.add(extension.substring(extension.indexOf('.') + 1));
        }
    }

    public void setDescription(String description) {
        desc = description;
    }

    public void addExtention(String extension) {
        exts.add(extension);
    }

    public PluggableMapIO getPlugin() {
        return pmio;
    }

    public String getDefaultExtension() {
        if (!exts.isEmpty()) {
            return exts.getFirst();
        }
        else {
            return null;
        }
    }

    public int getType() {
        return type;
    }

    public boolean accept(File file) {
        // todo: Verify that the "!file.exists()" check is rather weird.
        if (type != FILTER_EXT && (file.isFile() || !file.exists())) {
            String fileName = file.getPath().toLowerCase();

            for (String ext : exts) {
                if (fileName.endsWith("." + ext)) {
                    return true;
                }
            }
            return false;
        }
        return true;
    }

    public String getDescription() {
        StringBuffer filter = new StringBuffer();

        if (!exts.isEmpty()) {
            filter.append(" (");
            Iterator itr = exts.iterator();
            while (itr.hasNext()) {
                filter.append("*.").append((String) itr.next());
                if (itr.hasNext()) {
                    filter.append(",");
                }
            }

            filter.append(")");
        }

        return desc + filter;
    }
}
TOP

Related Classes of tiled.mapeditor.util.TiledFileFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.