package plugins.latex; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.geom.AffineTransform; import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import atp.sHotEqn; public class JZoomedHotEqn extends sHotEqn { static private double zoom = 1f; static String editorTitle = null; private LatexNodeHook model; JZoomedHotEqn(LatexNodeHook model) { setDebug(false); setEditable(false); setBorder(true); this.model = model; setEquation(model.getContent(null)); if (editorTitle == null) { editorTitle = model.getMindMapController().getText( "plugins/latex/LatexNodeHook.editorTitle"); } } public Dimension getPreferredSize() { Dimension dimension = isValid() ? super.getPreferredSize() : getSizeof(getEquation()); dimension.height *= zoom; dimension.width *= zoom; return dimension; } public void paint(Graphics g) { if (zoom != 1F) { Graphics2D g2 = (Graphics2D) g; final AffineTransform transform = g2.getTransform(); g2.scale(zoom, zoom); super.paint(g); g2.setTransform(transform); } else { super.paint(g); } } public void setBounds(int x, int y, int w, int h) { if (zoom < 1f) { super.setBounds(x, y, (int) (w / zoom), (int) (h / zoom)); } else { super.setBounds(x, y, (int) (w), (int) (h)); } } public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { edit(); e.consume(); return; } super.mouseClicked(e); } private void edit() { JTextArea textArea = new JTextArea(getEquation()); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); final JScrollPane editorScrollPane = new JScrollPane(textArea); editorScrollPane .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); editorScrollPane.setPreferredSize(new Dimension(500, 160)); JDialog edit = new JDialog(JOptionPane.getFrameForComponent(this), editorTitle, true); edit.getContentPane().add(editorScrollPane); edit.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); edit.pack(); edit.setLocationRelativeTo(this); edit.setVisible(true); String eq = textArea.getText(); model.setContent(null, eq); } public void setModel(LatexNodeHook model) { this.model = model; setEquation(model.getContent(null)); revalidate(); repaint(); } }