1 package org.antlr.xjlib.appkit.swing; 2 3 import org.antlr.xjlib.appkit.frame.XJDialog; 4 5 import javax.swing.*; 6 import javax.swing.event.ChangeEvent ; 7 import javax.swing.event.ChangeListener ; 8 import java.awt.*; 9 10 40 41 public class XJColorChooser extends XJDialog { 42 43 JColorChooser cc; 44 45 JPanel targetPanel; 46 Color oldTargetColor = Color.black; 47 48 public XJColorChooser(Container owner, boolean modal) { 49 this(owner, modal, null); 50 } 51 52 public XJColorChooser(Container owner, boolean modal, JPanel targetPanel) { 53 super(owner, modal); 54 55 setTitle("Choose a color"); 56 setSize(500, 400); 57 58 if(targetPanel != null) { 59 this.targetPanel = targetPanel; 60 this.oldTargetColor = targetPanel.getBackground(); 61 } 62 63 cc = new JColorChooser(oldTargetColor); 64 cc.getSelectionModel().addChangeListener(new ChangeListener () { 65 public void stateChanged(ChangeEvent e) { 66 updateTargetColor(); 67 } 68 }); 69 getContentPane().add(cc, BorderLayout.CENTER); 70 71 JButton cancel = new JButton("Cancel"); 72 setCancelButton(cancel); 73 74 JButton ok = new JButton("OK"); 75 setOKButton(ok); 76 setDefaultButton(ok); 77 78 Box box = Box.createHorizontalBox(); 79 box.add(Box.createHorizontalGlue()); 80 box.add(cancel); 81 box.add(ok); 82 box.add(Box.createHorizontalStrut(15)); 83 getContentPane().add(box, BorderLayout.SOUTH); 84 } 85 86 protected void updateTargetColor() { 87 updateTargetColor(cc.getColor()); 88 } 89 90 protected void updateTargetColor(Color c) { 91 if(targetPanel != null) 92 targetPanel.setBackground(c); 93 } 94 95 public void dialogWillCloseCancel() { 96 updateTargetColor(oldTargetColor); 97 } 98 99 public void dialogWillCloseOK() { 100 updateTargetColor(); 101 } 102 103 public Color getColor() { 104 return cc.getColor(); 105 } 106 } 107 | Popular Tags |