1 package org.columba.core.gui.base; 17 18 import java.awt.Color ; 19 import java.awt.event.ItemEvent ; 20 import java.awt.event.ItemListener ; 21 22 import javax.swing.ComboBoxModel ; 23 import javax.swing.JColorChooser ; 24 import javax.swing.JComboBox ; 25 26 27 31 32 public class ColorComboBox extends JComboBox implements ItemListener { 33 private boolean codeSelectionUpdate = false; 34 35 38 public ColorComboBox() { 39 super(); 40 41 addItem(new ColorItem(Color.black, "None")); 43 addItem(new ColorItem(Color.blue, "Blue")); 44 addItem(new ColorItem(Color.gray, "Gray")); 45 addItem(new ColorItem(Color.green, "Green")); 46 addItem(new ColorItem(Color.red, "Red")); 47 addItem(new ColorItem(Color.yellow, "Yellow")); 48 addItem(new ColorItem(Color.black, "Custom")); 49 50 setRenderer(new ColorItemRenderer()); 51 52 addItemListener(this); 53 } 54 55 59 public void setSelectedColor(String name) { 60 codeSelectionUpdate = true; 61 62 ComboBoxModel model = getModel(); 63 64 if (name == null) { 65 setSelectedIndex(0); 66 } else { 67 for (int i = 0; i < model.getSize(); i++) { 68 ColorItem object = (ColorItem) model.getElementAt(i); 69 70 if (object.getName().equalsIgnoreCase(name)) { 71 setSelectedIndex(i); 72 73 break; 74 } 75 } 76 } 77 78 codeSelectionUpdate = false; 79 } 80 81 85 public void setCustomColor(Color color) { 86 ColorItem item = (ColorItem) getModel().getElementAt(getModel().getSize() - 87 1); 88 item.setColor(color); 89 repaint(); 90 } 91 92 96 public void setCustomColor(int rgb) { 97 setCustomColor(ColorFactory.getColor(rgb)); 98 } 99 100 104 public ColorItem getSelectedColorItem() { 105 return (ColorItem) getSelectedItem(); 106 } 107 108 109 public void itemStateChanged(ItemEvent e) { 110 if ((!codeSelectionUpdate) && 111 (e.getStateChange() == ItemEvent.SELECTED)) { 112 ColorItem item = (ColorItem) getSelectedItem(); 113 114 if (item.getName().equalsIgnoreCase("custom")) { 115 Color newColor = JColorChooser.showDialog(null, 116 "Choose Background Color", item.getColor()); 117 118 item.setColor(newColor); 119 repaint(); 120 } 121 } 122 } 123 } 124 | Popular Tags |