View Javadoc
1 /* ------------------------------------------------------------------- 2 * Java source file for the class BorderEditor 3 * 4 * Copyright (c), 2002, Masahiro Takatsuka. 5 * All Rights Researved. 6 * 7 * Original Author: Masahiro Takatsuka (masa@jbeans.net) 8 * $Author: takatsukam $ 9 * 10 * $Date: 2003/07/25 04:51:45 $ 11 * 12 * $Id: BorderEditor.java,v 1.1.1.1 2003/07/25 04:51:45 takatsukam Exp $ 13 * 14 * Reference: Document no: 15 * ___ ___ 16 * 17 * To Do: 18 * ___ 19 * 20 ------------------------------------------------------------------- */ 21 22 /* --------------------------- Package ---------------------------- */ 23 package net.jbeans.bean.property.editor; 24 25 /* ------------------ Import classes (packages) ------------------- *//package-summary/html">color="#329900"> ------------------ Import classes (packages) ------------------- *//package-summary.html">color="#329900">/* ------------------ Import classes (packages) ------------------- *//package-summary.html">color="#329900"> ------------------ Import classes (packages) ------------------- */ 26 import java.awt.*; 27 import java.awt.event.*; 28 import javax.swing.*; 29 import javax.swing.border.*; 30 31 import net.jbeans.ui.*; 32 33 /*==================================================================== 34 Implementation of class BorderEditor 35 ====================================================================*/ 36 /*** 37 * generally describe BorderEditor in here 38 * 39 * @version $Revision: 1.1.1.1 $ 40 * @author Masahiro Takatsuka (masa@jbeans.net) 41 * @see EditorSupport 42 */ 43 44 public final class BorderEditor extends EditorSupport { 45 private JComboBox borderCombo; 46 private JButton borderButton; 47 private BorderDialog borderDialog; 48 49 private Border empty = BorderFactory.createEmptyBorder(); 50 private Border etched = BorderFactory.createEtchedBorder(); 51 private Border bevelLowered = BorderFactory.createLoweredBevelBorder(); 52 private Border bevelRaised =BorderFactory.createRaisedBevelBorder(); 53 private Border line = BorderFactory.createLineBorder(Color.black); 54 private Border[] borders = {this.empty, 55 this.etched, 56 this.bevelLowered, 57 this.bevelRaised, 58 this.line}; 59 private Border border; 60 61 public BorderEditor(){ 62 JPanel panel = new JPanel(); 63 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); 64 panel.setAlignmentX(Component.LEFT_ALIGNMENT); 65 UIDefaults table = UIManager.getDefaults(); 66 table.put("bean.editor.BorderIcon", LookAndFeel.makeIcon(getClass(), "resources/BorderIcon.gif")); 67 table.put("bean.editor.BorderBevelLowered", LookAndFeel.makeIcon(getClass(), "resources/BorderBevelLowered.gif")); 68 table.put("bean.editor.BorderBevelRaised", LookAndFeel.makeIcon(getClass(), "resources/BorderBevelRaised.gif")); 69 table.put("bean.editor.BorderEtched", LookAndFeel.makeIcon(getClass(), "resources/BorderEtched.gif")); 70 table.put("bean.editor.BorderLine", LookAndFeel.makeIcon(getClass(), "resources/BorderLine.gif")); 71 72 this.borderCombo = createComboBox(); 73 74 // need rigid area match up 75 Icon buttonIcon = UIManager.getIcon("bean.editor.BorderIcon"); 76 this.borderButton = new JButton(buttonIcon); 77 Dimension d = new Dimension(buttonIcon.getIconWidth(), buttonIcon.getIconHeight()); 78 this.borderButton.setPreferredSize(d); 79 this.borderButton.setMinimumSize(d); 80 this.borderButton.setMaximumSize(d); 81 this.borderButton.addActionListener(new ActionListener(){ 82 public void actionPerformed(ActionEvent e){ 83 if (BorderEditor.this.borderDialog == null) 84 BorderEditor.this.borderDialog = new BorderDialog(getPanel().getParent(), "Border Chooser"); 85 BorderEditor.this.border = BorderEditor.this.borderDialog.showDialog(); 86 if (!(BorderEditor.this.borderDialog.isCancelled())) 87 setValue(BorderEditor.this.border); 88 } 89 }); 90 setAlignment(this.borderCombo); 91 setAlignment(this.borderButton); 92 panel.add(this.borderCombo); 93 panel.add(Box.createRigidArea(new Dimension(5,0))); 94 panel.add(this.borderButton); 95 panel.add(Box.createHorizontalGlue()); 96 setPanel(panel); 97 } 98 99 public final void setValue(Object value){ 100 super.setValue(value); 101 // update our GUI state 102 // set ComboBox to any equal border value 103 // set BorderChooser - setSelectedBorder to any equal value as well 104 } 105 106 private JComboBox createComboBox(){ 107 DefaultComboBoxModel model = new DefaultComboBoxModel(); 108 for (int i = 0; i < 5; i++){ 109 model.addElement(new Integer(i)); 110 } 111 112 JComboBox c = new JComboBox(model); // borders); 113 c.setRenderer(new BorderCellRenderer(c)); 114 c.setPreferredSize(EditorSupport.MEDIUM_DIMENSION); // new Dimension(120,20)); 115 c.setMinimumSize(EditorSupport.MEDIUM_DIMENSION); 116 c.setMaximumSize(EditorSupport.MEDIUM_DIMENSION); 117 c.setSelectedIndex(-1); 118 c.addActionListener(new ActionListener(){ 119 public final void actionPerformed(ActionEvent e){ 120 JComboBox cb = (JComboBox)e.getSource(); 121 BorderEditor.this.border = BorderEditor.this.borders[cb.getSelectedIndex()]; 122 setValue(BorderEditor.this.border); 123 } 124 }); 125 return c; 126 } 127 128 public final String getJavaInitializationString() { 129 130 Border border = (Border) getValue(); 131 132 // return "javax.swing.BorderFactory(new javax.awt.Font(\"" + font.getFamily() + "\", " + 133 // font.getStyle() + ", " + font.getSize() + ")"; 134 135 return null; 136 } 137 138 class BorderCellRenderer extends JLabel implements ListCellRenderer { 139 JComboBox _combobox; 140 Icon[] _images = { 141 null, 142 UIManager.getIcon("bean.editor.BorderEtched"), 143 UIManager.getIcon("bean.editor.BorderBevelLowered"), 144 UIManager.getIcon("bean.editor.BorderBevelRaised"), 145 UIManager.getIcon("bean.editor.BorderLine") }; 146 147 String[] _desc = { 148 "Empty", 149 "Etched", 150 "BevelLowered", 151 "BevelRaised", 152 "Line" }; 153 154 BorderCellRenderer(JComboBox x) { 155 _combobox = x; 156 setOpaque(true); 157 } 158 159 public final Component getListCellRendererComponent(JList list, 160 Object value, 161 int modelIndex, 162 boolean isSelected, 163 boolean cellHasFocus) { 164 if (value == null) { 165 setText(""); 166 setIcon(null); 167 } else { 168 int index = ((Integer)value).intValue(); 169 if (index < 0){ 170 setText(""); 171 setIcon(null); 172 } else { 173 String text = " " + _desc[index]; 174 setIcon(_images[index]); 175 setText(text); 176 if (isSelected){ 177 setBackground(UIManager.getColor("ComboBox.selectionBackground")); 178 setForeground(UIManager.getColor("ComboBox.selectionForeground")); 179 } else { 180 setBackground(UIManager.getColor("ComboBox.background")); 181 setForeground(UIManager.getColor("ComboBox.foreground")); 182 } 183 } 184 } 185 return this; 186 } 187 } 188 189 public final void editorChangeValue(Object value){ 190 } 191 192 final class BorderDialog extends JDialog { 193 JPanel pane; 194 JButton okButton; 195 BorderChooser borderChooser; 196 Border border = null; 197 boolean cancel = false; 198 199 public BorderDialog(Component c, String title){ 200 super(JOptionPane.getFrameForComponent(c), title, true); 201 Container contentPane = getContentPane(); 202 this.pane = new JPanel(); 203 this.pane.setLayout(new BorderLayout()); 204 contentPane.setLayout(new BorderLayout()); 205 this.okButton = new JButton("OK"); // new BorderTracker(_pane); 206 ActionListener okListener = new ActionListener(){ 207 public final void actionPerformed(ActionEvent e){ 208 // get the Border from the pane 209 BorderDialog.this.border = getBorder(); 210 } 211 }; 212 213 getRootPane().setDefaultButton(this.okButton); 214 this.okButton.setActionCommand("OK"); 215 if (okListener != null) { 216 this.okButton.addActionListener(okListener); 217 } 218 this.okButton.addActionListener(new ActionListener() { 219 public final void actionPerformed(ActionEvent e) { 220 hide(); 221 } 222 }); 223 JButton cancelButton = new JButton("Cancel"); 224 cancelButton.setActionCommand("cancel"); 225 cancelButton.addActionListener(new ActionListener() { 226 public final void actionPerformed(ActionEvent e) { 227 BorderDialog.this.cancel = true; 228 hide(); 229 } 230 }); 231 // borderlayout 232 addBorderChooser(this.pane); 233 JPanel buttonPanel = new JPanel(); 234 buttonPanel.add(cancelButton); 235 buttonPanel.add(this.okButton); 236 this.pane.add(buttonPanel, BorderLayout.SOUTH); 237 contentPane.add(this.pane, BorderLayout.CENTER); 238 pack(); 239 this.addWindowListener(new Closer()); 240 this.addComponentListener(new DisposeOnClose()); 241 } 242 243 public final void addBorderChooser(JPanel panel){ 244 this.borderChooser = new BorderChooser(); 245 panel.add(this.borderChooser, BorderLayout.CENTER); 246 } 247 248 public final void setBorder(){ // called from pane 249 } 250 251 public final Border getBorder(){ 252 return this.borderChooser.getSelectedBorder(); 253 // return this.border; 254 } 255 256 public final Border showDialog(){ 257 this.cancel = false; 258 UiUtil.centerComponent(this); 259 show(); 260 return getBorder(); // border should be ok 261 } 262 263 public final boolean isCancelled(){ 264 return this.cancel; 265 } 266 267 class Closer extends WindowAdapter { 268 public final void windowClosing(WindowEvent e) { 269 Window w = e.getWindow(); 270 w.hide(); 271 } 272 } 273 274 class DisposeOnClose extends ComponentAdapter { 275 public final void componentHidden(ComponentEvent e) { 276 Window w = (Window)e.getComponent(); 277 w.dispose(); 278 } 279 } 280 281 } 282 283 284 public final static void main(String args[]){ 285 JFrame f = new JFrame(); 286 f.addWindowListener(new WindowAdapter(){ 287 public final void windowClosing(WindowEvent e){ 288 System.exit(0); 289 } 290 }); 291 BorderEditor editor = new BorderEditor(); 292 f.getContentPane().add(editor.getCustomEditor()); 293 f.pack(); 294 f.show(); 295 } 296 297 }

This page was automatically generated by Maven