/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package app.navigps.gui.borders; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.RenderingHints; import java.awt.geom.RoundRectangle2D; /** * Created on 2008-12-09, 04:50:17 * @author vara */ public class OvalBorder extends RoundBorder{ private Color borderColor=new Color(90,100,190,255); private Insets insets = new Insets(4, 4, 4, 4); /** * */ public OvalBorder() { } /** * * @param recw * @param rech */ public OvalBorder(float recw, float rech) { super(recw,rech); } /** * * @param recw * @param rech * @param topColor */ public OvalBorder(float recw, float rech, Color topColor) { this(recw,rech); borderColor = topColor; setAlpha((float)borderColor.getAlpha()/255); setUpperThresholdAlpha(getAlpha()); } /** * * @param top * @param left * @param bottom * @param right * @param recw * @param rech * @param topColor */ public OvalBorder(int top, int left, int bottom, int right,float recw, float rech, Color topColor) { this(recw,rech); insets = new Insets(top, left, bottom, right); borderColor = topColor; } /** * * @param top * @param left * @param bottom * @param right * @param topColor */ public OvalBorder(int top, int left, int bottom, int right,Color topColor) { insets = new Insets(top, left, bottom, right); borderColor = topColor; } /** * * @param top * @param left * @param bottom * @param right */ public OvalBorder(int top, int left, int bottom, int right) { insets = new Insets(top, left, bottom, right); } /** * * @param top * @param left * @param bottom * @param right * @param recw * @param rech */ public OvalBorder(int top, int left, int bottom, int right,float recw, float rech) { this(top, left, bottom, right); setRecH(rech); setRecW(recw); } /** * * @param c * @return */ @Override public Insets getBorderInsets(Component c) { return getInsets(); } /** * * @return */ @Override public boolean isBorderOpaque() { return true; } /** * * @param c * @param g * @param x * @param y * @param w * @param h */ @Override public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { if(getAlpha()>0){ super.paintBorder(c, g, x, y, h, h); RoundRectangle2D border = createOuterShape(x,y,w-1,h-1,getRecW(),getRecH(),getInsets()); Graphics2D g2 = (Graphics2D)g.create(); g2.setColor(getBorderColor()); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); g2.draw(border); g2.dispose(); } } /** * * @param x * @param y * @param w * @param h * @param arcx * @param arcy * @param insetsOuter * @return */ public static RoundRectangle2D.Double createOuterShape(double x, double y, double w, double h, double arcx,double arcy,Insets insetsOuter){ //double outerX=x+insetsOuter.left; //double outerY=y+insetsOuter.top; //double outerWidth = w-insetsOuter.right-outerX; //double outerHeight = h-insetsOuter.bottom-outerY; double outerX=x; double outerY=y; double outerWidth = w; double outerHeight = h; return new RoundRectangle2D.Double(outerX,outerY,outerWidth,outerHeight,arcx,arcy); } /** * @return the borderColor */ public Color getBorderColor() { return borderColor; } /** * @param borderColor the borderColor to set */ public void setBorderColor(Color borderColor) { this.borderColor = borderColor; } /** * @return the insets */ public Insets getInsets() { return insets; } /** * @param insets the insets to set */ public void setInsets(Insets insets) { this.insets = insets; } /** * * @param ins */ @Override public void setBorderInsets(Insets ins) { setInsets(ins); } }