/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2008 jOpenDocument, by ILM Informatique. All rights reserved.
*
* The contents of this file are subject to the terms of the GNU
* General Public License Version 3 only ("GPL").
* You may not use this file except in compliance with the License.
* You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html
* See the License for the specific language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each file.
*
*/
package org.jopendocument.dom;
import org.jopendocument.dom.text.ParagraphStyle.SyleParagraphProperties;
import org.jopendocument.dom.text.TextStyle.SyleTextProperties;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import org.jdom.Element;
/**
* See 14.13.1 Graphic and Presentation Styles.
*
* @author Sylvain CUAZ
*/
public class GraphicStyle extends StyleStyle {
static public final String STYLE_FAMILY = "graphic";
// from section 18.222 in v1.2-part1
public static final StyleDesc<GraphicStyle> DESC = new StyleDesc<GraphicStyle>(GraphicStyle.class, XMLVersion.OD, STYLE_FAMILY, "fr", "draw", Arrays.asList("dr3d:cube", "dr3d:extrude",
"dr3d:rotate", "dr3d:scene", "dr3d:sphere", "draw:caption", "draw:circle", "draw:connector", "draw:control", "draw:custom-shape", "draw:ellipse", "draw:frame", "draw:g", "draw:line",
"draw:measure", "draw:page-thumbnail", "draw:path", "draw:polygon", "draw:polyline", "draw:rect", "draw:regular-polygon", "office:annotation")) {
@Override
public GraphicStyle create(ODPackage pkg, Element e) {
return new GraphicStyle(pkg, e);
}
};
private SyleTextProperties textProps;
private SyleParagraphProperties pProps;
private SyleGraphicProperties graphProps;
public GraphicStyle(final ODPackage pkg, Element tableColElem) {
super(pkg, tableColElem);
this.textProps = null;
this.pProps = null;
this.graphProps = null;
}
public final SyleTextProperties getTextProperties() {
if (this.textProps == null)
this.textProps = new SyleTextProperties(this);
return this.textProps;
}
public final SyleParagraphProperties getParagraphProperties() {
if (this.pProps == null)
this.pProps = new SyleParagraphProperties(this);
return this.pProps;
}
public final SyleGraphicProperties getGraphicProperties() {
if (this.graphProps == null)
this.graphProps = new SyleGraphicProperties(this);
return this.graphProps;
}
/**
* Cf section 15.13 to 15.28.
*
* @author Sylvain CUAZ
*/
public static class SyleGraphicProperties extends StyleProperties {
private static Pattern split = Pattern.compile(" ");
public SyleGraphicProperties(StyleStyle style) {
super(style, STYLE_FAMILY);
}
public final String getHorizontalPosition() {
return this.getElement().getAttributeValue("horizontal-pos", this.getElement().getNamespace("style"));
}
public final String getHorizontalRelation() {
return this.getElement().getAttributeValue("horizontal-rel", this.getElement().getNamespace("style"));
}
public final String getVerticalPosition() {
return this.getElement().getAttributeValue("vertical-pos", this.getElement().getNamespace("style"));
}
public final String getVerticalRelation() {
return this.getElement().getAttributeValue("vertical-rel", this.getElement().getNamespace("style"));
}
/**
* The protected position, see 15.27.8.
*
* @return a list that consists of any of the values content, position, or size.
*/
public final List<String> getProtected() {
final String val = this.getElement().getAttributeValue("protect", this.getElement().getNamespace("style"));
if (val == null || "none".equals(val))
return Collections.emptyList();
else
return Arrays.asList(split.split(val));
}
public final boolean isContentPrinted() {
return parseBoolean(this.getElement().getAttributeValue("print-content", this.getElement().getNamespace("style")), true);
}
}
}