/*
* @(#)EditableComboBoxTest.java
*
* Copyright (c) 2005-2009 Werner Randelshofer, Immensee, Switzerland.
* All rights reserved.
*
* You may not use, copy or modify this file, except in compliance with the
* license agreement you entered into with Werner Randelshofer.
* For details see accompanying license terms.
*/
package test;
import ch.randelshofer.quaqua.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* EditableComboBoxTest.
*
* @author Werner Randelshofer
* @version $Id: EditableComboBoxTest.java 418 2011-08-04 07:59:43Z wrandelshofer $
*/
public class EditableComboBoxTest extends javax.swing.JPanel {
private static class ColorIcon implements Icon {
private Color color = Color.white;
public void setColor(Color newValue) {
color = newValue;
}
public Color getColor() {
return color;
}
public int getIconHeight() {
return 12;
}
public int getIconWidth() {
return 24;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
if (color != null) {
g.setColor(color);
g.fillRect(x, y, getIconWidth(), getIconHeight());
g.setColor(color.darker());
g.drawRect(x, y, getIconWidth() - 1, getIconHeight() - 1);
}
}
}
private static class ColorComboCellRenderer extends DefaultListCellRenderer {
private ColorIcon colorIcon = new ColorIcon();
public ColorComboCellRenderer() {
setIconTextGap(6);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
JLabel l = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Color) {
Color color = (Color) value;
colorIcon.setColor(color);
l.setIcon(colorIcon);
l.setText(color.getRed()+","+color.getGreen()+","+color.getBlue());
} else {
l.setIcon(null);
}
return l;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
/*
g.setColor(new Color(0xafff00f0,true));
// g.fillRect(0,0,getWidth(),getHeight());
Insets i = getInsets();
System.out.println("ColorComboCellRenderer insets:"+i);
g.fillRect(i.left,i.top,getWidth()-i.left-i.right,getHeight()-i.top-i.bottom);
**/
}
}
/** Creates new form. */
public EditableComboBoxTest() {
initComponents();
String[] items = new String[100];
for (int i=0; i < items.length; i++) {
items[i] = "Item "+(i+1);
}
jComboBox14.setModel(new javax.swing.DefaultComboBoxModel(items));
tableCellBox.putClientProperty("JComboBox.isTableCellEditor",Boolean.TRUE);
for (JComponent c:new JComponent[]{smallBox1,smallBox2,smallBox3,smallLabel}) {
c.putClientProperty("JComponent.sizeVariant", "small");
}
for (JComponent c:new JComponent[]{miniBox1,miniBox2,miniBox3,miniLabel}) {
c.putClientProperty("JComponent.sizeVariant", "mini");
}
// Try to get a better layout with J2SE6
try {
int BASELINE_LEADING = GridBagConstraints.class.getDeclaredField("BASELINE_LEADING").getInt(null);
GridBagLayout layout = (GridBagLayout) getLayout();
for (Component c : getComponents()) {
GridBagConstraints gbc = layout.getConstraints(c);
if (gbc.anchor == GridBagConstraints.WEST) {
gbc.anchor = BASELINE_LEADING;
layout.setConstraints(c, gbc);
}
}
} catch (Exception ex) {
// bail
}
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel(QuaquaManager.getLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
JFrame f = new JFrame("Quaqua Editable ComboBox Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new EditableComboBoxTest());
((JComponent) f.getContentPane()).setBorder(new EmptyBorder(9,17,17,17));
f.pack();
f.setVisible(true);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
box1 = new javax.swing.JComboBox();
jLabel1 = new javax.swing.JLabel();
jComboBox14 = new javax.swing.JComboBox();
jComboBox3 = new javax.swing.JComboBox();
jSeparator1 = new javax.swing.JSeparator();
smallBox1 = new javax.swing.JComboBox();
smallLabel = new javax.swing.JLabel();
smallBox2 = new javax.swing.JComboBox();
smallBox3 = new javax.swing.JComboBox();
jSeparator3 = new javax.swing.JSeparator();
miniBox1 = new javax.swing.JComboBox();
miniLabel = new javax.swing.JLabel();
miniBox2 = new javax.swing.JComboBox();
miniBox3 = new javax.swing.JComboBox();
jSeparator2 = new javax.swing.JSeparator();
largeBox = new javax.swing.JComboBox();
largeLabel = new javax.swing.JLabel();
tableCellBox = new javax.swing.JComboBox();
tableCellLabel = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
disabledLabel = new javax.swing.JLabel();
setBorder(javax.swing.BorderFactory.createEmptyBorder(16, 17, 17, 17));
setLayout(new java.awt.GridBagLayout());
box1.setEditable(true);
box1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
box1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboBoxActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(box1, gridBagConstraints);
jLabel1.setText("Enabled");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
add(jLabel1, gridBagConstraints);
jComboBox14.setEditable(true);
jComboBox14.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(jComboBox14, gridBagConstraints);
jComboBox3.setEditable(true);
jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
jComboBox3.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(jComboBox3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 0);
add(jSeparator1, gridBagConstraints);
smallBox1.setEditable(true);
smallBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(smallBox1, gridBagConstraints);
smallLabel.setText("Small");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
add(smallLabel, gridBagConstraints);
smallBox2.setEditable(true);
smallBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(smallBox2, gridBagConstraints);
smallBox3.setEditable(true);
smallBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
smallBox3.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(smallBox3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 0);
add(jSeparator3, gridBagConstraints);
miniBox1.setEditable(true);
miniBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(miniBox1, gridBagConstraints);
miniLabel.setText("Mini");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
add(miniLabel, gridBagConstraints);
miniBox2.setEditable(true);
miniBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(miniBox2, gridBagConstraints);
miniBox3.setEditable(true);
miniBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
miniBox3.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(miniBox3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 0);
add(jSeparator2, gridBagConstraints);
largeBox.setEditable(true);
largeBox.setFont(new java.awt.Font("Lucida Grande", 0, 18));
largeBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(largeBox, gridBagConstraints);
largeLabel.setText("Large Font");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
add(largeLabel, gridBagConstraints);
tableCellBox.setEditable(true);
tableCellBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(tableCellBox, gridBagConstraints);
tableCellLabel.setText("Table Cell");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
add(tableCellLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 99;
gridBagConstraints.weighty = 1.0;
add(jPanel1, gridBagConstraints);
disabledLabel.setText("Disabled");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
add(disabledLabel, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
private void comboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboBoxActionPerformed
//System.out.println("EditableComboBoxTest.comboBoxActionPerformed:"+evt);
}//GEN-LAST:event_comboBoxActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox box1;
private javax.swing.JLabel disabledLabel;
private javax.swing.JComboBox jComboBox14;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JComboBox largeBox;
private javax.swing.JLabel largeLabel;
private javax.swing.JComboBox miniBox1;
private javax.swing.JComboBox miniBox2;
private javax.swing.JComboBox miniBox3;
private javax.swing.JLabel miniLabel;
private javax.swing.JComboBox smallBox1;
private javax.swing.JComboBox smallBox2;
private javax.swing.JComboBox smallBox3;
private javax.swing.JLabel smallLabel;
private javax.swing.JComboBox tableCellBox;
private javax.swing.JLabel tableCellLabel;
// End of variables declaration//GEN-END:variables
}