/**
* DescriptionFacade.java
* Copyright James Dempsey, 2011
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Created on 06/10/2011 7:53:48 PM
*
* $Id$
*/
package pcgen.facade.core;
import pcgen.facade.util.ReferenceFacade;
import pcgen.cdom.enumeration.BiographyField;
import pcgen.facade.util.ListFacade;
/**
* The Class {@code DescriptionFacade} tracks descriptive entries about the character,
* interfacing between the user interface and the core.
*
* <br>
*
* @author James Dempsey <jdempsey@users.sourceforge.net>
*/
public interface DescriptionFacade
{
/**
* Remove a chronicle entry.
* @param chronicleEntry The entry to be removed.
*/
public void removeChronicleEntry(ChronicleEntryFacade chronicleEntry);
/**
* Retrieve the set of the character's chronicle entries.
* @return The character's chronicle entries.
*/
public ListFacade<ChronicleEntryFacade> getChronicleEntries();
/**
* Create a new Chronicle Entry and add it to the character's list.
* @return The new ChronicleEntry.
*/
public ChronicleEntryFacade createChronicleEntry();
/**
* Retrieve the set of notes defined for the character.
* @return The character's notes.
*/
public ListFacade<NoteFacade> getNotes();
/**
* Update the name of a note.
* @param note The note to be renamed.
* @param newName The new name.
*/
public void renameNote(NoteFacade note, String newName);
/**
* Remove a note from a character.
* @param note The note to be removed.
*/
public void deleteNote(NoteFacade note);
/**
* Add a new custom note to the character.
*/
public void addNewNote();
/**
* Set the contents of a note.
* @param note The note to be updated.
* @param text The new contents of the note.
*/
public void setNote(NoteFacade note, String text);
/**
* Retrieve the value for a text only biography field.
* @param field The field to be queried.
* @return the value of the field.
*/
public ReferenceFacade<String> getBiographyField(BiographyField field);
/**
* Update the value of a text only biography field.
* @param field The field to be updated.
* @param newValue The new value of the field.
*/
public void setBiographyField(BiographyField field, String newValue);
/**
* @return The custom BiographyFields held for this character.
*/
public ListFacade<BiographyField> getCustomBiographyFields();
/**
* Add a new field to the list of fields that will be displayed for
* this character.
* @param field The BiographyField to be displayed.
*/
public void addCustomBiographyField(BiographyField field);
/**
* Remove a new field from the list of fields that will be displayed for
* this character.
* @param field The BiographyField to be hidden.
*/
public void removeCustomBiographyField(BiographyField field);
}