CaRMtl/eric/GUI/pipe_tools.java
2018-09-04 22:51:42 -04:00

367 lines
11 KiB
Java

/*
* 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 (y<Global.getScreenY()+JPropertiesBar.getBarHeight()) {
y=Global.getScreenY()+JPropertiesBar.getBarHeight();
}
owner.setLocation(x, y);
}
public static Dimension getWindowSize() {
return owner.getSize();
}
public static void setWindowSize(int w, int h) {
owner.setSize(w, h);
}
public static void setAndCheckWindowSize(int w, int h) {
if ((!isApplet())&&(JZirkelCanvas.isWorkBook())) {
if (w>Global.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.y<Global.getScreenY()+JPropertiesBar.getBarHeight()) {
r.y=Global.getScreenY()+JPropertiesBar.getBarHeight();
}
if (r.y+r.height>Global.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;
}
}
}