All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
fr.opensagres.xdocreport.document.textstyling.html.StylesHelper Maven / Gradle / Ivy
/**
* Copyright (C) 2011-2015 The XDocReport Team
*
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package fr.opensagres.xdocreport.document.textstyling.html;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.xml.sax.Attributes;
import fr.opensagres.xdocreport.core.utils.StringUtils;
import fr.opensagres.xdocreport.document.textstyling.properties.ContainerProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.HeaderProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.ListItemProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.ListProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.ParagraphProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.SpanProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.TableCellProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.TableProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.TableRowProperties;
import fr.opensagres.xdocreport.document.textstyling.properties.TextAlignment;
/**
* Styles Helper.
*/
public class StylesHelper
{
public static Map parse( String style )
{
if ( StringUtils.isEmpty( style ) )
{
return Collections.emptyMap();
}
Map stylesMap = new HashMap();
String[] styles = style.split( ";" );
String s = null;
int index = 0;
String name = null;
String value = null;
for ( int i = 0; i < styles.length; i++ )
{
name = null;
value = null;
s = styles[i];
index = s.indexOf( ':' );
if ( index != -1 )
{
name = s.substring( 0, index ).trim();
value = s.substring( index + 1, s.length() ).trim();
stylesMap.put( name, value );
}
}
return stylesMap;
}
/**
* Create {@link ParagraphProperties} from inline style.
*
* @param style
* @return
*/
public static ParagraphProperties createParagraphProperties( String style )
{
Map stylesMap = StylesHelper.parse( style );
if ( !stylesMap.isEmpty() )
{
ParagraphProperties properties = new ParagraphProperties();
processContainerproperties(properties, stylesMap);
return properties;
}
return null;
}
/**
* Create {@link HeaderProperties} from inline style.
*
* @param style
* @return
*/
public static HeaderProperties createHeaderProperties( String style )
{
Map stylesMap = StylesHelper.parse( style );
if ( !stylesMap.isEmpty() )
{
HeaderProperties properties = new HeaderProperties();
processContainerproperties( properties, stylesMap );
return properties;
}
return null;
}
/**
* Create {@link ListItemProperties} from inline style.
*
* @param style
* @return
*/
public static ListItemProperties createListItemProperties( String style )
{
Map stylesMap = StylesHelper.parse( style );
if ( !stylesMap.isEmpty() )
{
ListItemProperties properties = new ListItemProperties();
processContainerproperties( properties, stylesMap );
return properties;
}
return null;
}
/**
* Create {@link ListProperties} from inline style.
*
* @param style
* @return
*/
public static ListProperties createListProperties( String style )
{
Map stylesMap = StylesHelper.parse( style );
if ( !stylesMap.isEmpty() )
{
ListProperties properties = new ListProperties();
processContainerproperties( properties, stylesMap );
return properties;
}
return null;
}
/**
* Create {@link SpanProperties} from inline style.
*
* @param style
* @return
*/
public static SpanProperties createSpanProperties( String style )
{
Map stylesMap = StylesHelper.parse( style );
if ( !stylesMap.isEmpty() )
{
SpanProperties properties = new SpanProperties();
processContainerproperties( properties, stylesMap );
return properties;
}
return null;
}
private static void processContainerproperties( ContainerProperties properties, Map stylesMap )
{
// page-break-before
properties.setPageBreakBefore( false );
if ( "always".equals( stylesMap.get( "page-break-before" ) ) )
{
properties.setPageBreakBefore( true );
}
// page-break-after
properties.setPageBreakAfter( false );
if ( "always".equals( stylesMap.get( "page-break-after" ) ) )
{
properties.setPageBreakAfter( true );
}
// font-weight
String fontWeight = stylesMap.get( "font-weight" );
properties.setBold( false );
if ( fontWeight != null )
{
if ( "bold".equals( fontWeight ) || "700".equals( fontWeight ) )
{
properties.setBold( true );
}
}
// font-style
String fontStyle = stylesMap.get( "font-style" );
properties.setItalic( false );
if ( fontStyle != null )
{
if ( "italic".equals( fontStyle ) )
{
properties.setItalic( true );
}
}
// text-decoration
String textDecoration = stylesMap.get( "text-decoration" );
properties.setStrike( false );
properties.setUnderline( false );
if ( textDecoration != null )
{
if ( textDecoration.contains( "underline" ) )
{
properties.setUnderline( true );
}
if ( textDecoration.contains( "line-through" ) )
{
properties.setStrike( true );
}
}
// vertical-align
String verticalAlign = stylesMap.get( "vertical-align" );
properties.setSuperscript( false );
properties.setSubscript( false );
if ( verticalAlign != null )
{
if ( "sub".equals( verticalAlign ) )
{
properties.setSubscript( true );
}
else if ( "super".equals( verticalAlign ) )
{
properties.setSuperscript( true );
}
}
// text-align
String textAlignment = stylesMap.get( "text-align" );
if ( textAlignment != null )
{
if ( "left".equals( textAlignment ) )
{
properties.setTextAlignment( TextAlignment.Left );
}
else if ( "center".equals( textAlignment ) )
{
properties.setTextAlignment( TextAlignment.Center );
}
else if ( "right".equals( textAlignment ) )
{
properties.setTextAlignment( TextAlignment.Right );
}
else if ( "justify".equals( textAlignment ) )
{
properties.setTextAlignment( TextAlignment.Justify );
}
else if ( "inherit".equals( textAlignment ) )
{
properties.setTextAlignment( TextAlignment.Inherit );
}
}
// style
String styleName = stylesMap.get("name");
if (styleName != null) {
properties.setStyleName(styleName);
}
}
public static TableProperties createTableProperties( Attributes attributes )
{
TableProperties properties = new TableProperties();
return properties;
}
public static TableRowProperties createTableRowProperties( Attributes attributes )
{
TableRowProperties properties = new TableRowProperties();
return properties;
}
public static TableCellProperties createTableCellProperties( Attributes attributes )
{
TableCellProperties properties = new TableCellProperties();
return properties;
}
}