Package abstrasy.bedesk.ui

Source Code of abstrasy.bedesk.ui.BeTabsGroup

package abstrasy.bedesk.ui;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.Transparency;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.Border;


/**
* Abstrasy Interpreter
*
* Copyright : Copyright (c) 2006-2012, Luc Bruninx.
*
* Concédée sous licence EUPL, version 1.1 uniquement (la «Licence»).
*
* Vous ne pouvez utiliser la présente oeuvre que conformément à la Licence.
* Vous pouvez obtenir une copie de la Licence à l’adresse suivante:
*
*   http://www.osor.eu/eupl
*
* Sauf obligation légale ou contractuelle écrite, le logiciel distribué sous
* la Licence est distribué "en l’état", SANS GARANTIES OU CONDITIONS QUELLES
* QU’ELLES SOIENT, expresses ou implicites.
*
* Consultez la Licence pour les autorisations et les restrictions
* linguistiques spécifiques relevant de la Licence.
*
*
* @author Luc Bruninx
* @version 1.0
*
* Note:
* ====
*
* Le code suivant est offert sous sous la licence mentionnée ci-dessus par
* la société BEDESK sprl dans le cadre du support du projet Abstrasy.
*
*/

public class BeTabsGroup extends JPanel {

    FlowLayout flowLayout1 = new FlowLayout();
    Border border1;
    Border border2;


    private boolean topConnected = false;

    private int roundDiameter = 2;
    private int leftOffset = 0;
    private int rightOffset = 0;
    private int topOffset = 0;
    private int bottomOffset = 0;

    Border border3;
    Border border4;
    private int ow = -1;
    private int oh = -1;
    private BufferedImage vgBuffer = null;
    private int bw = -1;
    private int bh = -1;

    private boolean bottomConnected = false;

    public BeTabsGroup() {
        try {
            jbInit();
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    void jbInit() throws Exception {
        this.setLayout(flowLayout1);
        this.setMinimumSize(new Dimension(22, 22));
        this.setOpaque(false);
    }

    public void setBuffer() {
        GraphicsConfiguration configuration = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
        vgBuffer = configuration.createCompatibleImage(bw, bh, Transparency.TRANSLUCENT);
    }

    public void paintComponent(Graphics g) {
        Graphics2D g2x = (Graphics2D) g;
        g2x.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        super.paintComponent(g);

        if (this.getWidth() != ow) {
            ow = this.getWidth();
            bw = ow - leftOffset - rightOffset;
            if (bw < 1) {
                bw = 1;
            }
            vgBuffer = null;
        }
        if (this.getHeight() != oh) {
            oh = this.getHeight();
            bh = oh - topOffset - bottomOffset;
            if (bh < 1) {
                bh = 1;
            }
            vgBuffer = null;
        }
        if (vgBuffer == null) {
            setBuffer();
            Graphics2D g2 = vgBuffer.createGraphics();
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            if (topConnected) {
                GradientPaint gp = new GradientPaint(new Point(0, 0), new Color(0, 0, 0, 0), new Point(0, bh), new Color(0, 0, 0, 42));
                g2.setPaint(gp);
                g2.fillRoundRect(0, 0 - roundDiameter, bw - 1, bh - 1 + roundDiameter, roundDiameter, roundDiameter);
                g2.drawRoundRect(0, 0 - roundDiameter, bw - 2, bh - 2 + roundDiameter, roundDiameter, roundDiameter);
                GradientPaint gp1 = new GradientPaint(new Point(0, 0), new Color(0, 0, 0, 0), new Point(0, bh), new Color(96, 96, 96));
                g2.setPaint(gp1);
                g2.drawRoundRect(0, 0 - roundDiameter, bw - 2, bh + roundDiameter - 1, roundDiameter, roundDiameter);

            }
            else {
                GradientPaint gp = new GradientPaint(new Point(0, 0), new Color(0, 0, 0, 42), new Point(0, bh), new Color(0, 0, 0, 0));
                g2.setPaint(gp);
                g2.fillRoundRect(0, 0, bw - 1, bh + roundDiameter, roundDiameter, roundDiameter);
                g2.drawRoundRect(0, 1, bw - 2, bh + roundDiameter, roundDiameter, roundDiameter);
                GradientPaint gp1 = new GradientPaint(new Point(0, 0), new Color(96, 96, 96), new Point(0, bh), new Color(0, 0, 0, 0));
                g2.setPaint(gp1);
                g2.drawRoundRect(0, 0, bw - 2, bh + roundDiameter, roundDiameter, roundDiameter);
            }
        }
        if (vgBuffer != null) {
            g2x.drawImage(vgBuffer, null, leftOffset, topOffset);
        }
      
      
        if(bottomConnected){
           g2x.setPaint(new Color(96, 96, 96));
           g2x.draw(new Line2D.Float(0,this.getHeight()-1,this.getWidth()-1,this.getHeight()-1));
        }
    }

    public int getRoundDiameter() {
        return roundDiameter;
    }

    public void setRoundDiameter(int roundDiameter) {
        this.roundDiameter = roundDiameter;
        border1 = BorderFactory.createEmptyBorder(0, this.roundDiameter / 2, 0, 0);
        vgBuffer = null;
        this.repaint();
    }

    public boolean isTopConnected() {
        return topConnected;
    }

    public void setTopConnected(boolean topConnected) {
        this.topConnected = topConnected;
        vgBuffer = null;
        this.repaint();
    }

    public int getBottomOffset() {
        return bottomOffset;
    }

    public void setBottomOffset(int bottomOffset) {
        this.bottomOffset = bottomOffset;
        vgBuffer = null;
        this.repaint();
    }

    public int getLeftOffset() {
        return leftOffset;
    }

    public void setLeftOffset(int leftOffset) {
        this.leftOffset = leftOffset;
        vgBuffer = null;
        this.repaint();
    }

    public int getRightOffset() {
        return rightOffset;
    }

    public void setRightOffset(int rightOffset) {
        this.rightOffset = rightOffset;
        vgBuffer = null;
        this.repaint();
    }

    public int getTopOffset() {
        return topOffset;
    }

    public void setTopOffset(int topOffset) {
        this.topOffset = topOffset;
        vgBuffer = null;
        this.repaint();
    }


    public void setBottomConnected(boolean bottomConnected) {
        this.bottomConnected = bottomConnected;
        vgBuffer = null;
        this.repaint();
    }

    public boolean isBottomConnected() {
        return bottomConnected;
    }

}
TOP

Related Classes of abstrasy.bedesk.ui.BeTabsGroup

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.