// 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.ui; import graphtea.graph.ui.GHTMLPageComponent; import graphtea.graph.ui.HyperlinkHandler; import graphtea.platform.attribute.NotifiableAttributeSet; import graphtea.platform.core.BlackBoard; import graphtea.platform.core.exception.ExceptionHandler; import graphtea.platform.preferences.lastsettings.StorableOnExit; import graphtea.ui.actions.UIEventData; import graphtea.ui.components.GFrame; import graphtea.ui.components.gpropertyeditor.GBasicCellEditor; import graphtea.ui.components.gpropertyeditor.GBasicCellRenderer; import graphtea.ui.components.gpropertyeditor.GCellEditor; import graphtea.ui.components.gpropertyeditor.GCellRenderer; import graphtea.ui.components.gpropertyeditor.utils.ObjectViewer; import graphtea.ui.components.utils.GAttrFrame; import javax.swing.*; import java.awt.*; /** * @author Azin Azadi */ public class UIUtils { public static Component getComponent(BlackBoard b, String id) { return b.getData(getComponentVariableKeyNameInBlackBoard(id)); } public static void setComponent(BlackBoard b, String id, Component c) { b.setData(getComponentVariableKeyNameInBlackBoard(id), c); } /** * This method gives a standard way to name the awt.components that are in the black board. * when in XML we give an id to a component, when we want to fetch it from blackboard we should use this * method to have its exact name in black board which is stored in a Variable * * @param componentId the id of component which is given via XML * @return the name of Variable in the blackboard which the component can be accessed */ public static String getComponentVariableKeyNameInBlackBoard(String componentId) { return "UI Component" + componentId; } /** * returns the GFrame object that mapped to the blackboard. * the returned GFrame contains all menus, sidebars, toolbars and ... of the User Interface. */ public static GFrame getGFrame(BlackBoard b) { UI ui = b.getData(UI.name); return ui.frame; } /** * @return the UI instance which is currently running in the given blackboard environment */ public static UI getUI(BlackBoard blackboard) { return blackboard.getData(UI.name); } public static String getUIEventKey(String id) { return UIEventData.name(id); } public static void exit() { if (JOptionPane.showConfirmDialog(null, "Are you sure to exit?", "Exiting From the Application...", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { try { StorableOnExit.SETTINGS.saveSettings(); } catch (Exception e) { ExceptionHandler.catchException(e); } System.exit(0); } } //______________________________ gpropertyeditor ____________________________________ /** * @see graphtea.ui.components.utils.GAttrFrame#showEditDialog(graphtea.platform.attribute.NotifiableAttributeSet,boolean) */ public static GAttrFrame showEditDialog(NotifiableAttributeSet input, boolean modal) { return GAttrFrame.showEditDialog(input, modal); } /** * @see graphtea.ui.components.gpropertyeditor.utils.ObjectViewer */ public static ObjectViewer showObject(Object o) { return ObjectViewer.showObject(o); } /** * @see graphtea.ui.components.gpropertyeditor.GCellRenderer#registerRenderer(Class,graphtea.ui.components.gpropertyeditor.GBasicCellRenderer) */ public static void registerRenderer(Class clazz, GBasicCellRenderer viewer) { GCellRenderer.registerRenderer(clazz, viewer); } /** * @see graphtea.ui.components.gpropertyeditor.GCellEditor#registerEditor(Class,graphtea.ui.components.gpropertyeditor.GBasicCellEditor) */ public static void registerEditor(Class clazz, GBasicCellEditor editor) { GCellEditor.registerEditor(clazz, editor); } /** * @see graphtea.ui.components.gpropertyeditor.GCellEditor#getEditorFor(Object) */ public static GBasicCellEditor getEditorFor(Object value) { return GCellEditor.getEditorFor(value); } /** * @see graphtea.ui.components.gpropertyeditor.GCellRenderer#getRendererFor(Object) */ public static Component getRendererFor(Object value) { return GCellRenderer.getRendererFor(value); } //_____________ GHTMLPageComponent _________________ /** * @see graphtea.graph.ui.GHTMLPageComponent#registerHyperLinkHandler(java.lang.String,graphtea.graph.ui.HyperlinkHandler) */ public static void registerHyperLinkHandler(String protocol, HyperlinkHandler h) { GHTMLPageComponent.registerHyperLinkHandler(protocol, h); } }