/*
* Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistribution in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any
* kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
* WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
* EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
* DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
* RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
* ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
* FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
* SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
* THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that this software is not designed, licensed or
* intended for use in the design, construction, operation or
* maintenance of any nuclear facility.
*/
import java.util.Date;
/**
* BookmarksModel is a TreeTableModel extending from
* DynamicTreeTableModel. The only functionality it adds is
* overriding isCellEditable to return a different
* value based on the type of node passed in. Specifically, the root node
* is not editable, at all.
*
* @author Scott Violet
*/
public class BookmarksModel extends DynamicTreeTableModel {
/**
* Names of the columns.
*/
private static final String[] columnNames =
{ "Name", "Location", "Last Visited", "Created" };
/**
* Method names used to access the data to display.
*/
private static final String[] methodNames =
{ "getName", "getLocation", "getLastVisited","getCreated" };
/**
* Method names used to set the data.
*/
private static final String[] setterMethodNames =
{ "setName", "setLocation", "setLastVisited","setCreated" };
/**
* Classes presenting the data.
*/
private static final Class[] classes =
{ TreeTableModel.class, String.class, Date.class, Date.class };
public BookmarksModel(Bookmarks.BookmarkDirectory root) {
super(root, columnNames, methodNames, setterMethodNames, classes);
}
/**
* isCellEditable is invoked by the JTreeTable to determine
* if a particular entry can be added. This is overridden to return true
* for the first column, assuming the node isn't the root, as well as
* returning two for the second column if the node is a BookmarkEntry.
* For all other columns this returns false.
*/
public boolean isCellEditable(Object node, int column) {
switch (column) {
case 0:
// Allow editing of the name, as long as not the root.
return (node != getRoot());
case 1:
// Allow editing of the location, as long as not a
// directory
return (node instanceof Bookmarks.BookmarkEntry);
default:
// Don't allow editing of the date fields.
return false;
}
}
}