1306 lines
40 KiB
Java
1306 lines
40 KiB
Java
/*
|
|
|
|
Copyright 2006 Eric Hakenholz
|
|
|
|
This file is part of C.a.R. software.
|
|
|
|
C.a.R. is a free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, version 3 of the License.
|
|
|
|
C.a.R. is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
package eric;
|
|
|
|
import eric.GUI.palette.PaletteManager;
|
|
import eric.GUI.pipe_tools;
|
|
import eric.GUI.themes;
|
|
import eric.GUI.window.LeftPanel;
|
|
import eric.GUI.window.Open_left_panel_btn;
|
|
import eric.GUI.window.Open_middle_panel_btn;
|
|
import eric.GUI.window.Open_right_panel_btn;
|
|
import eric.GUI.window.RightPanel;
|
|
import eric.JSprogram.ScriptItem;
|
|
import eric.JSprogram.ScriptPanel;
|
|
import eric.bar.JPropertiesBar;
|
|
import eric.macros.CreateMacroDialog;
|
|
import java.awt.Color;
|
|
import java.awt.Component;
|
|
import java.awt.Dimension;
|
|
import java.awt.Font;
|
|
import java.awt.Graphics;
|
|
import java.awt.Graphics2D;
|
|
import java.awt.RenderingHints;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.InputEvent;
|
|
import java.awt.event.KeyEvent;
|
|
import java.net.URL;
|
|
import javax.swing.AbstractAction;
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.BoxLayout;
|
|
import javax.swing.ImageIcon;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JCheckBox;
|
|
import javax.swing.JComponent;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JMenu;
|
|
import javax.swing.JMenuBar;
|
|
import javax.swing.JMenuItem;
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.JPopupMenu;
|
|
import javax.swing.KeyStroke;
|
|
import javax.swing.event.MenuEvent;
|
|
import javax.swing.event.MenuListener;
|
|
import rene.dialogs.Question;
|
|
import rene.gui.Global;
|
|
import rene.zirkel.ZirkelCanvas;
|
|
import rene.zirkel.ZirkelFrame;
|
|
import rene.zirkel.tools.JSmacroTool;
|
|
|
|
public class JGeneralMenuBar extends JEricPanel {
|
|
|
|
private static final int MenuTextSize = 12;
|
|
private static JGeneralMenuBar me;
|
|
myJMenuBar menubar = new myJMenuBar();
|
|
private myJMenu MacrosMenu, ObjectsMenu, JSMenu;
|
|
JButton historybutton;
|
|
myJMenuItem hiddenitem, griditem, restrictpaletteitem, editpaletteitem,
|
|
macrositem, historyitem, helpitem, propertiesitem, smallitem,
|
|
mediumitem, largeitem, definejobitem, commentitem, leftpanelitem, paletteitem;
|
|
private static pm.Server.ServerControlPanel scp = null;
|
|
private pm.Client.ClientNetworkTools cnt = null;
|
|
|
|
@Override
|
|
public void paintComponent(final java.awt.Graphics g) {
|
|
// super.paintComponent(g);
|
|
final java.awt.Dimension d = this.getSize();
|
|
g.drawImage(themes.getImage("menubar.gif"), 0, 0, d.width, d.height,
|
|
this);
|
|
}
|
|
|
|
public JGeneralMenuBar() {
|
|
me = this;
|
|
this.setLayout(new javax.swing.BoxLayout(this,
|
|
javax.swing.BoxLayout.X_AXIS));
|
|
MacrosMenu = new myJMenu(Loc("macros"));
|
|
ObjectsMenu = new myJMenu(Global.Loc("palette.construction"));
|
|
JSMenu = new myJMenu(Loc("js"));
|
|
JSMenu.addMenuListener(new MenuListener() {
|
|
|
|
@Override
|
|
public void menuSelected(MenuEvent e) {
|
|
InitJSMenu();
|
|
}
|
|
|
|
@Override
|
|
public void menuDeselected(MenuEvent e) {
|
|
}
|
|
|
|
@Override
|
|
public void menuCanceled(MenuEvent e) {
|
|
}
|
|
});
|
|
|
|
init();
|
|
InitObjectsMenu();
|
|
}
|
|
|
|
public void paintImmediately() {
|
|
paintImmediately(0, 0, getWidth(), getHeight());
|
|
}
|
|
|
|
class myJMenuBar extends JMenuBar {
|
|
|
|
@Override
|
|
public void paintComponents(final Graphics g) {
|
|
}
|
|
|
|
myJMenuBar() {
|
|
super();
|
|
setUI(null);
|
|
}
|
|
|
|
void addMenu(final JMenu mymen) {
|
|
if (mymen.getItemCount() > 0) {
|
|
this.add(mymen);
|
|
}
|
|
}
|
|
}
|
|
|
|
class myJMenu extends JMenu {
|
|
|
|
@Override
|
|
public void paintComponents(final Graphics g) {
|
|
}
|
|
|
|
myJMenu(final String menuname) {
|
|
this.setText(menuname);
|
|
this.setFont(new java.awt.Font(Global.GlobalFont, 0, 12));
|
|
this.setForeground(new Color(40, 40, 40));
|
|
this.setOpaque(false);
|
|
}
|
|
|
|
myJMenu(final String menuname, final boolean isSubmenu) {
|
|
this(menuname);
|
|
if (isSubmenu) {
|
|
setOpaque(true);
|
|
setIcon(new myImageIcon(getClass().getResource(
|
|
"/eric/GUI/icons/palette/null.png"), null));
|
|
}
|
|
}
|
|
|
|
// Constructor for the Objects submenus :
|
|
myJMenu(final String menuname, final int icnw) {
|
|
this(menuname);
|
|
setOpaque(true);
|
|
final myImageIcon myicn = new myImageIcon(getClass().getResource(
|
|
"/eric/GUI/icons/palette/null.png"), null);
|
|
myicn.setIcnMargin(0);
|
|
myicn.setIconWidth(icnw);
|
|
setIcon(myicn);
|
|
}
|
|
|
|
void addSep() {
|
|
// if (this.getItemCount()>0) this.addSeparator();
|
|
|
|
this.add(new mySeparator());
|
|
}
|
|
|
|
void addI(final String mnu, final String icn, final int a1,
|
|
final int a2, final myJMenuItem item) {
|
|
item.setNames(Loc(mnu), icn);
|
|
if (a1 != 0) {
|
|
item.setAccelerator(KeyStroke.getKeyStroke(a1, a2));
|
|
pipe_tools.getWindow().getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(a1, a2), mnu);
|
|
pipe_tools.getWindow().getRootPane().getActionMap().put(mnu, new AbstractAction() {
|
|
|
|
@Override
|
|
public void actionPerformed(final ActionEvent arg0) {
|
|
item.action();
|
|
}
|
|
});
|
|
}
|
|
this.add(item);
|
|
|
|
}
|
|
|
|
void addI(final String mnu, final String icn, final int a1,
|
|
final int a2, final boolean sel, final myJMenuItem item) {
|
|
item.setNames(Loc(mnu), icn);
|
|
item.setSelected(sel);
|
|
if (a1 != 0) {
|
|
item.setAccelerator(KeyStroke.getKeyStroke(a1, a2));
|
|
pipe_tools.getWindow().getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(a1, a2), mnu);
|
|
pipe_tools.getWindow().getRootPane().getActionMap().put(mnu, new AbstractAction() {
|
|
|
|
@Override
|
|
public void actionPerformed(final ActionEvent arg0) {
|
|
item.action();
|
|
}
|
|
});
|
|
}
|
|
this.add(item);
|
|
|
|
}
|
|
|
|
// only for objects submenus :
|
|
void addI(final String icn, final myJMenuItem item) {
|
|
final String mnuName = PaletteManager.ToolTip(icn);
|
|
item.setNames(mnuName, icn);
|
|
item.setText("<html>" + item.getText().replaceAll("\\+", "<br>") + "</html>");
|
|
if (!(item.myimage == null)) {
|
|
item.myimage.setIconWidth(28);
|
|
item.myimage.setIconHeight(28);
|
|
}
|
|
this.add(item);
|
|
}
|
|
|
|
// only for language submenu :
|
|
void addI(final String lang, final String country,
|
|
final myJMenuItem item) {
|
|
final String suffix = (country.equals("")) ? lang : lang + "_" + country;
|
|
final String icn = "lg_" + suffix;
|
|
final boolean good = Global.isLanguage(lang, country);
|
|
if ((good) && (!(icn.equals("")))) {
|
|
this.setIcon(new ImageIcon(getClass().getResource(
|
|
"/eric/GUI/icons/palette/" + icn + ".png")));
|
|
}
|
|
addI("language." + suffix, icn, 0, 0, item);
|
|
item.setEnabled(!good);
|
|
}
|
|
|
|
class mySeparator extends JEricPanel {
|
|
|
|
@Override
|
|
public void paintComponent(final java.awt.Graphics g) {
|
|
super.paintComponent(g);
|
|
|
|
final java.awt.Dimension d = this.getSize();
|
|
g.drawImage(themes.getImage("sep.png"), 2, 0, d.width - 4, 12,
|
|
this);
|
|
}
|
|
|
|
mySeparator() {
|
|
this.setOpaque(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
class mySimpleJMenuItem extends JMenuItem {
|
|
|
|
int ID = 0;
|
|
|
|
mySimpleJMenuItem(final String name, final int i) {
|
|
super(name);
|
|
ID = i;
|
|
this.setOpaque(true);
|
|
this.setFont(new java.awt.Font(Global.GlobalFont, 0, MenuTextSize));
|
|
this.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
public void actionPerformed(final ActionEvent event) {
|
|
action();
|
|
}
|
|
});
|
|
}
|
|
|
|
void action() {
|
|
}
|
|
}
|
|
|
|
public class myJMenuItem extends JMenuItem {
|
|
|
|
String ICname;
|
|
boolean selected = false;
|
|
myImageIcon myimage = null;
|
|
|
|
myJMenuItem() {
|
|
this.setOpaque(true);
|
|
this.setFont(new java.awt.Font(Global.GlobalFont, 0, MenuTextSize));
|
|
this.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
public void actionPerformed(final ActionEvent event) {
|
|
ZirkelCanvas ZC = JZirkelCanvas.getCurrentZC();
|
|
if (ZC != null && ZC.getTool() instanceof JSmacroTool) {
|
|
((JSmacroTool) ZC.getTool()).invalidate(ZC);
|
|
}
|
|
action();
|
|
}
|
|
});
|
|
this.setIcon(themes.getIcon("null.png"));
|
|
// this.setIconTextGap(0);
|
|
}
|
|
|
|
myJMenuItem(final String itemname, final String iconname) {
|
|
this();
|
|
setNames(itemname, iconname);
|
|
}
|
|
|
|
@Override
|
|
public void setSelected(final boolean sel) {
|
|
selected = sel;
|
|
final int fontstyle = (selected) ? 1 : 0;
|
|
this.setFont(new java.awt.Font(Global.GlobalFont, fontstyle, MenuTextSize));
|
|
}
|
|
|
|
@Override
|
|
public boolean isSelected() {
|
|
return selected;
|
|
}
|
|
|
|
void setNames(final String itemname, final String iconname) {
|
|
ICname = iconname;
|
|
setText(itemname);
|
|
setIcn(iconname);
|
|
// setPreferredSize(new Dimension(getPreferredSize().width+50,22));
|
|
}
|
|
|
|
void setIcn(String iconname) {
|
|
if (iconname.equals("")) {
|
|
iconname = "null";
|
|
}
|
|
URL myurl = getClass().getResource(
|
|
"/eric/GUI/icons/palette/" + iconname + ".png");
|
|
if (myurl == null) {
|
|
myurl = getClass().getResource(
|
|
"/eric/GUI/icons/palette/" + iconname + ".gif");
|
|
}
|
|
if (myurl == null) {
|
|
myurl = getClass().getResource(
|
|
"/eric/GUI/icons/jswindow/" + iconname + ".png");
|
|
}
|
|
myimage = new myImageIcon(myurl, this);
|
|
|
|
setIcon(myimage);
|
|
}
|
|
|
|
void action() {
|
|
PaletteManager.ClicOn(ICname);
|
|
}
|
|
}
|
|
|
|
class myImageIcon extends ImageIcon {
|
|
|
|
int IcnHeight = 22;
|
|
int IcnWidth = 24;
|
|
int IcnMargin = 6;
|
|
myJMenuItem JM;
|
|
|
|
@Override
|
|
public void paintIcon(final Component c, final Graphics g, final int x,
|
|
final int y) {
|
|
final Graphics2D g2 = (Graphics2D) g;
|
|
|
|
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
|
RenderingHints.VALUE_ANTIALIAS_ON);
|
|
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
|
|
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
|
g2.setRenderingHint(RenderingHints.KEY_RENDERING,
|
|
RenderingHints.VALUE_RENDER_QUALITY);
|
|
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
|
|
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
|
|
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
|
|
RenderingHints.VALUE_STROKE_PURE);
|
|
|
|
if ((!(JM == null)) && (JM.isSelected())) {
|
|
final ImageIcon mysel = new ImageIcon(getClass().getResource(
|
|
"/eric/GUI/icons/palette/selmark.png"));
|
|
g2.drawImage(mysel.getImage(), 3, 0, 8, IcnWidth, JM);
|
|
}
|
|
g2.drawImage(getImage(), IcnMargin, 0, IcnWidth, IcnWidth, JM);
|
|
}
|
|
|
|
public void setIcnMargin(final int i) {
|
|
IcnMargin = i;
|
|
}
|
|
|
|
public void setIconHeight(final int i) {
|
|
IcnHeight = i;
|
|
}
|
|
|
|
public void setIconWidth(final int i) {
|
|
IcnWidth = i;
|
|
}
|
|
|
|
@Override
|
|
public int getIconHeight() {
|
|
return IcnHeight;
|
|
}
|
|
|
|
@Override
|
|
public int getIconWidth() {
|
|
return IcnWidth;
|
|
}
|
|
|
|
myImageIcon(final URL myurl, final myJMenuItem jm) {
|
|
super(myurl);
|
|
JM = jm;
|
|
}
|
|
}
|
|
|
|
private String Loc(final String s) {
|
|
String loc = Global.Loc("menu." + s);
|
|
if (loc == null) {
|
|
loc = Global.Loc(s);
|
|
}
|
|
if (loc == null) {
|
|
loc = s;
|
|
}
|
|
return loc;
|
|
}
|
|
|
|
public void InitMacrosMenu() {
|
|
if (MacrosMenu != null) {
|
|
MacrosMenu.removeAll();
|
|
MacrosMenu.addI("palette.info.newmacro", "newmacro", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
new CreateMacroDialog(JZirkelCanvas.getNewMacroPanel());
|
|
JZirkelCanvas.ActualiseMacroPanel();
|
|
}
|
|
});
|
|
MacrosMenu.addSep();
|
|
}
|
|
}
|
|
|
|
public static void s_InitMacrosMenu() {
|
|
if (me != null) {
|
|
me.InitMacrosMenu();
|
|
}
|
|
}
|
|
|
|
public static void addMacrosMenu(JMenuItem item) {
|
|
if ((me != null) && (me.MacrosMenu != null)) {
|
|
me.MacrosMenu.add(item);
|
|
}
|
|
}
|
|
|
|
public static void s_InitJSMenu() {
|
|
if (me != null) {
|
|
me.InitJSMenu();
|
|
}
|
|
}
|
|
|
|
public void InitJSMenu() {
|
|
JSMenu.removeAll();
|
|
final ZirkelCanvas ZC = JZirkelCanvas.getCurrentZC();
|
|
if (ZC == null) {
|
|
return;
|
|
}
|
|
final ScriptPanel panel = ZC.getScriptsPanel();
|
|
if (panel == null) {
|
|
return;
|
|
}
|
|
|
|
myJMenuItem item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
panel.onlyRemoveScriptsManagerPanel();
|
|
panel.Restore();
|
|
}
|
|
};
|
|
JSMenu.addI("JSmenu.cancel", "", 0, 0, item);
|
|
item.setEnabled(panel.isBackup());
|
|
item.setIcon(themes.resizeExistingIcon("/eric/GUI/icons/jswindow/restore.png", 16, 16));
|
|
|
|
JSMenu.addSep();
|
|
|
|
JSMenu.addI("js.newscriptinconstruction", "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
panel.newScript();
|
|
}
|
|
});
|
|
|
|
|
|
JSMenu.addSep();
|
|
|
|
for (final ScriptItem myscriptitem : panel.getScripts()) {
|
|
item = new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
panel.onlyRemoveScriptsManagerPanel();
|
|
myscriptitem.runScript();
|
|
}
|
|
};
|
|
item.setEnabled(!myscriptitem.isRunning());
|
|
JSMenu.addI(myscriptitem.getScriptName(), "", 0, 0, item);
|
|
//item.myimage.setIconWidth(20);
|
|
//item.myimage.setIconHeight(20);
|
|
item.setIcon(themes.resizeExistingIcon("/eric/GUI/icons/jswindow/run.png", 16, 21));
|
|
}
|
|
|
|
|
|
if (panel.getScripts().size() > 0) {
|
|
JSMenu.addSep();
|
|
}
|
|
|
|
JSMenu.addI("JSmenu.killall", "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
ZC.killAllScripts();
|
|
}
|
|
});
|
|
item.setEnabled(ZC.isThereAnyScriptRunning());
|
|
|
|
JSMenu.addI("JSmenu.stopall", "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
//panel.stopAllScripts();
|
|
ZC.stopAllScripts();
|
|
}
|
|
});
|
|
item.setEnabled(ZC.isThereAnyScriptRunning() && !ZC.isThereAnyStoppedScripts());
|
|
|
|
JSMenu.addI("JSmenu.restartall", "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
//panel.restartAllScripts();
|
|
ZC.restartAllScripts();
|
|
}
|
|
});
|
|
item.setEnabled(ZC.isThereAnyStoppedScripts());
|
|
JSMenu.addSep();
|
|
|
|
// add Modify Menu :
|
|
myJMenu modifypopup = new myJMenu(Global.Loc("JSmenu.modify"), true);
|
|
for (final ScriptItem scpitem : panel.getScripts()) {
|
|
modifypopup.addI(scpitem.getScriptName(), "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
scpitem.openEmbeddedScript();
|
|
}
|
|
});
|
|
}
|
|
modifypopup.setEnabled(panel.getScripts().size() > 0);
|
|
JSMenu.add(modifypopup);
|
|
|
|
// add Delete Menu :
|
|
myJMenu deletepopup = new myJMenu(Global.Loc("JSmenu.delete"), true);
|
|
for (final ScriptItem scpitem : panel.getScripts()) {
|
|
deletepopup.addI(scpitem.getScriptName(), "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
panel.removeScript(scpitem);
|
|
}
|
|
});
|
|
}
|
|
deletepopup.setEnabled(panel.getScripts().size() > 0);
|
|
JSMenu.add(deletepopup);
|
|
|
|
|
|
JSMenu.addI("JSmenu.ScriptsManager", "", 0, 0, item = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
panel.addScriptsManagerPanel();
|
|
}
|
|
});
|
|
item.setEnabled(panel.getScripts().size() > 0);
|
|
}
|
|
|
|
public static void initToggleItems() {
|
|
if (me != null) {
|
|
me.commentitem.setSelected(Global.getParameter("comment", false));
|
|
me.leftpanelitem.setSelected(LeftPanel.isPanelVisible());
|
|
me.paletteitem.setSelected(RightPanel.isPanelVisible());
|
|
}
|
|
}
|
|
|
|
public void InitObjectsMenu() {
|
|
ObjectsMenu.removeAll();
|
|
final myJMenu m1 = new myJMenu(Loc("objects.points"), 0);
|
|
m1.addI("point", new myJMenuItem());
|
|
m1.addI("intersection", new myJMenuItem());
|
|
m1.addI("midpoint", new myJMenuItem());
|
|
m1.addI("bi_syma", new myJMenuItem());
|
|
m1.addI("bi_symc", new myJMenuItem());
|
|
m1.addI("bi_trans", new myJMenuItem());
|
|
ObjectsMenu.add(m1);
|
|
final myJMenu m2 = new myJMenu(Loc("objects.lines"), 0);
|
|
m2.addI("line", new myJMenuItem());
|
|
m2.addI("ray", new myJMenuItem());
|
|
m2.addI("parallel", new myJMenuItem());
|
|
m2.addI("plumb", new myJMenuItem());
|
|
m2.addI("bi_med", new myJMenuItem());
|
|
m2.addI("bi_biss", new myJMenuItem());
|
|
ObjectsMenu.add(m2);
|
|
final myJMenu m3 = new myJMenu(Loc("objects.segments"), 0);
|
|
m3.addI("segment", new myJMenuItem());
|
|
m3.addI("fixedsegment", new myJMenuItem());
|
|
m3.addI("vector", new myJMenuItem());
|
|
m3.addI("area", new myJMenuItem());
|
|
ObjectsMenu.add(m3);
|
|
final myJMenu m4 = new myJMenu(Loc("objects.angles"), 0);
|
|
m4.addI("angle", new myJMenuItem());
|
|
m4.addI("fixedangle", new myJMenuItem());
|
|
ObjectsMenu.add(m4);
|
|
final myJMenu m5 = new myJMenu(Loc("objects.circles"), 0);
|
|
m5.addI("circle", new myJMenuItem());
|
|
m5.addI("fixedcircle", new myJMenuItem());
|
|
m5.addI("circle3", new myJMenuItem());
|
|
m5.addI("bi_circ", new myJMenuItem());
|
|
m5.addI("bi_arc", new myJMenuItem());
|
|
m5.addI("quadric", new myJMenuItem());
|
|
ObjectsMenu.add(m5);
|
|
final myJMenu m7 = new myJMenu(Loc("objects.functions"), 0);
|
|
m7.addI("text", new myJMenuItem());
|
|
m7.addI("expression", new myJMenuItem());
|
|
m7.addI("bi_function_u", new myJMenuItem());
|
|
m7.addI("function", new myJMenuItem());
|
|
m7.addI("equationxy", new myJMenuItem());
|
|
ObjectsMenu.add(m7);
|
|
final myJMenu m6 = new myJMenu(Loc("objects.tracks"), 0);
|
|
m6.addI("objecttracker", new myJMenuItem());
|
|
m6.addI("tracker", new myJMenuItem());
|
|
m6.addI("locus", new myJMenuItem());
|
|
ObjectsMenu.add(m6);
|
|
|
|
}
|
|
|
|
private void fixsize(final JComponent cp, final int w, final int h) {
|
|
final Dimension d = new Dimension(w, h);
|
|
cp.setMaximumSize(d);
|
|
cp.setMinimumSize(d);
|
|
cp.setPreferredSize(d);
|
|
cp.setSize(d);
|
|
}
|
|
|
|
private JEricPanel margintop(final int h) {
|
|
final JEricPanel mypan = new JEricPanel();
|
|
fixsize(mypan, 1, h);
|
|
mypan.setOpaque(false);
|
|
mypan.setFocusable(false);
|
|
return mypan;
|
|
}
|
|
|
|
private void showrestrictedmessage() {
|
|
if (Global.getParameter("showrestrictmessage", true)) {
|
|
final JEricPanel mypan = new JEricPanel();
|
|
mypan.setLayout(new BoxLayout(mypan, BoxLayout.Y_AXIS));
|
|
final JLabel mylabel = new JLabel(Global.Loc("menu.display.restrictmessage"));
|
|
mylabel.setFont(new Font("System", 0, 12));
|
|
final JCheckBox myjcb = new JCheckBox(Global.Loc("menu.display.restrictmessage.dontdisplay"));
|
|
mypan.add(mylabel);
|
|
mypan.add(margintop(10));
|
|
mypan.add(myjcb);
|
|
JOptionPane.showMessageDialog(null, mypan, "",
|
|
JOptionPane.PLAIN_MESSAGE, null);
|
|
Global.setParameter("showrestrictmessage", !myjcb.isSelected());
|
|
}
|
|
}
|
|
|
|
public void init() {
|
|
myJMenu menu;
|
|
menubar.removeAll();
|
|
this.removeAll();
|
|
final int ctrlkey = (OS.isMac()) ? InputEvent.META_DOWN_MASK
|
|
: InputEvent.CTRL_DOWN_MASK;
|
|
|
|
menubar.setOpaque(false);
|
|
menubar.setBorder(BorderFactory.createEmptyBorder());
|
|
menubar.setAlignmentY(0.5F);
|
|
|
|
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
|
|
|
|
/**
|
|
* **************************
|
|
* FILE MENU
|
|
***************************
|
|
*/
|
|
menu = new myJMenu(Loc("file"));
|
|
|
|
menu.addI("file.new", "new", KeyEvent.VK_N, ctrlkey, new myJMenuItem());
|
|
menu.addI("file.new3D", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.New3DWindow();
|
|
}
|
|
});
|
|
menu.addI("file.newDP", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.NewDPWindow();
|
|
}
|
|
});
|
|
|
|
|
|
menu.addSep();
|
|
menu.addI("file.load", "load", KeyEvent.VK_O, ctrlkey,
|
|
new myJMenuItem());
|
|
menu.addI("file.save", "save", KeyEvent.VK_S, ctrlkey,
|
|
new myJMenuItem());
|
|
menu.addI("tab.popup.savefileonly", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.saveFileAs();
|
|
}
|
|
});
|
|
menu.addI("workbook.saveas", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.saveWorkBookAs();
|
|
}
|
|
});
|
|
|
|
menu.addSep();
|
|
|
|
|
|
menu.addI("export.workbook", "", KeyEvent.VK_E, ctrlkey, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.HTMLWorkBookExport();
|
|
FileTools.SaveJarAndLaunchBrowser();
|
|
}
|
|
});
|
|
|
|
menu.addI("export.embedworkbook", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.HTMLWorkBookExtExport();
|
|
}
|
|
});
|
|
|
|
menu.addSep();
|
|
|
|
menu.addI("file.exportpng", "exportpng", 0, 0, new myJMenuItem());
|
|
menu.addI("file.exporteps", "exporteps", 0, 0, new myJMenuItem());
|
|
menu.addI("file.exportsvg", "exportsvg", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.exportGraphicFile(FileTools.SVG);
|
|
}
|
|
});
|
|
menu.addI("file.exportpdf", "exportpdf", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
FileTools.exportGraphicFile(FileTools.PDF);
|
|
}
|
|
});
|
|
menu.addSep();
|
|
menu.addI("file.close", "", KeyEvent.VK_W, ctrlkey, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
pipe_tools.closeCurrent();
|
|
}
|
|
});
|
|
menu.addSep();
|
|
menu.addI("file.quit", "", KeyEvent.VK_Q, ctrlkey, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
pipe_tools.quitAll();
|
|
}
|
|
});
|
|
|
|
menubar.add(menu);
|
|
/**
|
|
* **************************
|
|
* EDIT MENU
|
|
***************************
|
|
*/
|
|
menu = new myJMenu(Loc("edit"));
|
|
menu.addI("edit.copy", "copy", KeyEvent.VK_C, ctrlkey,
|
|
new myJMenuItem());
|
|
|
|
myJMenu submenu = new myJMenu(Loc("edit.copyto"), true);
|
|
|
|
|
|
submenu.addI("PDF", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
FileTools.exportGraphicFile(FileTools.PDF, null);
|
|
}
|
|
});
|
|
submenu.addI("SVG", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
FileTools.exportGraphicFile(FileTools.SVG, null);
|
|
}
|
|
});
|
|
submenu.addI("EPS", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
FileTools.exportGraphicFile(FileTools.EPS, null);
|
|
}
|
|
});
|
|
menu.add(submenu);
|
|
|
|
menu.addI("edit.copyapplettag", "", 0, 0,
|
|
new myJMenuItem(){
|
|
public void action() {
|
|
FileTools.copyAppletTag();
|
|
}
|
|
});
|
|
|
|
menu.addSep();
|
|
menu.addI("edit.move", "move", 0, 0, new myJMenuItem());
|
|
menu.addI("edit.rename", "rename", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
ZirkelFrame ZF = JZirkelCanvas.getCurrentZF();
|
|
if (ZF != null) {
|
|
ZF.settool("rename");
|
|
}
|
|
}
|
|
});
|
|
menu.addI("edit.edit", "edit", 0, 0, new myJMenuItem());
|
|
menu.addI("edit.zoom", "zoom", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
public void action() {
|
|
ZirkelFrame ZF = JZirkelCanvas.getCurrentZF();
|
|
if (ZF != null) {
|
|
ZF.settool("zoom");
|
|
}
|
|
}
|
|
});
|
|
menu.addI("edit.hide", "hide", 0, 0, new myJMenuItem());
|
|
menu.addI("edit.delete", "delete", 0, 0, new myJMenuItem());
|
|
menu.addSep();
|
|
menu.addI("edit.deactivatealltracks", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
ZirkelCanvas ZC = JZirkelCanvas.getCurrentZC();
|
|
ZC.UniversalTrack.clearTrackImage();
|
|
ZC.UniversalTrack.clearTrackObjects();
|
|
ZC.repaint();
|
|
}
|
|
});
|
|
menu.addI("edit.deletealltracks", "", KeyEvent.VK_T, ctrlkey, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
ZirkelCanvas ZC = JZirkelCanvas.getCurrentZC();
|
|
ZC.UniversalTrack.clearTrackImage();
|
|
ZC.repaint();
|
|
}
|
|
});
|
|
menu.addSep();
|
|
menu.addI("edit.deleteall", "", KeyEvent.VK_DELETE, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
ZirkelFrame ZF = JZirkelCanvas.getCurrentZF();
|
|
if (ZF.ZC.changed()) {
|
|
final Question q = new Question(pipe_tools.getFrame(), Global.Loc("savequestion.qsave"), Global.Loc("savequestion.title"), true);
|
|
q.center(null);
|
|
q.setVisible(true);
|
|
if (q.isAborted()) {
|
|
return;
|
|
}
|
|
if (q.yes()) {
|
|
FileTools.saveFile();
|
|
}
|
|
}
|
|
ZF.clear(false);
|
|
final ScriptPanel panel = JZirkelCanvas.getCurrentZC().getScriptsPanel();
|
|
panel.removeScript(Global.Loc("aerialview"));
|
|
panel.removeScript(Global.Loc("frontview"));
|
|
panel.removeScript(Global.Loc("rightview"));
|
|
panel.removeScript(Global.Loc("backview"));
|
|
ZF.Filename = "";
|
|
}
|
|
});
|
|
menubar.add(menu);
|
|
|
|
/**
|
|
* **************************
|
|
* OBJECTS MENU
|
|
***************************
|
|
*/
|
|
menubar.add(ObjectsMenu);
|
|
|
|
/**
|
|
* **************************
|
|
* DISPLAY MENU
|
|
***************************
|
|
*/
|
|
menu = new myJMenu(Loc("display"));
|
|
|
|
menu.addI("display.restrictedenvironment", "", KeyEvent.VK_R, ctrlkey, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
pipe_tools.showRestrictedEnvironmentManager();
|
|
}
|
|
});
|
|
menu.addSep();
|
|
hiddenitem = new myJMenuItem();
|
|
menu.addI("display.hidden", "hidden", 0, 0, false, hiddenitem);
|
|
griditem = new myJMenuItem();
|
|
menu.addI("display.grid", "grid", 0, 0, false, griditem);
|
|
menu.addSep();
|
|
menu.addI("display.smartboard", "", 0, 0, Global.getParameter(
|
|
"smartboard", false), new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
setSelected(!isSelected());
|
|
Global.setParameter("smartboard", isSelected());
|
|
}
|
|
});
|
|
menu.addSep();
|
|
|
|
menu.addI("display.leftpanel", "", 0, 0, LeftPanel.isPanelVisible(), leftpanelitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Open_left_panel_btn.toggle();
|
|
}
|
|
});
|
|
menu.addI("display.comment", "", 0, 0, Global.getParameter(
|
|
"comment", false), commentitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Open_middle_panel_btn.toggle();
|
|
}
|
|
});
|
|
menu.addI("display.palette", "", 0, 0, RightPanel.isPanelVisible(), paletteitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Open_right_panel_btn.toggle();
|
|
}
|
|
});
|
|
menu.addSep();
|
|
menu.addI("display.properties_panel", "properties_panel",
|
|
KeyEvent.VK_P, ctrlkey, false, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
JPropertiesBar.ShowHideBar();
|
|
}
|
|
});
|
|
menu.addSep();
|
|
largeitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
if (!isSelected()) {
|
|
themes.setPaletteIconWidth(32);
|
|
setSelected(true);
|
|
mediumitem.setSelected(false);
|
|
smallitem.setSelected(false);
|
|
pipe_tools.getContent().rebuiltRightPanel();
|
|
}
|
|
}
|
|
};
|
|
menu.addI("display.large", "", 0, 0, false, largeitem);
|
|
|
|
mediumitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
if (!isSelected()) {
|
|
themes.setPaletteIconWidth(28);
|
|
setSelected(true);
|
|
largeitem.setSelected(false);
|
|
smallitem.setSelected(false);
|
|
pipe_tools.getContent().rebuiltRightPanel();
|
|
}
|
|
}
|
|
};
|
|
menu.addI("display.medium", "", 0, 0, false, mediumitem);
|
|
|
|
smallitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
if (!isSelected()) {
|
|
themes.setPaletteIconWidth(24);
|
|
setSelected(true);
|
|
mediumitem.setSelected(false);
|
|
largeitem.setSelected(false);
|
|
pipe_tools.getContent().rebuiltRightPanel();
|
|
}
|
|
}
|
|
};
|
|
menu.addI("display.small", "", 0, 0, false, smallitem);
|
|
|
|
switch (Global.getParameter("options.iconsize", 1)) {
|
|
case 0:
|
|
largeitem.setSelected(true);
|
|
break;
|
|
case 1:
|
|
mediumitem.setSelected(true);
|
|
break;
|
|
case 2:
|
|
smallitem.setSelected(true);
|
|
break;
|
|
}
|
|
|
|
menu.addSep();
|
|
|
|
submenu = new myJMenu(Loc("language"), true);
|
|
|
|
submenu.addI("zh", "TW", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("zh", "TW");
|
|
}
|
|
});
|
|
submenu.addI("ar", "TN", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("ar", "TN");
|
|
}
|
|
});
|
|
submenu.addI("pt", "BR", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("pt", "BR");
|
|
}
|
|
});
|
|
submenu.addI("de", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("de", "");
|
|
}
|
|
});
|
|
submenu.addI("en", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("en", "");
|
|
}
|
|
});
|
|
submenu.addI("es", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("es", "");
|
|
}
|
|
});
|
|
submenu.addI("fr", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("fr", "");
|
|
}
|
|
});
|
|
submenu.addI("gl", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("gl", "");
|
|
}
|
|
});
|
|
submenu.addI("it", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("it", "");
|
|
}
|
|
});
|
|
submenu.addI("nl", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("nl", "");
|
|
}
|
|
});
|
|
submenu.addI("no", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("no", "");
|
|
}
|
|
});
|
|
submenu.addI("pl", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("pl", "");
|
|
}
|
|
});
|
|
submenu.addI("pt", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("pt", "");
|
|
}
|
|
});
|
|
submenu.addI("ru", "RU", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("ru", "RU");
|
|
}
|
|
});
|
|
submenu.addI("sl", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("sl", "");
|
|
}
|
|
});
|
|
submenu.addI("sv", "", new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.setLanguage("sv", "");
|
|
}
|
|
});
|
|
|
|
menu.add(submenu);
|
|
|
|
menubar.add(menu);
|
|
|
|
/**
|
|
* **************************
|
|
* MACROS MENU : Initialised by
|
|
***************************
|
|
*/
|
|
menubar.add(MacrosMenu);
|
|
|
|
/**
|
|
* **************************
|
|
* JAVASCRIPT MENU
|
|
***************************
|
|
*/
|
|
InitJSMenu();
|
|
menubar.add(JSMenu);
|
|
|
|
/**
|
|
* **************************
|
|
* SPECIAL MENU
|
|
***************************
|
|
*/
|
|
menu = new myJMenu(Loc("assigment"));
|
|
|
|
|
|
definejobitem = new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
pipe_tools.showExerciseManager();
|
|
}
|
|
};
|
|
menu.addI("special.definejob", "", KeyEvent.VK_J, ctrlkey, false, definejobitem);
|
|
|
|
menubar.add(menu);
|
|
|
|
/**
|
|
* **************************
|
|
* NETWORK MENU
|
|
***************************
|
|
*/
|
|
menu = new myJMenu(Loc("network"));
|
|
menu.addI(Global.Loc("network.menu.connect"), "", 0, 0, new myJMenuItem(){
|
|
|
|
@Override
|
|
void action(){
|
|
cnt = JZirkelCanvas.getCurrentZC().get_cnt();
|
|
if(cnt==null) { //then display the ConnectionControlPanel
|
|
pm.Client.ConnectionControlPanel client = new pm.Client.ConnectionControlPanel();
|
|
JZirkelCanvas.getCurrentZC().add(client);
|
|
JZirkelCanvas.getCurrentZC().repaint();
|
|
client.init();
|
|
PaletteManager.deselectgeomgroup();
|
|
JZirkelCanvas.getCurrentZC().showStatus("");
|
|
} else { //cut the connection
|
|
cnt.doClose();
|
|
}
|
|
}
|
|
});
|
|
menu.addI(Global.Loc("network.menu.launch"), "", 0, 0, new myJMenuItem(){
|
|
|
|
@Override
|
|
void action(){
|
|
if(scp==null){
|
|
scp = new pm.Server.ServerControlPanel();
|
|
JZirkelCanvas.getCurrentZC().add(scp);
|
|
JZirkelCanvas.getCurrentZC().repaint();
|
|
scp.init();
|
|
PaletteManager.deselectgeomgroup();
|
|
JZirkelCanvas.getCurrentZC().showStatus("");
|
|
} else {
|
|
scp.close_and_kill_server();
|
|
JZirkelCanvas.getCurrentZC().remove(scp);
|
|
JZirkelCanvas.getCurrentZC().repaint();
|
|
PaletteManager.setSelected_with_clic("move", true);
|
|
scp = null;
|
|
}
|
|
}
|
|
});
|
|
|
|
menubar.add(menu);
|
|
|
|
/**
|
|
* **************************
|
|
* HELP MENU
|
|
***************************
|
|
*/
|
|
menu = new myJMenu(Loc("help"));
|
|
menu.addI("help.about", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
JLogoWindow.ShowLogoWindow(true);
|
|
// new JAboutDialog(JZirkelCanvas.getCurrentJZF());
|
|
}
|
|
});
|
|
menu.addI("help.licence", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
new JLicence(JZirkelCanvas.getCurrentJZF());
|
|
}
|
|
});
|
|
menu.addI("help.info", "help_panel", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Open_left_panel_btn.open();
|
|
LeftPanel.selectHelp();
|
|
}
|
|
});
|
|
menu.addSep();
|
|
menu.addI("help.url0", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
JBrowserLauncher.openURL("http://carmetal.org/index.php/fr/");
|
|
}
|
|
});
|
|
menu.addI("help.url1", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
JBrowserLauncher.openURL("http://carmetal.org/index.php/fr/tutoriels/carzine");
|
|
}
|
|
});
|
|
menu.addI("help.url2", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
JBrowserLauncher.openURL("http://car.rene-grothmann.de/doc_en/");
|
|
}
|
|
});
|
|
menu.addSep();
|
|
menu.addI("help.url3", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
JBrowserLauncher.openURL("http://db-maths.nuxit.net/CaRMetal/index_translate.html");
|
|
}
|
|
});
|
|
|
|
menu.addSep();
|
|
|
|
menu.addI("help.opendefaultfolder", "", 0, 0, new myJMenuItem() {
|
|
|
|
@Override
|
|
void action() {
|
|
Global.openHomeDirectoryInDesktop();
|
|
}
|
|
});
|
|
menubar.add(menu);
|
|
this.add(menubar);
|
|
this.validate();
|
|
this.repaint();
|
|
}
|
|
|
|
public static pm.Server.ServerControlPanel get_scp(){
|
|
return scp;
|
|
}
|
|
}
|