/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package app.navigps.gui.detailspanel;
import java.awt.AlphaComposite;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import javax.swing.JPanel;
/**
*
* @author wara
*/
public class AlphaJPanel extends JPanel implements AlphaInterface{
/**
*
*/
public static final String ALPHA_CHANGE = "AlphaJPanel.alpha.change";
/**
*
*/
public static final String UPPER_ALPHA_CHANGE = "AlphaJPanel.upper.alpha.change";
private volatile float upperThresholdAlpha = 1f;
private volatile float alpha = 1f;
/**
*
* @param layout
* @param isDoubleBuffered
*/
public AlphaJPanel(LayoutManager layout, boolean isDoubleBuffered) {
super(layout, isDoubleBuffered);
}
/**
*
* @param layout
*/
public AlphaJPanel(LayoutManager layout) {
this(layout, true);
}
/**
*
* @param isDoubleBuffered
*/
public AlphaJPanel(boolean isDoubleBuffered) {
this(new FlowLayout(), isDoubleBuffered);
}
/**
* Creates a new <code>JPanel</code> with a double buffer
* and a flow layout.
*/
public AlphaJPanel() {
this(true);
}
@Override
public void paint(Graphics g) {
super.paint(g);
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, getAlpha()));
super.paintComponent(g2);
}
@Override
protected void paintBorder(Graphics g) {
super.paintBorder(g);
}
@Override
protected void paintChildren(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, getAlpha()));
super.paintChildren(g2);
}
/**
* @return the upperThresholdAlpha
*/
@Override
public float getUpperThresholdAlpha() {
return upperThresholdAlpha;
}
/**
* @param upperThresholdAlpha the upperThresholdAlpha to set
*/
@Override
public void setUpperThresholdAlpha(float upperThresholdAlpha) {
float oldVal = this.upperThresholdAlpha;
this.upperThresholdAlpha = upperThresholdAlpha;
firePropertyChange(UPPER_ALPHA_CHANGE, oldVal,upperThresholdAlpha);
}
/**
* @return the alpha
*/
@Override
public float getAlpha() {
return alpha;
}
/**
* @param alpha the alpha to set
* @return
*/
@Override
public boolean setAlpha(float alpha) {
if(alpha<=getUpperThresholdAlpha()){
float oldVal = this.alpha;
this.alpha = alpha;
firePropertyChange(ALPHA_CHANGE, oldVal,alpha);
return true;
}return false;
}
}