X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2Flayouts%2FMixedLayout.java;h=fd70b107b1a51224eb0c008d72f4762312cafdc6;hb=4b74c2be1dd6104f3a4dd50d29ece78857ada3fa;hp=8ae10026eb4e340a5999f4e39b316419a4b85c62;hpb=4d5a88dcfde63a2250b0a9f430ef07744df99720;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/layouts/MixedLayout.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/layouts/MixedLayout.java index 8ae1002..fd70b10 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/layouts/MixedLayout.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/layouts/MixedLayout.java @@ -9,6 +9,7 @@ package eu.svjatoslav.meviz.htmlindexer.layouts; +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; @@ -21,12 +22,15 @@ import eu.svjatoslav.meviz.htmlindexer.Constants; import eu.svjatoslav.meviz.htmlindexer.IndexingContext; import eu.svjatoslav.meviz.htmlindexer.Layout; import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension; +import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.GeneralFile; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture; public class MixedLayout implements Layout { + public static final String encoding = "UTF-8"; + Logger logger = Logger.getLogger(MixedLayout.class); StringBuffer dirHtml = new StringBuffer(); @@ -37,14 +41,13 @@ public class MixedLayout implements Layout { List path; - public static final String encoding = "UTF-8"; - private AbstractIndexer indexer; private IndexingContext indexingContext; @Override - public void enlistDirectory(final AbstractFile directory) { + public void enlistDirectory(final AbstractFile directory, + final DirectoryMetadata parentDirectoryMetadata) { dirHtml.append(""); dirHtml.append(" recommendedDimensions = Picture - .getThumbnailDimensions(imageSize); - - Dimension listingDimension = new Dimension(1500, 450); + private String enlistImageDimensions(final Picture picture) { + final StringBuilder html = new StringBuilder(); + + final List recommendedDimensions = Picture + .getThumbnailDimensions(picture.getDimensions()); + + int count = 0; + for (final Dimension dimension : recommendedDimensions) { + count++; + if (count > 1) + html.append(", "); + html.append(""); + html.append(dimension.width + "x" + dimension.height); + html.append(""); + } - if (listingDimension.width > imageSize.width) - if (listingDimension.height > imageSize.height) - listingDimension = imageSize; + return html.toString(); + } - final String listingThumbnailUrl = indexer.getThumbnailUrl(picture, - listingDimension, indexingContext); + private void enlistImageInternal(final Picture picture) { - filesHtml.append("
"); - filesHtml.append("\n"); + filesHtml.append("
"); - filesHtml.append("\n"); - filesHtml.append("
" - + FilePathParser - .getFileNameWithoutExtension(picture.fileName) - + "
("); + // clickable image thumbnail + filesHtml.append("\n"); + filesHtml.append("
\n"); - int count = 0; - for (final Dimension dimension : recommendedDimensions) { - count++; - if (count > 1) - filesHtml.append(", "); - filesHtml.append(""); - filesHtml.append(dimension.width + "x" + dimension.height); - filesHtml.append(""); - } + // file name + filesHtml.append("" + + FilePathParser.getFileNameWithoutExtension(picture.fileName) + + "
"); - filesHtml.append(")\n"); - filesHtml.append("
"); + // links to thumbnails of various sizes + filesHtml.append("(" + enlistImageDimensions(picture) + ")\n"); - } catch (final Exception e) { - logger.error( - "Error generating thumbnails for image file: " - + e.toString() - + ", thumbnail generation skipped, enlisting as ordinary file instead.", - e); - enlistFile(abstractFile); - } + filesHtml.append("
"); } /** {@inheritDoc} */ @Override - public void enlistOgv(final AbstractFile abstractFile) + public void enlistOgv(final AbstractFile abstractFile, + final DirectoryMetadata parentDirectoryMetadata) throws UnsupportedEncodingException { final GeneralFile file = (GeneralFile) abstractFile; + filesHtml.append("
"); + + // watchable video filesHtml - .append("
\n"); + + file.fileName) + "\">download as OGV"); + + filesHtml.append("
\n"); filesHtml.append("\n"); @@ -166,42 +178,56 @@ public class MixedLayout implements Layout { return ""; } - /** {@inheritDoc} */ + /** + * {@inheritDoc} + * + * @throws IOException + */ @Override public String getHtml(final boolean showTitle, - final boolean doHtmlHeaderAndFooter) { + final boolean doHtmlHeaderAndFooter, + final DirectoryMetadata directory) { // assemble final page HTML - final StringBuffer finalHtml = new StringBuffer(); + final StringBuffer html = new StringBuffer(); if (doHtmlHeaderAndFooter) { // page header - finalHtml.append("\n"); - finalHtml.append("\n"); - finalHtml - .append(" \n"); - finalHtml.append("\n"); - finalHtml - .append("\n"); - finalHtml.append("\n"); - finalHtml.append("\n"); - finalHtml.append("\n"); + html.append("\n"); + html.append("\n"); + html.append(" \n"); + html.append("\n"); + html.append("\n"); + html.append("\n"); + html.append("\n"); + html.append("\n"); } if (showTitle) - finalHtml - .append("

" + galleryTitle + "

\n"); + html.append("

" + galleryTitle + "

\n"); + + html.append(showCurrentPath()); + html.append(listDirectories()); + html.append(directory.getHeaderMevizMetadataHtml()); + html.append(filesHtml.toString()); + + if (doHtmlHeaderAndFooter) + html.append("
\n"); - showCurrentPath(finalHtml); + return html.toString(); + } - listDirectories(finalHtml); + private String getImageThumbnailUrl(final Picture picture) { + final Dimension imageSize = picture.getDimensions(); - finalHtml.append(filesHtml.toString()); + Dimension listingDimension = new Dimension(1500, 450); - if (doHtmlHeaderAndFooter) - finalHtml.append("
\n"); + if (listingDimension.width > imageSize.width) + if (listingDimension.height > imageSize.height) + listingDimension = imageSize; - return finalHtml.toString(); + return indexer.getThumbnailUrl(picture, listingDimension, + indexingContext); } @Override @@ -217,27 +243,33 @@ public class MixedLayout implements Layout { filesHtml = new StringBuffer(); } - private void listDirectories(final StringBuffer finalHtml) { - finalHtml.append("\n"); + private String listDirectories() { + final StringBuilder html = new StringBuilder(); + html.append("
\n"); if (path.size() > 0) { - finalHtml.append(""); - finalHtml.append(""); - finalHtml.append("\n"); + html.append("\n"); } - finalHtml.append(dirHtml.toString()); - finalHtml.append("\n\n"); - finalHtml.append("
"); + html.append("

<== parent directory


\n"); + html.append(dirHtml.toString()); + html.append("\n
\n"); + html.append("\n"); + + return html.toString(); } - private void showCurrentPath(final StringBuffer finalHtml) { - finalHtml.append("

"); + private String showCurrentPath() { + final StringBuilder html = new StringBuilder(); + html.append("

"); for (final String p : path) - finalHtml.append(" / " + p); - finalHtml.append("

\n"); + html.append(" / " + p); + html.append("

\n"); + + return html.toString(); } }