// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.plugins.main.saveload.core.extension; import graphtea.platform.core.AbstractAction; import graphtea.platform.core.BlackBoard; import graphtea.platform.core.exception.ExceptionHandler; import graphtea.platform.extension.ExtensionHandler; import graphtea.platform.preferences.lastsettings.StorableOnExit; import graphtea.platform.preferences.lastsettings.UserModifiableProperty; /** * the plug in handler for graph Input and Output, this class loads classes that are implementing * GraphReaderExtension interface,... * * @author azin azadi */ public class GraphIOExtensionHandler implements ExtensionHandler, StorableOnExit { private boolean handlingReaders; private AbstractAction a = null; { SETTINGS.registerSetting(this, "Only Storable"); } /** * @param isHandlingReaders indicates that if this Object should handle GraphReaders or GraphWriters */ public GraphIOExtensionHandler(boolean isHandlingReaders) { handlingReaders = isHandlingReaders; } @UserModifiableProperty(displayName = "default Directory Path") public static String defaultFile = "."; /** * @param b The blackboard * @param ext The extension * @return null if ext doesn't implements GraphReaderExtension */ public AbstractAction handle(BlackBoard b, Object ext) { a = null; if (!handlingReaders) { if (ext instanceof GraphWriterExtension) { try { GraphWriterExtension gg = (GraphWriterExtension) ext; a = new GraphWriterExtensionAction(b, gg); } catch (Exception e) { ExceptionHandler.catchException(e); } } } else { if (ext instanceof GraphReaderExtension) { try { GraphReaderExtension gg = (GraphReaderExtension) ext; a = new GraphReaderExtensionAction(b, gg); } catch (Exception e) { ExceptionHandler.catchException(e); } } } return a; } }