/* 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 . */ package eric; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.Point; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.SwingConstants; import rene.gui.Global; import rene.zirkel.ZirkelCanvas; import rene.zirkel.expression.Expression; import rene.zirkel.objects.ConstructionObject; import eric.bar.JProperties; import javax.swing.JPanel; import rene.gui.Global; /** * * @author erichake */ public class JMacroPrompt extends JDialog { /** * */ private static final long serialVersionUID = 1L; // boolean Valid=false; JTextField T = new JTextField(); // String S=""; String InitValue = ""; ConstructionObject OC; ZirkelCanvas ZC; int WindowEventCount = 0; Color TitleColor = new Color(200, 200, 200); Color TxtColor = new Color(250, 250, 250); Color DlogColor = new Color(90, 90, 90); 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 margin(final int w) { final JEricPanel mypan = new JEricPanel(); fixsize(mypan, w, 1); mypan.setOpaque(false); mypan.setFocusable(false); return mypan; } private boolean isValidExpression(final String myexp) { boolean bool = true; try { final Expression exp = new Expression(myexp, OC.getConstruction(), OC); if (!(exp.isValid())) bool = false; } catch (final Exception ex) { bool = false; } return bool; } public JMacroPrompt(final Frame f, final ZirkelCanvas zc, final String oName, final ConstructionObject oc) { super(f, true); OC = oc; ZC = zc; try { InitValue = String.valueOf(OC.getValue()); } catch (final Exception ex) { } final JPanel content = (JPanel) this.getContentPane(); this.setUndecorated(true); content.setLayout(new javax.swing.BoxLayout(content, javax.swing.BoxLayout.Y_AXIS)); content.setBackground(DlogColor); // this.setBackground(new Color(0.2f, 0.2f, 0.2f, 0.5f)); // content.setOpaque(false); final JLabel p1 = new JLabel(Global.name("macro.prompt.prompt") + " :"); p1.setHorizontalAlignment(SwingConstants.CENTER); fixsize(p1, 300, 15); p1.setAlignmentX(0.5f); p1.setOpaque(false); p1.setFont(new java.awt.Font(Global.GlobalFont, 1, 12)); p1.setForeground(TitleColor); final JEricPanel p2 = new JEricPanel(); p2 .setLayout(new javax.swing.BoxLayout(p2, javax.swing.BoxLayout.X_AXIS)); final JLabel p21 = new JLabel(oName); final JButton okbtn = new JButton(); okbtn.setIcon(new ImageIcon(getClass().getResource( "/eric/GUI/icons/palette/Mvalid.png"))); okbtn.setBorder(BorderFactory.createEmptyBorder()); okbtn.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(final MouseEvent e) { doclose(); } }); okbtn.setContentAreaFilled(false); final JButton cancelbtn = new JButton(); cancelbtn.setIcon(new ImageIcon(getClass().getResource( "/eric/GUI/icons/palette/Mcancel.png"))); cancelbtn.setBorder(BorderFactory.createEmptyBorder()); cancelbtn.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(final MouseEvent e) { T.setText(InitValue); try { OC.setExpression(T.getText(), OC.getConstruction()); OC.setSlider(false); } catch (final Exception ex) { } ZC.recompute(); ZC.validate(); ZC.repaint(); T.requestFocus(); T.selectAll(); } }); cancelbtn.setContentAreaFilled(false); fixsize(p21, 120, 18); fixsize(T, 118, 18); p2.add(margin(5)); p2.add(p21); p2.add(margin(10)); p2.add(T); p2.add(margin(5)); p2.add(cancelbtn); p2.add(margin(5)); p2.add(okbtn); p2.add(margin(5)); fixsize(p2, 300, 30); p2.setAlignmentX(0.5f); p2.setOpaque(false); p21.setOpaque(false); p21.setFont(new java.awt.Font(Global.GlobalFont, 1, 12)); T.setFont(new java.awt.Font(Global.GlobalFont, 1, 12)); p21.setForeground(TxtColor); T.setText(JProperties.Point_To_Comma(InitValue, OC.getConstruction(), true)); content.add(p1); content.add(p2); T.addKeyListener(new KeyAdapter() { @Override public void keyPressed(final KeyEvent e) { if ((e.getKeyCode() == KeyEvent.VK_ENTER) || (e.getKeyCode() == KeyEvent.VK_ESCAPE)) { doclose(); } } @Override public void keyReleased(final KeyEvent e) { final String e1 = JProperties.Comma_To_Point(T.getText(), OC .getConstruction(), true); final String myexp = (isValidExpression(e1)) ? e1 : "invalid"; try { OC.setExpression(myexp, OC.getConstruction()); OC.setSlider(false); } catch (final Exception ex) { } ZC.recompute(); ZC.validate(); ZC.repaint(); } }); this.addWindowListener(new WindowAdapter() { @Override public void windowOpened(final WindowEvent e) { T.requestFocus(); T.selectAll(); } }); pack(); final Point pt = zc.getLocationOnScreen(); pt.x += zc.getSize().width / 2 - this.getSize().width / 2; pt.y += zc.getSize().height - this.getSize().height; this.setLocation(pt); this.setVisible(true); } public void doclose() { final String e1 = JProperties.Comma_To_Point(T.getText(), OC .getConstruction(), true); final String myexp = (isValidExpression(e1)) ? e1 : InitValue; try { OC.setExpression(myexp, OC.getConstruction()); OC.setSlider(false); } catch (final Exception ex) { } ZC.recompute(); ZC.validate(); ZC.repaint(); setVisible(false); dispose(); } }