1 19 package org.lucane.applications.whiteboard.gui; 20 21 import java.awt.Color ; 22 import java.awt.Graphics ; 23 import java.awt.Rectangle ; 24 import java.awt.event.MouseEvent ; 25 import java.awt.event.MouseListener ; 26 27 import javax.swing.JButton ; 28 import javax.swing.JColorChooser ; 29 30 import org.lucane.applications.whiteboard.WhiteBoard; 31 import org.lucane.applications.whiteboard.graph.MyGraph; 32 33 public class ColorButton extends JButton 34 implements MouseListener 35 { 36 private static final Rectangle BORDER = new Rectangle (5, 5, 12, 12); 37 private static final Rectangle BACKGROUND = new Rectangle (12, 12, 12, 12); 38 39 private WhiteBoard plugin; 40 41 public ColorButton(WhiteBoard plugin) 42 { 43 super(plugin.getImageIcon("blank.png")); 44 setToolTipText(plugin.tr("tip.chooseColors")); 45 setFocusable(false); 46 setBorderPainted(false); 47 addMouseListener(this); 48 49 this.plugin = plugin; 50 } 51 52 protected void paintChildren(Graphics g) 53 { 54 Color back = plugin.getGraph().getCellBackground(); 55 g.setColor(back == null ? Color.WHITE : back); 56 if(back != null) 57 g.fillRect(BACKGROUND.x, BACKGROUND.y, BACKGROUND.width, BACKGROUND.height); 58 else 59 g.drawRect(BACKGROUND.x, BACKGROUND.y, BACKGROUND.width, BACKGROUND.height); 60 61 g.setColor(plugin.getGraph().getCellBorder()); 62 g.drawRect(BORDER.x, BORDER.y, BORDER.width, BORDER.height); 63 } 64 65 public void mouseEntered(MouseEvent e) {} 66 public void mouseExited(MouseEvent e) {} 67 public void mouseReleased(MouseEvent e) {} 68 public void mousePressed(MouseEvent e) {} 69 public void mouseClicked(MouseEvent e) 70 { 71 if(!isEnabled()) 72 return; 73 74 if(e.getButton() == MouseEvent.BUTTON3) 75 { 76 plugin.getGraph().setCellBackground(null); 77 plugin.getGraph().setCellBorder(null); 78 return; 79 } 80 81 if(BORDER.contains(e.getX(), e.getY())) 82 chooseColor(false); 83 else if(BACKGROUND.contains(e.getX(), e.getY())) 84 chooseColor(true); 85 } 86 87 private void chooseColor(boolean background) 88 { 89 MyGraph graph = plugin.getGraph(); 90 Color color = background ? graph.getCellBackground() : graph.getCellBorder(); 91 String msg = background ? "back" : "border"; 92 93 color = JColorChooser.showDialog(null, msg, color); 94 if(color == null) 95 return; 96 97 if(background) 98 graph.setCellBackground(color); 99 else 100 graph.setCellBorder(color); 101 102 repaint(); 103 } 104 } | Popular Tags |