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.table;
017
018 import java.util.List;
019
020 /**
021 * Designed to display object arrays / lists in a list for multi-column tables,
022 * or just plain objects for single column table. Nicely aligned with Hibernate
023 * List behaivior for query result sets.
024 *
025 * @author keith
026 */
027 public abstract class ListTableModel extends BaseTableModel {
028
029 public ListTableModel() {
030 super();
031 }
032
033 public ListTableModel(List rows) {
034 super(rows);
035 }
036
037 protected Object getValueAtInternal(Object row, int columnIndex) {
038 if (row != null && getDataColumnCount() > 1) {
039 if (row.getClass().isArray()) {
040 Object[] arrayRow = (Object[])row;
041 return arrayRow[columnIndex];
042 }
043 else if (row instanceof List) {
044 return ((List)row).get(columnIndex);
045 }
046 else {
047 throw new IllegalArgumentException("Unsupported row collection type " + row);
048 }
049 }
050
051 if (row != null && row.getClass().isArray())
052 return ((Object[])row)[0];
053
054 return row;
055 }
056 }