1 /* 2 * Copyright (C) 2003 Christian Cryder [christianc@granitepeaks.com] 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * 18 * $Id: ElementFactory.java,v 1.5 2004/02/01 05:16:27 christianc Exp $ 19 */ 20 package org.enhydra.barracuda.core.comp; 21 22 import java.util.*; 23 import org.w3c.dom.*; 24 25 /** 26 * This interface defines the methods needed to implement a ListModel. 27 */ 28 public interface ElementFactory { 29 30 /** 31 * Get the default template element. Once you get the template, you should 32 * always do a cloneNode() on it and then modify the newly created 33 * copy. May return null if no suitable template is available. 34 * 35 * @return the default template node. 36 */ 37 public Node getDefaultElement(); 38 39 /** 40 * Get a template element for the key. The key value may be a fully qualified 41 * class or interface name, or it may be the tag name that corresponds to 42 * that template. Once you get the template, you should always do a 43 * cloneNode() on it and then modify the copy. May return null if no suitable 44 * template is available. 45 * 46 * @param key the target key value 47 * @return the default template node. 48 */ 49 public Node getElement(String key); 50 51 /** 52 * Get a list of all the keys for a given template. 53 * 54 * @return a list of all the keys for a given template. 55 */ 56 public List getElementKeys(); 57 58 /** 59 * Get an actual reference to the Document so you can create whatever 60 * type of node you wish. This is the least preferred approach to use 61 * for creating nodes from a TemplateFactory, because by using the 62 * Document to create nodes you will lose any additional markup (ie. 63 * color, font, emphasis, etc) contained in the template for this 64 * particular node. 65 * 66 * @return the owner document 67 */ 68 public Document getDocument(); 69 70 }