001 /////////////////////////////////////////////////////////////////////////////// 002 // Copyright (c) 2006, Frank S. Nestel, All Rights Reserved. 003 // 004 // This library is free software; you can redistribute it and/or 005 // modify it under the terms of the GNU Lesser General Public 006 // License as published by the Free Software Foundation; either 007 // version 2.1 of the License, or (at your option) any later version. 008 // 009 // This library is distributed in the hope that it will be useful, 010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 // GNU General Public License for more details. 013 // 014 // You should have received a copy of the GNU Lesser General Public 015 // License along with this program; if not, write to the Free Software 016 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 017 /////////////////////////////////////////////////////////////////////////////// 018 019 package de.spieleck.app.turn; 020 021 import java.io.File; 022 import java.io.IOException; 023 024 /** 025 * A RenderMode cares about how to forward tournament information 026 * to whatever output channel. 027 * <br/> 028 * This could have been a set of controls in a GUI or some Model in 029 * general MVC context. Out of the box we have some HTML rendering. 030 * 031 * <p><a href="$URL: https://svn.sourceforge.net/svnroot/jtourney/src/de/spieleck/app/turn/RenderMode.java $">$URL: https://svn.sourceforge.net/svnroot/jtourney/src/de/spieleck/app/turn/RenderMode.java $</a></p> 032 * 033 * @author Frank S. Nestel 034 * @author $Author: nestefan $ 035 * @version $Revision: 2 $ $Date: 2006-03-20 14:33:27 +0100 (Mo, 20 Mrz 2006) $ $Author: nestefan $ 036 */ 037 public interface RenderMode 038 extends LineSourceInited 039 { 040 /** 041 * Set a root directory, in case the RenderMode has to write files. 042 * It is recommended the RenderMode writes to a directory out 043 * below that root. 044 */ 045 public void setRoot(File root); 046 047 /** 048 * To enable reuse of the same renderer, it gets informed about 049 * starting and ending of a complete block of information. 050 */ 051 public void startSession() 052 throws IOException; 053 054 /** 055 * To enable reuse of the same renderer, it gets informed about 056 * starting and ending of a complete block of information. 057 */ 058 public void endSession() 059 throws IOException; 060 061 /** 062 * Tell the RenderMode, which Sourcefiles have been considered. 063 */ 064 public void addSource(String fName); 065 066 /** 067 * A render method which can avoid superfluous work by skipping 068 * depending on a timestamp. 069 */ 070 public void render(long timestamp, Object o, String fileName, 071 String style, int round) 072 throws IOException; 073 074 /** 075 * API in case we do not have an appropriate timestamp. 076 */ 077 public void render(Object o, String fileName, String style, int round) 078 throws IOException; 079 }