/** * Copyright (c) 2009 Juwi MacMillan Group GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.juwimm.cms.gui.table; import static de.juwimm.cms.common.Constants.*; import java.io.Serializable; import java.util.*; import javax.swing.table.AbstractTableModel; import de.juwimm.cms.common.Constants; import de.juwimm.cms.vo.ViewComponentValue; /** * * @author <a href="mailto:carsten.schalm@juwimm.com">Carsten Schalm</a> * company Juwi|MacMillan Group Gmbh, Walsrode, Germany * @version $Id$ */ public class ChangePageLastModifiedTableModel extends AbstractTableModel implements Serializable { private Vector<String> columnNames = new Vector<String>(5); protected Vector dataVector = new Vector(); public ChangePageLastModifiedTableModel(Collection<ViewComponentValue> data) { super(); columnNames.addElement(rb.getString("panel.panelView.lblLinkname")); columnNames.addElement(rb.getString("panel.panelView.lblStateOnline")); columnNames.addElement(rb.getString("ChangePageLastModifiedTableModel.existingModifiedDate")); columnNames.addElement(rb.getString("ChangePageLastModifiedTableModel.newModifiedDate")); columnNames.addElement(rb.getString("ChangePageLastModifiedTableModel.changeModifiedDate")); this.addRows(data); } private void addRows(Collection<ViewComponentValue> data) { Iterator it = data.iterator(); while (it.hasNext()) { ViewComponentValue value = (ViewComponentValue) it.next(); Object[] row = new Object[6]; row[0] = value.getDisplayLinkName(); row[1] = this.getOnlineStateText(value); row[2] = new Date(value.getUserLastModifiedDate()); row[3] = new Date(value.getLastModifiedDate()); row[4] = new Boolean(true); row[5] = value; this.addRow(row); } } private String getOnlineStateText(ViewComponentValue viewComponent) { switch (viewComponent.getOnline()) { case Constants.ONLINE_STATUS_OFFLINE: return rb.getString("actions.ONLINE_STATUS_OFFLINE"); case Constants.ONLINE_STATUS_ONLINE: return rb.getString("actions.ONLINE_STATUS_ONLINE"); default: return rb.getString("actions.ONLINE_STATUS_UNDEF"); } } private void addRow(Object[] row) { dataVector.addElement(row); fireTableRowsInserted(this.getRowCount(), this.getRowCount()); } public int getRowCount() { return this.dataVector.size(); } public int getColumnCount() { return this.columnNames.size(); } public Object getValueAt(int rowIndex, int columnIndex) { return ((Object[]) this.dataVector.elementAt(rowIndex))[columnIndex]; } public Collection<ViewComponentValue> getSelectedPages() { Collection<ViewComponentValue> result = new ArrayList<ViewComponentValue>(); Iterator it = this.dataVector.iterator(); while (it.hasNext()) { Object[] value = (Object[]) it.next(); if (((Boolean) value[4]).booleanValue()) { Date date = (Date) value[3]; ViewComponentValue vcValue = (ViewComponentValue) value[5]; vcValue.setUserLastModifiedDate(date.getTime()); result.add(vcValue); } } return result; } /* (non-Javadoc) * @see javax.swing.table.AbstractTableModel#getColumnClass(int) */ @Override public Class<?> getColumnClass(int columnIndex) { switch(columnIndex) { case 0: return String.class; case 1: return String.class; case 2: return Date.class; case 3: return Date.class; case 4: return Boolean.class; default: return Object.class; } } /* (non-Javadoc) * @see javax.swing.table.AbstractTableModel#getColumnName(int) */ @Override public String getColumnName(int column) { return this.columnNames.elementAt(column); } /* (non-Javadoc) * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int) */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { // only the checkbox and the userDate should be editable return ((columnIndex == 4) || (columnIndex == 3)); } /* (non-Javadoc) * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int) */ @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { Object[] row = (Object[]) dataVector.elementAt(rowIndex); row[columnIndex] = aValue; super.fireTableCellUpdated(rowIndex, columnIndex); } }