/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package eric.GUI; import eric.FileTools; import eric.GUI.palette.PaletteManager; import eric.GUI.window.*; import eric.JEricPanel; import eric.JGeneralMenuBar; import eric.JZirkelCanvas; import eric.bar.JPropertiesBar; import eric.macros.CreateMacroDialog; import eric.macros.CreateMacroPanel; import eric.monkey.monkey; import java.awt.Dimension; import java.awt.Frame; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.JComponent; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import netscape.javascript.JSObject; import rene.gui.Global; import rene.zirkel.ZirkelCanvas; import rene.zirkel.ZirkelFrame; import rene.zirkel.macro.Macro; /** * This is a static class provide to be a bridge between the GUI * packages and the others. Other "engine" packages should always refer to this * one whenever they need to interact with the GUI. The GUI also must go through * this class to interact with the engine. * @author erichake */ public class pipe_tools { private static MainContainer owner; /** * Called by MainWindow or MainApplet at the begining of * initialization process (constructor or init) * @param mc : the main container -> JFrame or JApplet */ public static void init(MainContainer mc) { owner=mc; themes.setTheme(Global.getParameter("LookAndFeel", themes.GRAY)); } public static boolean isApplet() { return owner.isApplet(); } public static MainContainer getWindow() { return owner; } public static Frame getFrame() { MainContainer mc=owner; if (mc instanceof MainWindow) { return (Frame) mc; } else { return new Frame(); } } public static ContentPane getContent() { return owner.getContent(); } public static void setWindowComponents() { owner.setComponents(); } public static Point getWindowLocation() { return owner.getLocation(); } public static void setWindowLocation() { setWindowLocation(owner.getLocation().x, owner.getLocation().y); } public static void setWindowLocation(int x, int y) { if (yGlobal.getScreenW()) { w=Global.getScreenW(); } if (h>Global.getScreenH()) { h=Global.getScreenH(); } int x=(Global.getScreenW()-w)/2; int y=(Global.getScreenH()-h)/2; setWindowLocation(x, y); owner.setSize(w, h); } } public static void setWindowBounds() { setWindowBounds(getFrame().getBounds()); } // r est le bounds désiré de la fenêtre : public static void setWindowBounds(Rectangle r) { if (getWindow() instanceof MainWindow) { if (r.yGlobal.getScreenY()+Global.getScreenH()) { r.height=Global.getScreenY()+Global.getScreenH()-r.y; } getFrame().setBounds(r); // I know, this is weird, but it work's (for palette display) : owner.setComponents(); owner.setComponents(); } } static private KeyStroke enter_key=KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0); public static void setStandardKeyInputs() { KeyStroke key=KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK); owner.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, "objectTracker"); owner.getRootPane().getActionMap().put("objectTracker", new AbstractAction() { @Override public void actionPerformed(final ActionEvent arg0) { ZirkelFrame zf=JZirkelCanvas.getCurrentZF(); zf.track(); } }); key=KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); owner.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, "escape"); owner.getRootPane().getActionMap().put("escape", new AbstractAction() { @Override public void actionPerformed(final ActionEvent arg0) { PaletteManager.setSelected_with_clic("move", true); CreateMacroDialog.quit(); } }); } public static void setMacroPanelKeyInputs() { owner.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enter_key, "macro_enter"); owner.getRootPane().getActionMap().put("macro_enter", new AbstractAction() { @Override public void actionPerformed(final ActionEvent arg0) { CreateMacroPanel.nextStep(); } }); } public static void removeMacroPanelKeyInputs() { owner.getRootPane().getActionMap().remove(enter_key); } public static void toFront() { if (!isApplet()) { MainWindow mw=(MainWindow) owner; mw.toFront(); } } public static void showRestrictedEnvironmentManager() { ZirkelCanvas zc=JZirkelCanvas.getCurrentZC(); if (zc!=null) { zc.getNewRestrictedDialog(); } } public static void showExerciseManager() { ZirkelCanvas zc=JZirkelCanvas.getCurrentZC(); if (zc!=null) { zc.job_showDialog(); } } public static void AppletLoadedMessage_To_HTML() { if (isApplet()) { MainApplet ma=(MainApplet) owner; JSObject window=JSObject.getWindow(ma); String[] args={}; window.call("carmetal_applet_loaded", args); } } public static boolean Exercise_To_HTML(boolean success, String message) { Object jsmethod=null; if (isApplet()) { try { MainApplet ma=(MainApplet) owner; JSObject window=JSObject.getWindow(ma); String[] args={""+success, message}; jsmethod=window.call("carmetal_job", args); } catch (Exception e) { return false; } } return (jsmethod!=null); } public static void Magnet_To_HTML(String Pt, String Obj) { if (isApplet()) { MainApplet ma=(MainApplet) owner; JSObject window=JSObject.getWindow(ma); String[] args={Pt, Obj}; window.call("carmetal_magnet", args); } } public static JEricPanel getCanvasPanel() { return ContentPane.getCanvasPanel(); } public static void duplicateTab() { try { String s=FileTools.getCurrentFileSource(); tab_main_panel.addBtnAndSelect(tab_main_panel.getActiveBtn().getTabName()+" copy"); FileTools.setCurrentFileSource(s); } catch (Exception ex) { } } public static void TabHaveChanged(boolean b) { if (JZirkelCanvas.isWorkBook()) { tab_main_panel.allTabsHaveChanged(b); } else { tab_main_panel.currentTabHaveChanged(b); } } public static void actualiseMacroPanel() { LeftPanel_content.setContent(JZirkelCanvas.getNewMacroPanel()); JZirkelCanvas.ActualiseMacroPanel(); } public static void actualiseLeftPanels() { JZirkelCanvas.removeLeftPanelContent(); if (LeftPanel.isHistoryPanelVisible()) { LeftPanel_content.setContent(JZirkelCanvas.getNewCDPPanel()); } else if (LeftPanel.isHelpPanelVisible()) { LeftPanel_content.setContent(JZirkelCanvas.getNewInfoPanel()); } else if (LeftPanel.isMacroPanelVisible()) { actualiseMacroPanel(); } else if(LeftPanel.isScriptsPanelVisible()){ LeftPanel_content.setContent(JZirkelCanvas.getNewScriptsLeftPanel()); } } public static void setTitle(String s) { getContent().setTitle(s); } public static JEricPanel getMenuBar() { return new JGeneralMenuBar(); } public static boolean isTabEditAccepted() { return (JZirkelCanvas.isWorkBook()); } public static void quitAll() { JZirkelCanvas.quitAll(); } public static void closeCurrent() { JZirkelCanvas.closeCurrent(); } public static void onTabActivate() { JZirkelCanvas JZF=JZirkelCanvas.getCurrentJZF(); if (JZF!=null) { JZF.onTabActivate(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { PaletteManager.selectGeomIcon(); PaletteManager.initPaletteConsideringMode(); PaletteManager.init(); actualiseLeftPanels(); } }); if(JGeneralMenuBar.get_scp() != null){ JZF.getZC().add(JGeneralMenuBar.get_scp()); JGeneralMenuBar.get_scp().refresh(); JZF.getZC().repaint(); } } } public static String processTabName(String name) { if (name.endsWith(".zir")) { name=name.substring(0, name.length()-4); } else if (name.endsWith(".zirz")) { name=name.substring(0, name.length()-5); } name=tab_main_panel.uniqueName(name); return name; } public static void setMacroHelp(Macro m) { } public static void setComments(String s) { ZirkelCanvas zc=JZirkelCanvas.getCurrentZC(); if (zc!=null) { zc.setJobComment(s); } } public static boolean isComments() { ZirkelCanvas zc=JZirkelCanvas.getCurrentZC(); if (zc==null) { return false; } return (!"".equals(zc.getJobComment())); } public static void saveFigure() { FileTools.saveFileAs(); } private static monkey monkey=null; public static void monkeyStart() { ZirkelCanvas zc=JZirkelCanvas.getCurrentZC(); if (zc!=null) { monkey=new monkey(zc); monkey.start(); } } public static void monkeyStop() { if (monkey!=null) { monkey.stop(); monkey=null; } } }