/* * 07/21/2001 - 13:14:28 * Project.java * Copyright (C) 2001 Matt Benson * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.jext.project; import java.io.File; /** * Defines a basic project created using Jext. * * @author Matt Benson */ public interface Project { /** * Returns the name of this Project. * @return String. */ public abstract String getName(); /** * Returns the Files that compose this Project. * If any of these Files is a directory, it is understood that all * Files in and below this directory are part of this * Project. * @return File[]. */ public abstract File[] getFiles(); /** * Open the specified File in this Project. Although * it is an implementation decision, this act might also add the specified * File to this Project. * @param f the File to close. */ public abstract void openFile(File f); /** * Close the specified File. * @param f the File to close. */ public abstract void closeFile(File f); /** * Select the specified File. It is recommended that this * method be implemented such that the File is opened if not * already open. * @param f the File to select. * @see openFile(File) */ public abstract void selectFile(File f); /** * Returns the currently selected File of this * Project. * @return File. */ public abstract File getSelectedFile(); /** * Returns the value of the specified attribute for this Project. * @param key the String key to which this attribute is tied. * @return Object */ public abstract Object getAttribute(String key); /** * Returns the value of the specified attribute for this Project, * returning the specified default value if no such attribute exists. * @param key the String key to which this attribute is tied. * @param defaultValue the default Object to return if no such * attribute exists. * @return Object */ public abstract Object getAttribute(String key, Object defaultValue); /** * Returns the String value of the specified attribute for this * Project. * @param key the String key to which this attribute is tied. * @return String */ public abstract String getAttributeAsString(String key); /** * Sets the specified attribute. * @param key the String key of the attribute to be set. * @param value the Object value to assign. */ public abstract void setAttribute(String key, Object value); }//end interface Project