Skip to content
Snippets Groups Projects
Select Git revision
  • 7096e8632b79718554e7624a48a06178a96ad1dc
  • master default protected
  • icy-3.0.0
  • v3.0.0-a.1
  • v2.3.1
5 results

InverterCheckBox.java

Blame
  • InverterCheckBox.java 2.25 KiB
    package plugins.tprovoost.Microscopy.gui;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.FontMetrics;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.RenderingHints;
    import java.awt.image.BufferedImage;
    
    import javax.swing.JCheckBox;
    
    public class InverterCheckBox extends JCheckBox {
    
    	/** */
    	private static final long serialVersionUID = 4893333197103321565L;
    
    	private static int knobLength = 40;
    	private static int knobHeight = 20;
    	private static int buttonSize = 20;
    
    	// IMAGES
    	private BufferedImage imgBtnInvertOn;
    	private BufferedImage imgBtnInvertOff;
    	private BufferedImage imgLightOn;
    	private BufferedImage imgLightOff;
    
    	public InverterCheckBox(String string) {
    		super(string);
    	}
    
    	public void setImages(BufferedImage imgBtnInvertOn,
    			BufferedImage imgBtnInvertOff, BufferedImage imgLightOn,
    			BufferedImage imgLightOff) {
    		this.imgBtnInvertOn = imgBtnInvertOn;
    		this.imgBtnInvertOff = imgBtnInvertOff;
    		this.imgLightOn = imgLightOn;
    		this.imgLightOff = imgLightOff;
    	}
    
    	@Override
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		boolean selected = isSelected();
    		String text = getText();
    		Font f = new Font("Arial", Font.BOLD, 16);
    		int actualWidthIdx = 30;
    		int height = getHeight();
    
    		Graphics2D g2 = (Graphics2D) g.create();
    		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    		g2.setFont(f);
    		FontMetrics fm = g2.getFontMetrics();
    		g2.setColor(new Color(39, 39, 39, 255));
    		g2.fillRect(0, 0, getWidth(), height);
    		g2.setColor(Color.lightGray);
    
    		// Draw the knob
    		if (selected) {
    			g2.drawImage(imgBtnInvertOn, actualWidthIdx - 20, height / 2- knobHeight / 2, knobLength, knobHeight, null);
    		} else {
    			g2.drawImage(imgBtnInvertOff, actualWidthIdx - 20, height / 2- knobHeight / 2, knobLength, knobHeight, null);
    		}
    		actualWidthIdx += 20;
    
    		// draw the text
    		g2.drawString(text, actualWidthIdx += 20, height / 2 + fm.getHeight()/ 2);
    		actualWidthIdx += 120;
    
    		// draw the light
    		if (selected) {
    			g2.drawImage(imgLightOn, actualWidthIdx + 20, height / 2- buttonSize / 2, buttonSize, buttonSize, null);
    		} else {
    			g2.drawImage(imgLightOff, actualWidthIdx + 20, height / 2- buttonSize / 2, buttonSize, buttonSize, null);
    		}
    		g2.dispose();
    	}
    }