// 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/ /* * UI.java * * Created on March 2, 2005, 9:38 AM */ package graphtea.ui; import graphtea.platform.core.AbstractAction; import graphtea.platform.core.BlackBoard; import graphtea.platform.core.exception.ExceptionHandler; import graphtea.platform.extension.ExtensionLoader; import graphtea.ui.actions.UIEventHandler; import graphtea.ui.components.GFrame; import graphtea.ui.components.utils.GFrameLocationProvider; import graphtea.ui.extension.UIActionExtensionHandler; import graphtea.ui.xml.UIHandlerImpl; import graphtea.ui.xml.UIParser; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.util.HashMap; /** * this class is the base class of UI actions, * it contains the methods to load UserInterfaces from XML * it contains the methods to access different parts of a UI... * * @author Azin Azadi */ public class UI { public static final String name = "GraphUI.UI"; BlackBoard blackboard = null; GFrame frame; public HashMap<String, AbstractAction> actions = null; /** * constructor * * @param bb The blackboard */ public UI(BlackBoard bb) { this.blackboard = bb; //add the UI to the blackboard so the plugins can get it from blackboard bb.setData(name, this); frame = new GFrame(blackboard); frame.setLocation(GFrameLocationProvider.getLocation()); frame.setSize(GFrameLocationProvider.getSize()); frame.validate(); // frame.pack(); // frame.setVisible(visible); actions = new HashMap<>(); blackboard.setData(UIEventHandler.ACTIONS_MAP, actions); //initialize the event handler to handle menu and toolbar events new UIEventHandler(blackboard); ExtensionLoader.registerExtensionHandler(new UIActionExtensionHandler()); } /** * fek mikonam ke in add xml kare plugin ha ro rah bendaze, vali hala kheili * ghatiam, in tarif methoda ro ehtemalan taghir baies dad. * * @param XMLFilePath The file path of the XML document * @throws IOException The input file is not there */ public void addXML(String XMLFilePath, Class resClass) throws IOException, SAXException { loadXML(XMLFilePath, resClass); } public void loadXML(String XMLFilePath, Class resClass) throws IOException, SAXException { loadXML(XMLFilePath, resClass, frame); } public void loadXML(String XMLFilePath, Class resClass, GFrame frame ) throws IOException, SAXException { UIHandlerImpl hi = new UIHandlerImpl(frame, blackboard, actions, resClass); try { if (resClass == null) UIParser.parse(new InputSource(XMLFilePath), hi); else UIParser.parse(resClass.getResource(XMLFilePath), hi); } catch (ParserConfigurationException e) { ExceptionHandler.catchException(e); } frame.validate(); } public GFrame getGFrame() { return frame; } // public void sendUIEvent(UIEventData ued){ // // } //--------------------------------------------------------------------------------- // public static GTP }