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=9585215a1bed7f5f4643c40af8abde6fdac59b58;hpb=e07b29a32091b5291a62158021aed3487ea5cd3a;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 9585215..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,167 +41,135 @@ public class MixedLayout implements Layout { List path; - public static final String encoding = "UTF-8"; - - int currentColumn = 0; - - int horizontalColumnsLimit = 2; - private AbstractIndexer indexer; private IndexingContext indexingContext; - public void columnAdded() { - currentColumn++; - if (currentColumn > horizontalColumnsLimit) { - - currentColumn = 0; - - filesHtml.append("\n"); - } - } - @Override - public void enlistDirectory(final AbstractFile directory) { + public void enlistDirectory(final AbstractFile directory, + final DirectoryMetadata parentDirectoryMetadata) { dirHtml.append(""); dirHtml.append(" ==> " + directory.fileName + ""); + + "\">

==> " + directory.fileName + "

"); dirHtml.append("\n"); } @Override - public void enlistFile(final AbstractFile file) { - finishRow(); + public void enlistFile(final AbstractFile file, + final DirectoryMetadata parentDirectoryMetadata) { final String fullFileName = file.fileName; - filesHtml.append("\n"); - filesHtml.append(" " + fullFileName + "\n"); filesHtml.append("  (" + FilePathParser.getFileSizeDescription(file.getFileLength()) - + ")\n"); - filesHtml.append("\n"); + + ")
\n"); } @Override - public void enlistImage(final AbstractFile abstractFile) { + public void enlistImage(final Picture picture, + final DirectoryMetadata parentDirectoryMetadata) { try { + enlistImageInternal(picture); + } catch (final Exception e) { + logger.error( + "Error generating thumbnails for image file: " + + e.toString() + + ", thumbnail generation skipped, enlisting as ordinary file instead.", + e); + enlistFile(picture, parentDirectoryMetadata); + } + } - final Picture picture = (Picture) abstractFile; - - final Dimension imageSize = picture.getDimensions(); - - final List recommendedDimensions = Picture - .getThumbnailDimensions(imageSize); - - Dimension listingDimension = new Dimension(500, 500); - - if (listingDimension.width > imageSize.width) - if (listingDimension.height > imageSize.height) - listingDimension = imageSize; - - final String listingThumbnailUrl = indexer.getThumbnailUrl(picture, - listingDimension, indexingContext); + 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(""); + } - startcolumn(); + return html.toString(); + } - filesHtml.append("
\n"); + private void enlistImageInternal(final Picture picture) { - filesHtml.append("\n"); - filesHtml.append("
" - + FilePathParser - .getFileNameWithoutExtension(picture.fileName) - + "
("); + filesHtml.append("
"); - 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(""); - } + // clickable image thumbnail + filesHtml.append("\n"); + filesHtml.append("
\n"); - filesHtml.append(")\n"); + // file name + filesHtml.append("" + + FilePathParser.getFileNameWithoutExtension(picture.fileName) + + "
"); - columnAdded(); + // 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; - finishRow(); + filesHtml.append("
"); + // watchable video filesHtml - .append("\n"); - filesHtml.append("\n"); - - filesHtml.append("
\n"); - } - - public void finishRow() { + filesHtml.append("\n"); - if (currentColumn == 0) - return; - - while (currentColumn <= horizontalColumnsLimit) { - filesHtml.append(""); - currentColumn++; - } - filesHtml.append("\n"); - currentColumn = 0; } /** {@inheritDoc} */ @@ -206,63 +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"); - - finalHtml.append("

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

\n"); + html.append("

" + galleryTitle + "

\n"); - // append directory listing - finalHtml.append("\n"); + html.append(showCurrentPath()); + html.append(listDirectories()); + html.append(directory.getHeaderMevizMetadataHtml()); + html.append(filesHtml.toString()); - if (path.size() > 0) { - finalHtml.append(""); - finalHtml.append(""); - finalHtml.append("\n"); - } + if (doHtmlHeaderAndFooter) + html.append("\n"); - finalHtml.append(dirHtml.toString()); - finalHtml.append("\n\n"); - finalHtml.append("
<== ..

\n"); + return html.toString(); + } - // append file listing + private String getImageThumbnailUrl(final Picture picture) { + final Dimension imageSize = picture.getDimensions(); - finishRow(); - finalHtml.append("\n"); - finalHtml.append(filesHtml.toString()); - finalHtml.append("\n
\n"); + 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 @@ -278,11 +243,33 @@ public class MixedLayout implements Layout { filesHtml = new StringBuffer(); } - public void startcolumn() { - if (currentColumn == 0) { - filesHtml.append(""); - currentColumn = 1; + private String listDirectories() { + final StringBuilder html = new StringBuilder(); + html.append("\n"); + + if (path.size() > 0) { + html.append(""); + html.append(""); + html.append("\n"); } + + html.append(dirHtml.toString()); + html.append("\n\n"); + html.append("

<== parent directory


\n"); + + return html.toString(); + } + + private String showCurrentPath() { + final StringBuilder html = new StringBuilder(); + html.append("

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

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