+++ /dev/null
-package tim.prune.gui.map;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-
-import javax.swing.JPanel;
-
-/**
- * Semi-transparent panel to go on top of the map
- * to contain a set of controls
- */
-public class OverlayPanel extends JPanel
-{
- // Previous dimensions to see if calculations necessary
- private int _prevWidth = -1, _prevHeight = -1;
- // Previously calculated border limits
- private int _minX, _minY, _width, _height;
-
- /**
- * Constructor
- */
- public OverlayPanel()
- {
- setOpaque(false);
- }
-
- /**
- * Paint the contents
- */
- public void paint(Graphics g)
- {
- int panelWidth = getWidth();
- int panelHeight = getHeight();
- if (panelWidth != _prevWidth || panelHeight != _prevHeight)
- {
- calculateBorder();
- _prevWidth = panelWidth;
- _prevHeight = panelHeight;
- }
- // Draw white background
- final Color BG = new Color(255, 255, 255, 200);
- g.setColor(BG);
- g.fillRect(_minX, _minY, _width, _height);
- // Draw black border
- g.setColor(Color.BLACK);
- g.drawRect(_minX, _minY, _width, _height);
- // Paint everything else
- super.paint(g);
- }
-
- /**
- * Calculate the boundaries to paint over
- */
- private void calculateBorder()
- {
- final int PADDING = 2;
- // Calculate where the border should be drawn
- final Component firstComp = getComponent(0);
- final Component lastComp = getComponent(getComponentCount()-1);
- _minX = Math.max(firstComp.getX() - PADDING, 0);
- final int maxX = Math.min(lastComp.getX() + lastComp.getWidth() + PADDING, getWidth()-1);
- _width = maxX - _minX;
- _minY = Math.max(Math.min(firstComp.getY(), lastComp.getY()) - PADDING, 0);
- final int maxY = Math.max(firstComp.getY()+firstComp.getHeight(), lastComp.getY()+lastComp.getHeight()) + PADDING;
- _height = maxY - _minY;
- //System.out.println("x from " + minx + " to " + maxx + ", y from " + miny + " to " + maxy);
- }
-}