package org.geogebra.desktop.euclidian; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.MouseEvent; import javax.swing.JPanel; import org.geogebra.common.euclidian.EuclidianView; import org.geogebra.common.euclidian.EuclidianViewJPanel; import org.geogebra.desktop.awt.GGraphics2DD; import org.geogebra.desktop.awt.GRectangleD; public class EuclidianViewJPanelD extends JPanel implements EuclidianViewJPanel { private static final long serialVersionUID = 1L; EuclidianView view; public EuclidianViewJPanelD(EuclidianView view, boolean addListeners) { this.view = view; // algebra controller will take care of our key events setFocusable(true); setLayout(null); setMinimumSize(new Dimension(20, 20)); // register Listener if (addListeners) { ((EuclidianControllerListeners) view.getEuclidianController()) .addListenersTo(this); } // enable drop transfers setTransferHandler(new EuclidianViewTransferHandler(view)); } public EuclidianViewJPanelD(EuclidianView view) { this(view, true); } protected Color bgColor; @Override public Color getBackground() { return bgColor; } @Override public void setBackground(Color bgColor) { if (bgColor != null) { this.bgColor = bgColor; } } @Override public void paintChildren(Graphics g) { super.paintChildren(g); } public int temporaryWidth = -1; public int temporaryHeight = -1; @Override public int getWidth() { return (temporaryWidth > 0) ? temporaryWidth : super.getWidth(); } @Override public int getHeight() { return (temporaryHeight > 0) ? temporaryHeight : super.getHeight(); } @Override public Rectangle getBounds() { return GRectangleD.getAWTRectangle(view.getBounds()); } @Override public void setToolTipText(String plain) { super.setToolTipText(plain); } private GGraphics2DD g2 = new GGraphics2DD(null); @Override final public void paint(Graphics g) { g2.setImpl((Graphics2D) g); view.paint(g2); } public void processMouseEventImpl(MouseEvent e) { processMouseEvent(e); } }