367 lines
11 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|