2 * Meviz - Various tools collection to work with multimedia.
3 * Copyright (C) 2012 -- 2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 3 of the GNU Lesser General Public License
7 * or later as published by the Free Software Foundation.
10 package eu.svjatoslav.meviz.htmlindexer.layouts;
12 import eu.svjatoslav.meviz.htmlindexer.IndexingContext;
13 import eu.svjatoslav.meviz.htmlindexer.indexer.AbstractIndexer;
14 import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
15 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile;
16 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture;
17 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Video;
19 import java.util.List;
22 * In order to have possibility of several different layouts per directory.
23 * Universal interface is defined.
25 * Layout implementation is responsible for actual HTML generation.
28 public interface Layout {
33 void enlistDirectory(AbstractFile directory,
34 DirectoryMetadata parentDirectoryMetadata);
39 void enlistFile(AbstractFile file,
40 DirectoryMetadata parentDirectoryMetadata);
45 void enlistImage(Picture picture,
46 DirectoryMetadata parentDirectoryMetadata);
51 void enlistVideo(Video file);
54 * Return layout specific suffix that will be appended between
55 * index(suffix).html of generated file. This way multiple layouts can
56 * coexist in the same directory, each residing in its own HTML file.
58 String getFileNameSuffix();
61 * After necessary files have been enlisted for particular directory, use
62 * this method to retrieve generated HTML result.
64 String getHtml(final boolean showTitle,
65 final boolean doHtmlHeaderAndFooter, DirectoryMetadata metadata)
69 * Initialize layout for particular directory.
71 void init(String galleryTitle, List<String> path,
72 final AbstractIndexer indexer, IndexingContext context);