001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.util;
017
018 import java.awt.Component;
019
020 import javax.swing.JList;
021 import javax.swing.JTable;
022 import javax.swing.JTree;
023 import javax.swing.ListCellRenderer;
024 import javax.swing.table.TableCellRenderer;
025 import javax.swing.tree.TreeCellRenderer;
026
027 import org.springframework.util.Assert;
028
029 /**
030 * Convenient superclass that encapsulates common rendering code for an object
031 * applied to different controls.
032 *
033 * @author Keith Donald
034 */
035 public abstract class AbstractCellRenderer implements TreeCellRenderer, TableCellRenderer, ListCellRenderer {
036
037 private TableCellRenderer tableCellRenderer;
038
039 private ListCellRenderer listCellRenderer;
040
041 private TreeCellRenderer treeCellRenderer;
042
043 public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded,
044 boolean leaf, int row, boolean hasFocus) {
045 if (treeCellRenderer == null) {
046 this.treeCellRenderer = createTreeCellRenderer();
047 Assert.notNull(this.treeCellRenderer, "Cell renderer implementation has not been configured for trees?");
048 }
049 return treeCellRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
050 }
051
052 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
053 int row, int column) {
054 if (tableCellRenderer == null) {
055 this.tableCellRenderer = createTableCellRenderer();
056 Assert.notNull(this.tableCellRenderer, "Cell renderer implementation has not been configured for tables?");
057 }
058 return tableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
059 }
060
061 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
062 boolean cellHasFocus) {
063 if (listCellRenderer == null) {
064 this.listCellRenderer = createListCellRenderer();
065 Assert.notNull(this.listCellRenderer, "Cell renderer has not been configured for lists?");
066 }
067 return listCellRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
068 }
069
070 protected ListCellRenderer createListCellRenderer() {
071 return null;
072 }
073
074 protected TableCellRenderer createTableCellRenderer() {
075 return null;
076 }
077
078 protected TreeCellRenderer createTreeCellRenderer() {
079 return null;
080 }
081
082 }