diff options
Diffstat (limited to 'jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/value/swing/TableModelAdapterUITest.java')
-rw-r--r-- | jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/value/swing/TableModelAdapterUITest.java | 731 |
1 files changed, 0 insertions, 731 deletions
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/value/swing/TableModelAdapterUITest.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/value/swing/TableModelAdapterUITest.java deleted file mode 100644 index ebe3d1a66b..0000000000 --- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/value/swing/TableModelAdapterUITest.java +++ /dev/null @@ -1,731 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.utility.tests.internal.model.value.swing; - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.event.WindowListener; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.ButtonModel; -import javax.swing.ComboBoxModel; -import javax.swing.DefaultListCellRenderer; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JFrame; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JSpinner; -import javax.swing.JTable; -import javax.swing.JTextField; -import javax.swing.ListCellRenderer; -import javax.swing.ListSelectionModel; -import javax.swing.SpinnerModel; -import javax.swing.UIManager; -import javax.swing.WindowConstants; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.TableColumn; -import javax.swing.table.TableModel; -import javax.swing.text.Document; -import org.eclipse.jpt.utility.internal.ClassTools; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.model.value.CollectionAspectAdapter; -import org.eclipse.jpt.utility.internal.model.value.ItemPropertyListValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.utility.internal.model.value.SimpleCollectionValueModel; -import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.utility.internal.model.value.SortedListValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.CheckBoxModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.ColumnAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.ComboBoxModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.DateSpinnerModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.DocumentAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.ListModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.NumberSpinnerModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.swing.ObjectListSelectionModel; -import org.eclipse.jpt.utility.internal.model.value.swing.TableModelAdapter; -import org.eclipse.jpt.utility.internal.swing.CheckBoxTableCellRenderer; -import org.eclipse.jpt.utility.internal.swing.ComboBoxTableCellRenderer; -import org.eclipse.jpt.utility.internal.swing.SpinnerTableCellRenderer; -import org.eclipse.jpt.utility.internal.swing.TableCellEditorAdapter; -import org.eclipse.jpt.utility.model.value.CollectionValueModel; -import org.eclipse.jpt.utility.model.value.ListValueModel; -import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; -import org.eclipse.jpt.utility.tests.internal.model.value.swing.TableModelAdapterTests.Crowd; -import org.eclipse.jpt.utility.tests.internal.model.value.swing.TableModelAdapterTests.Person; -import org.eclipse.jpt.utility.tests.internal.model.value.swing.TableModelAdapterTests.PersonColumnAdapter; - -/** - * an example UI for testing the TableModelAdapter - * "name" column is read-only text field - * "birth date" column is date text field - * "gone west date" column is date spinner - * "eye color" column is combo-box - * "evil" column is check box - * "rank" column is number text field - * "adventure count" column is number spinner - * - * Note that the table model and row selection model share the same - * list value model (the sorted people adapter) - */ -public class TableModelAdapterUITest { - private SimpleCollectionValueModel<Object> eyeColorsHolder; // Object because it adapts to a combo-box - private WritablePropertyValueModel<Crowd> crowdHolder; - private WritablePropertyValueModel<Person> selectedPersonHolder; - private ListValueModel<Person> sortedPeopleAdapter; - private TableModel tableModel; - private ObjectListSelectionModel rowSelectionModel; - private Action removeAction; - private Action renameAction; - - public static void main(String[] args) throws Exception { - new TableModelAdapterUITest().exec(args); - } - - protected TableModelAdapterUITest() { - super(); - } - - protected void exec(String[] args) throws Exception { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - this.eyeColorsHolder = this. buildEyeColorCollectionHolder(); - this.crowdHolder = this.buildCrowdHolder(); - this.selectedPersonHolder = this.buildSelectedPersonHolder(); - this.sortedPeopleAdapter = this.buildSortedPeopleAdapter(); - this.tableModel = this.buildTableModel(); - this.rowSelectionModel = this.buildRowSelectionModel(); - this.openWindow(); - } - - private SimpleCollectionValueModel<Object> buildEyeColorCollectionHolder() { - return new SimpleCollectionValueModel<Object>(new ArrayList<Object>(Person.getValidEyeColors())); - } - - private WritablePropertyValueModel<Crowd> buildCrowdHolder() { - return new SimplePropertyValueModel<Crowd>(this.buildCrowd()); - } - - private Crowd buildCrowd() { - Crowd crowd = new Crowd(); - - Person p = crowd.addPerson("Bilbo"); - p.setEyeColor(Person.EYE_COLOR_BROWN); - p.setRank(22); - p.setAdventureCount(1); - - p = crowd.addPerson("Gollum"); - p.setEyeColor(Person.EYE_COLOR_PINK); - p.setEvil(true); - p.setRank(2); - p.setAdventureCount(50); - - p = crowd.addPerson("Frodo"); - p.setEyeColor(Person.EYE_COLOR_BLUE); - p.setRank(34); - p.setAdventureCount(1); - - p = crowd.addPerson("Samwise"); - p.setEyeColor(Person.EYE_COLOR_GREEN); - p.setRank(19); - p.setAdventureCount(1); - - return crowd; - } - - private WritablePropertyValueModel<Person> buildSelectedPersonHolder() { - return new SimplePropertyValueModel<Person>(); - } - - private ListValueModel<Person> buildSortedPeopleAdapter() { - return new SortedListValueModelAdapter<Person>(this.buildPeopleNameAdapter()); - } - - // the list will need to be re-sorted if a name changes - private ListValueModel<Person> buildPeopleNameAdapter() { - return new ItemPropertyListValueModelAdapter<Person>(this.buildPeopleAdapter(), Person.NAME_PROPERTY); - } - - private CollectionValueModel<Person> buildPeopleAdapter() { - return new CollectionAspectAdapter<Crowd, Person>(this.crowdHolder, Crowd.PEOPLE_COLLECTION) { - @Override - protected Iterator<Person> iterator_() { - return this.subject.people(); - } - @Override - protected int size_() { - return this.subject.peopleSize(); - } - }; - } - - private TableModel buildTableModel() { - return new TableModelAdapter<Person>(this.sortedPeopleAdapter, this.buildColumnAdapter()); - } - - protected ColumnAdapter buildColumnAdapter() { - return new PersonColumnAdapter(); - } - - private ObjectListSelectionModel buildRowSelectionModel() { - ObjectListSelectionModel rsm = new ObjectListSelectionModel(new ListModelAdapter(this.sortedPeopleAdapter)); - rsm.addListSelectionListener(this.buildRowSelectionListener()); - rsm.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - return rsm; - } - - private ListSelectionListener buildRowSelectionListener() { - return new ListSelectionListener() { - public void valueChanged(ListSelectionEvent e) { - if (e.getValueIsAdjusting()) { - return; - } - TableModelAdapterUITest.this.rowSelectionChanged(e); - } - }; - } - - void rowSelectionChanged(ListSelectionEvent e) { - Person selection = (Person) this.rowSelectionModel.selectedValue(); - this.selectedPersonHolder.setValue(selection); - boolean personSelected = (selection != null); - this.removeAction.setEnabled(personSelected); - this.renameAction.setEnabled(personSelected); - } - - private void openWindow() { - JFrame window = new JFrame(ClassTools.shortClassNameForObject(this)); - window.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); - window.addWindowListener(this.buildWindowListener()); - window.getContentPane().add(this.buildMainPanel(), "Center"); - window.setLocation(200, 200); - window.setSize(600, 400); - window.setVisible(true); - } - - private WindowListener buildWindowListener() { - return new WindowAdapter() { - @Override - public void windowClosing(WindowEvent e) { - e.getWindow().setVisible(false); - System.exit(0); - } - }; - } - - private Component buildMainPanel() { - JPanel mainPanel = new JPanel(new BorderLayout()); - mainPanel.add(this.buildTablePane(), BorderLayout.CENTER); - mainPanel.add(this.buildControlPanel(), BorderLayout.SOUTH); - return mainPanel; - } - - private Component buildTablePane() { - return new JScrollPane(this.buildTable()); - } - - private JTable buildTable() { - JTable table = new JTable(this.tableModel); - table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); // see Java bug 5007652 - table.setSelectionModel(this.rowSelectionModel); - table.setDoubleBuffered(true); - table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); - int rowHeight = 20; // start with minimum of 20 - - // gone west column (spinner) - TableColumn column = table.getColumnModel().getColumn(PersonColumnAdapter.GONE_WEST_DATE_COLUMN); - SpinnerTableCellRenderer spinnerRenderer = this.buildDateSpinnerRenderer(); - column.setCellRenderer(spinnerRenderer); - column.setCellEditor(new TableCellEditorAdapter(this.buildDateSpinnerRenderer())); - rowHeight = Math.max(rowHeight, spinnerRenderer.preferredHeight()); - - // eye color column (combo-box) - // the jdk combo-box renderer looks like a text field - // until the user starts an edit - use a custom one - column = table.getColumnModel().getColumn(PersonColumnAdapter.EYE_COLOR_COLUMN); - ComboBoxTableCellRenderer eyeColorRenderer = this.buildEyeColorComboBoxRenderer(); - column.setCellRenderer(eyeColorRenderer); - column.setCellEditor(new TableCellEditorAdapter(this.buildEyeColorComboBoxRenderer())); - rowHeight = Math.max(rowHeight, eyeColorRenderer.preferredHeight()); - - // evil (check box) - // the jdk check box renderer and editor suck - use a custom ones - column = table.getColumnModel().getColumn(PersonColumnAdapter.EVIL_COLUMN); - CheckBoxTableCellRenderer evilRenderer = new CheckBoxTableCellRenderer(); - column.setCellRenderer(evilRenderer); - column.setCellEditor(new TableCellEditorAdapter(new CheckBoxTableCellRenderer())); - rowHeight = Math.max(rowHeight, evilRenderer.preferredHeight()); - - // adventure count column (spinner) - column = table.getColumnModel().getColumn(PersonColumnAdapter.ADVENTURE_COUNT_COLUMN); - spinnerRenderer = this.buildNumberSpinnerRenderer(); - column.setCellRenderer(spinnerRenderer); - column.setCellEditor(new TableCellEditorAdapter(this.buildNumberSpinnerRenderer())); - rowHeight = Math.max(rowHeight, spinnerRenderer.preferredHeight()); - - table.setRowHeight(rowHeight); - return table; - } - - private SpinnerTableCellRenderer buildDateSpinnerRenderer() { - return new SpinnerTableCellRenderer(new DateSpinnerModelAdapter(new SimplePropertyValueModel<Object>())); - } - - private SpinnerTableCellRenderer buildNumberSpinnerRenderer() { - return new SpinnerTableCellRenderer(new NumberSpinnerModelAdapter(new SimplePropertyValueModel<Number>())); - } - - private ComboBoxTableCellRenderer buildEyeColorComboBoxRenderer() { - return new ComboBoxTableCellRenderer(this.buildReadOnlyEyeColorComboBoxModel(), this.buildEyeColorRenderer()); - } - - private ComboBoxModel buildReadOnlyEyeColorComboBoxModel() { - return new ComboBoxModelAdapter(this.eyeColorsHolder, new SimplePropertyValueModel<Object>()); - } - - private ListCellRenderer buildEyeColorRenderer() { - return new EyeColorRenderer(); - } - - private Component buildControlPanel() { - JPanel controlPanel = new JPanel(new GridLayout(0, 1)); - controlPanel.add(this.buildButtonPanel()); - controlPanel.add(this.buildPersonPanel()); - return controlPanel; - } - - private Component buildButtonPanel() { - JPanel buttonPanel = new JPanel(new GridLayout(1, 0)); - buttonPanel.add(this.buildAddButton()); - buttonPanel.add(this.buildRemoveButton()); - buttonPanel.add(this.buildRenameButton()); - buttonPanel.add(this.buildAddEyeColorButton()); - buttonPanel.add(this.buildPrintButton()); - buttonPanel.add(this.buildResetButton()); - return buttonPanel; - } - - private Component buildPersonPanel() { - JPanel personPanel = new JPanel(new GridLayout(1, 0)); - personPanel.add(this.buildNameTextField()); - personPanel.add(this.buildBirthDateSpinner()); - personPanel.add(this.buildGoneWestDateSpinner()); - personPanel.add(this.buildEyeColorComboBox()); - personPanel.add(this.buildEvilCheckBox()); - personPanel.add(this.buildRankSpinner()); - personPanel.add(this.buildAdventureCountSpinner()); - return personPanel; - } - - - // ********** add button ********** - - private JButton buildAddButton() { - return new JButton(this.buildAddAction()); - } - - private Action buildAddAction() { - Action action = new AbstractAction("add") { - public void actionPerformed(ActionEvent event) { - TableModelAdapterUITest.this.addPerson(); - } - }; - action.setEnabled(true); - return action; - } - - void addPerson() { - String name = this.getNameFromUser(); - if (name != null) { - this.setSelectedPerson(this.crowd().addPerson(name)); - } - } - - - // ********** remove button ********** - - private JButton buildRemoveButton() { - return new JButton(this.buildRemoveAction()); - } - - private Action buildRemoveAction() { - this.removeAction = new AbstractAction("remove") { - public void actionPerformed(ActionEvent event) { - TableModelAdapterUITest.this.removePerson(); - } - }; - this.removeAction.setEnabled(false); - return this.removeAction; - } - - void removePerson() { - Person person = this.selectedPerson(); - if (person != null) { - this.crowd().removePerson(person); - } - } - - - // ********** rename button ********** - - private JButton buildRenameButton() { - return new JButton(this.buildRenameAction()); - } - - private Action buildRenameAction() { - this.renameAction = new AbstractAction("rename") { - public void actionPerformed(ActionEvent event) { - TableModelAdapterUITest.this.renamePerson(); - } - }; - this.renameAction.setEnabled(false); - return this.renameAction; - } - - void renamePerson() { - Person person = this.selectedPerson(); - if (person != null) { - String name = this.promptUserForName(person.getName()); - if (name != null) { - person.setName(name); - this.setSelectedPerson(person); - } - } - } - - - // ********** add eye color button ********** - - private JButton buildAddEyeColorButton() { - return new JButton(this.buildAddEyeColorAction()); - } - - private Action buildAddEyeColorAction() { - Action action = new AbstractAction("add eye color") { - public void actionPerformed(ActionEvent event) { - TableModelAdapterUITest.this.addEyeColor(); - } - }; - action.setEnabled(true); - return action; - } - - void addEyeColor() { - String color = this.promptUserForEyeColor(); - if (color != null) { - this.eyeColorsHolder.add(color); - } - } - - private String promptUserForEyeColor() { - while (true) { - String eyeColor = JOptionPane.showInputDialog("Eye Color"); - if (eyeColor == null) { - return null; // user pressed <Cancel> - } - if ((eyeColor.length() == 0)) { - JOptionPane.showMessageDialog(null, "The eye color is required.", "Invalid Eye Color", JOptionPane.ERROR_MESSAGE); - } else if (CollectionTools.contains(this.eyeColorsHolder.iterator(), eyeColor)) { - JOptionPane.showMessageDialog(null, "The eye color already exists.", "Invalid Eye Color", JOptionPane.ERROR_MESSAGE); - } else { - return eyeColor; - } - } - } - - - // ********** print button ********** - - private JButton buildPrintButton() { - return new JButton(this.buildPrintAction()); - } - - private Action buildPrintAction() { - Action action = new AbstractAction("print") { - public void actionPerformed(ActionEvent event) { - TableModelAdapterUITest.this.printCrowd(); - } - }; - action.setEnabled(true); - return action; - } - - void printCrowd() { - System.out.println(this.crowd()); - for (Iterator<Person> stream = this.crowd().people(); stream.hasNext(); ) { - System.out.println("\t" + stream.next()); - } - } - - - // ********** reset button ********** - - private JButton buildResetButton() { - return new JButton(this.buildResetAction()); - } - - private Action buildResetAction() { - Action action = new AbstractAction("reset") { - public void actionPerformed(ActionEvent event) { - TableModelAdapterUITest.this.reset(); - } - }; - action.setEnabled(true); - return action; - } - - void reset() { - this.crowdHolder.setValue(this.buildCrowd()); - } - - - // ********** new name dialog ********** - - private String getNameFromUser() { - return this.promptUserForName(null); - } - - private String promptUserForName(String originalName) { - while (true) { - String name = JOptionPane.showInputDialog("Person Name"); - if (name == null) { - return null; // user pressed <Cancel> - } - if ((name.length() == 0)) { - JOptionPane.showMessageDialog(null, "The name is required.", "Invalid Name", JOptionPane.ERROR_MESSAGE); - } else if (CollectionTools.contains(this.crowd().peopleNames(), name)) { - JOptionPane.showMessageDialog(null, "The name already exists.", "Invalid Name", JOptionPane.ERROR_MESSAGE); - } else { - return name; - } - } - } - - - // ********** name text field ********** - - private Component buildNameTextField() { - JTextField textField = new JTextField(this.buildNameDocument(), null, 0); - textField.setEditable(false); - return textField; - } - - private Document buildNameDocument() { - return new DocumentAdapter(this.buildNameAdapter()); - } - - private WritablePropertyValueModel<String> buildNameAdapter() { - return new PropertyAspectAdapter<Person, String>(this.selectedPersonHolder, Person.NAME_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getName(); - } - @Override - protected void setValue_(String value) { - this.subject.setName(value); - } - }; - } - - - // ********** birth date spinner ********** - - private JSpinner buildBirthDateSpinner() { - return new JSpinner(this.buildBirthDateSpinnerModel()); - } - - private SpinnerModel buildBirthDateSpinnerModel() { - return new DateSpinnerModelAdapter(this.buildBirthDateAdapter()); - } - - private WritablePropertyValueModel<Object> buildBirthDateAdapter() { - return new PropertyAspectAdapter<Person, Object>(this.selectedPersonHolder, Person.BIRTH_DATE_PROPERTY) { - @Override - protected Date buildValue_() { - return this.subject.getBirthDate(); - } - @Override - protected void setValue_(Object value) { - this.subject.setBirthDate((Date) value); - } - }; - } - - - // ********** gone west date spinner ********** - - private JSpinner buildGoneWestDateSpinner() { - return new JSpinner(this.buildGoneWestDateSpinnerModel()); - } - - private SpinnerModel buildGoneWestDateSpinnerModel() { - return new DateSpinnerModelAdapter(this.buildGoneWestDateAdapter()); - } - - private WritablePropertyValueModel<Object> buildGoneWestDateAdapter() { - return new PropertyAspectAdapter<Person, Object>(this.selectedPersonHolder, Person.GONE_WEST_DATE_PROPERTY) { - @Override - protected Date buildValue_() { - return this.subject.getGoneWestDate(); - } - @Override - protected void setValue_(Object value) { - this.subject.setGoneWestDate((Date) value); - } - }; - } - - - // ********** eye color combo-box ********** - - private JComboBox buildEyeColorComboBox() { - return new JComboBox(this.buildEyeColorComboBoxModel()); - } - - private ComboBoxModel buildEyeColorComboBoxModel() { - return new ComboBoxModelAdapter(this.eyeColorsHolder, this.buildEyeColorAdapter()); - } - - private WritablePropertyValueModel<Object> buildEyeColorAdapter() { - return new PropertyAspectAdapter<Person, Object>(this.selectedPersonHolder, Person.EYE_COLOR_PROPERTY) { - @Override - protected Object buildValue_() { - return this.subject.getEyeColor(); - } - @Override - protected void setValue_(Object value) { - this.subject.setEyeColor((String) value); - } - }; - } - - - // ********** evil check box ********** - - private JCheckBox buildEvilCheckBox() { - JCheckBox checkBox = new JCheckBox(); - checkBox.setText("evil"); - checkBox.setModel(this.buildEvilCheckBoxModel()); - return checkBox; - } - - private ButtonModel buildEvilCheckBoxModel() { - return new CheckBoxModelAdapter(this.buildEvilAdapter()); - } - - private WritablePropertyValueModel<Boolean> buildEvilAdapter() { - return new PropertyAspectAdapter<Person, Boolean>(this.selectedPersonHolder, Person.EVIL_PROPERTY) { - @Override - protected Boolean buildValue_() { - return Boolean.valueOf(this.subject.isEvil()); - } - @Override - protected void setValue_(Boolean value) { - this.subject.setEvil(value.booleanValue()); - } - }; - } - - - // ********** rank spinner ********** - - private JSpinner buildRankSpinner() { - return new JSpinner(this.buildRankSpinnerModel()); - } - - private SpinnerModel buildRankSpinnerModel() { - return new NumberSpinnerModelAdapter(this.buildRankAdapter()); - } - - private WritablePropertyValueModel<Number> buildRankAdapter() { - return new PropertyAspectAdapter<Person, Number>(this.selectedPersonHolder, Person.RANK_PROPERTY) { - @Override - protected Number buildValue_() { - return new Integer(this.subject.getRank()); - } - @Override - protected void setValue_(Number value) { - this.subject.setRank(value.intValue()); - } - }; - } - - - // ********** adventure count spinner ********** - - private JSpinner buildAdventureCountSpinner() { - return new JSpinner(this.buildAdventureCountSpinnerModel()); - } - - private SpinnerModel buildAdventureCountSpinnerModel() { - return new NumberSpinnerModelAdapter(this.buildAdventureCountAdapter()); - } - - private WritablePropertyValueModel<Number> buildAdventureCountAdapter() { - return new PropertyAspectAdapter<Person, Number>(this.selectedPersonHolder, Person.ADVENTURE_COUNT_PROPERTY) { - @Override - protected Number buildValue_() { - return new Integer(this.subject.getAdventureCount()); - } - @Override - protected void setValue_(Number value) { - this.subject.setAdventureCount(value.intValue()); - } - }; - } - - - // ********** queries ********** - - private Crowd crowd() { - return this.crowdHolder.getValue(); - } - - private Person selectedPerson() { - if (this.rowSelectionModel.isSelectionEmpty()) { - return null; - } - return (Person) this.rowSelectionModel.selectedValue(); - } - - private void setSelectedPerson(Person person) { - this.rowSelectionModel.setSelectedValue(person); - } - - - // ********** custom renderer ********** - - /** - * This is simply an example of a renderer for the embedded combo-box. - * It does nothing special unless you uncomment the code below.... - */ - private class EyeColorRenderer extends DefaultListCellRenderer { - EyeColorRenderer() { - super(); - } - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - // just do something to show the renderer is working... - // value = ">" + value; - return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - } - } - -} |