package org.freehep.webutil.tabs.servlet;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Arc2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.freehep.swing.ColorConverter;
/**
* @author The FreeHEP team @ SLAC.
*
*/
public class TabCorner extends JPanel {
public final static int UPPER_LEFT = 0;
public final static int UPPER_RIGHT = 1;
public final static int LOWER_LEFT = 2;
public final static int LOWER_RIGHT = 3;
private int type;
private int size;
private Color color;
private Color bkgColor;
TabCorner(int type, int size, String color, String bkgColor) {
super();
this.type = type;
this.size = size;
try {
this.color = ColorConverter.get(color);
} catch (Exception e) {
this.color = Color.green;
}
try {
this.bkgColor = ColorConverter.get(bkgColor);
} catch (Exception e) {
this.bkgColor = Color.white;
}
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setStroke(new BasicStroke((float)1.0));
g2.setColor(bkgColor);
g2.drawRect(0, 0, size, size);
g2.fillRect(0, 0, size, size);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
// draw arcs
Arc2D arc = new Arc2D.Double(Arc2D.PIE);
switch (type) {
case LOWER_LEFT:
arc.setFrame(0, -1*size, 2*size, 2*size);
arc.setAngleStart(180);
arc.setAngleExtent(90);
break;
case LOWER_RIGHT:
arc.setFrame(-1*size,-1*size, 2*size, 2*size);
arc.setAngleStart(270);
arc.setAngleExtent(90);
break;
case UPPER_LEFT:
arc.setFrame(0, 0, 2*size, 2*size);
arc.setAngleStart(90);
arc.setAngleExtent(90);
break;
case UPPER_RIGHT:
arc.setFrame(-1*size, 0, 2*size, 2*size);
arc.setAngleStart(0);
arc.setAngleExtent(90);
break;
default:
throw new IllegalArgumentException("Illegal TabCorner type: "+type);
}
g2.setColor(color);
g2.fill(arc);
g2.draw(arc);
}
}