/*
* 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.plugin;
import java.io.File;
import java.io.FileFilter;
import tiled.io.MapReader;
import tiled.io.MapWriter;
import tiled.io.PluggableMapIO;
import tiled.io.PluginLogger;
/**
* A true "plugin" implementation that handles both reading and
* writing as the case may be. Instantiated for every reader/writer pair
* by the {@link PluginClassLoader} when all plugins are loaded.
*/
public class TiledPlugin implements PluggableMapIO, FileFilter
{
private MapReader reader;
private MapWriter writer;
/**
* Instantiates a new plugin to be used internally by Tiled.
*
* @param reader The {@link MapReader} implementor for the plugin
* @param writer The {@link MapWriter} implementor for the plugin
*/
public TiledPlugin(MapReader reader, MapWriter writer) {
this.reader = reader;
this.writer = writer;
}
/**
* Convenience constructor if only a reader exists
*
* @param reader
*/
public TiledPlugin(MapReader reader) {
this(reader, null);
}
/**
* Convenience constructor if only a writer exists
*
* @param writer
*/
public TiledPlugin(MapWriter writer) {
this(null, writer);
}
/**
* Returns the filters of both the reader and writer as a
* comma delimited String.
*
* @see tiled.io.PluggableMapIO#getFilter()
* @return String A comma delimited String of the filtered file extensions
*/
public String getFilter() throws Exception {
String filter = "";
if (reader != null) {
filter += reader.getFilter();
}
if (writer != null) {
filter += (filter.length() > 0 ? "," : "") + writer.getFilter();
}
return filter;
}
/**
* Returns the name of the plugin as set in the reader,
* or, if the reader does not exist, from the writer.
*
* @see PluggableMapIO#getName()
*/
public String getName() {
if (reader != null) {
return reader.getName();
}
return writer.getName();
}
public String getDescription() {
// TODO Auto-generated method stub
return null;
}
public String getPluginPackage() {
// TODO Auto-generated method stub
return null;
}
public boolean accept(File pathname) {
return reader != null && reader.accept(pathname) ||
writer != null && writer.accept(pathname);
}
/* (non-Javadoc)
* @see tiled.io.PluggableMapIO#setErrorStack(java.util.Stack)
*/
public void setLogger(PluginLogger logger) {
// TODO Auto-generated method stub
}
public MapReader getReader() {
return reader;
}
public MapWriter getWriter() {
return writer;
}
}