/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package app.navigps.gui.repaintmanager;
import app.navigps.gui.detailspanel.AlphaInterface;
import app.navigps.gui.detailspanel.AlphaJPanel;
import java.awt.Container;
import java.awt.Rectangle;
import javax.swing.JComponent;
import javax.swing.RepaintManager;
/**
*
* @author wara
*/
public class AlphaRepaintManager extends RepaintManager {
@Override
public void addDirtyRegion(JComponent c, int x, int y, int w, int h) {
Rectangle dirtyRegion = getDirtyRegion(c);
if (dirtyRegion.width == 0 && dirtyRegion.height == 0) {
int lastDeltaX = c.getX();
int lastDeltaY = c.getY();
Container parent = c.getParent();
while (parent instanceof JComponent) {
if (!parent.isVisible() || (parent.getPeer() == null)) {
return;
}
if (parent instanceof AlphaInterface &&
(((AlphaInterface)parent).getAlpha() < 1f ||
!parent.isOpaque())) {
x += lastDeltaX;
y += lastDeltaY;
lastDeltaX = lastDeltaY = 0;
c = (JComponent)parent;
}
lastDeltaX += parent.getX();
lastDeltaY += parent.getY();
parent = parent.getParent();
}
}
super.addDirtyRegion(c, x, y, w, h);
}
}//AlphaRepaintManager