/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui.renderer; import java.awt.Component; import java.io.File; import java.text.DateFormat; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.table.DefaultTableCellRenderer; import org.opends.guitools.controlpanel.datamodel.BackupDescriptor; import org.opends.guitools.controlpanel.datamodel.BackupTableModel; import org.opends.guitools.controlpanel.ui.ColorAndFontConstants; /** * Renderer of the table that contains the list of backups (it is used in the * tables of the verify backup and restore panels). * */ public class BackupTableCellRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = -4645902129785751854L; private DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL); private File backupParentPath; private final static Border fullBorder = BorderFactory.createCompoundBorder( BorderFactory.createMatteBorder(1, 0, 0, 0, ColorAndFontConstants.gridColor), BorderFactory.createEmptyBorder(4, 4, 4, 4)); private final static Border incrementalBorder = BorderFactory.createEmptyBorder(4, 4, 4, 4); /** * Default constructor. * */ public BackupTableCellRenderer() { setForeground(ColorAndFontConstants.tableForeground); setBackground(ColorAndFontConstants.tableBackground); } /** * Sets the path to which the backups are relative. * @param backupParentPath the path to which the backups are relative. */ public void setParentPath(File backupParentPath) { this.backupParentPath = backupParentPath; } /** * {@inheritDoc} */ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { String s; boolean isDate = false; boolean isFull = ((BackupTableModel)table.getModel()).get(row).getType() == BackupDescriptor.Type.FULL; if (value instanceof File) { File f = (File)value; s = ""; boolean isParent = false; while (f != null) { if (!f.equals(backupParentPath)) { if (s.length() == 0) { s = f.getName(); } else { s = f.getName() + File.separator + s; } } else { isParent = true; break; } f = f.getParentFile(); } if (isParent) { if (!isFull) { s = " "+s; } } else { s = value.toString(); } } else if (value instanceof Date) { isDate = true; s = formatter.format((Date)value); } else if (value instanceof BackupDescriptor.Type) { if (isFull) { s = "Full"; } else { s = "Incremental"; } } else if (value instanceof String) { s = (String)value; } else { throw new IllegalArgumentException( "Unknown class for "+value+": "+" row: "+row+ "column: "+column); } super.getTableCellRendererComponent(table, s, isSelected, hasFocus, row, column); if (isFull && (row != 0)) { setBorder(fullBorder); } else { setBorder(incrementalBorder); } if (isDate) { setHorizontalAlignment(SwingConstants.RIGHT); } else { setHorizontalAlignment(SwingConstants.LEFT); } return this; } }