/* ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
==================================================================== */

package org.apache.poi.xslf.usermodel;

import org.apache.poi.util.Internal;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTCustomGeometry2D;
import org.openxmlformats.schemas.drawingml.x2006.main.CTEffectContainer;
import org.openxmlformats.schemas.drawingml.x2006.main.CTEffectList;
import org.openxmlformats.schemas.drawingml.x2006.main.CTFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGradientFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTLineProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNoFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPatternFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D;
import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTSolidColorFillProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTableCellProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties;
import org.openxmlformats.schemas.presentationml.x2006.main.CTBackgroundProperties;

Internal helper class to unify property access. This class is experimental and not (yet) supposed for public usage. Maybe the xml schemas might be enhanced with interfaces to make this class superfluous
Since:POI 3.15-beta2
/** * Internal helper class to unify property access. * * This class is experimental and not (yet) supposed for public usage. * Maybe the xml schemas might be enhanced with interfaces to make this class superfluous * * @since POI 3.15-beta2 */
@Internal /* package */ class XSLFPropertiesDelegate { private static final POILogger LOG = POILogFactory.getLogger(XSLFPropertiesDelegate.class); public static XSLFFillProperties getFillDelegate(XmlObject props) { return getDelegate(XSLFFillProperties.class, props); } public static XSLFGeometryProperties getGeometryDelegate(XmlObject props) { return getDelegate(XSLFGeometryProperties.class, props); } public static XSLFEffectProperties getEffectDelegate(XmlObject props) { return getDelegate(XSLFEffectProperties.class, props); } public interface XSLFFillProperties {
Gets the "noFill" element
/** * Gets the "noFill" element */
CTNoFillProperties getNoFill();
True if has "noFill" element
/** * True if has "noFill" element */
boolean isSetNoFill();
Sets the "noFill" element
/** * Sets the "noFill" element */
void setNoFill(CTNoFillProperties noFill);
Appends and returns a new empty "noFill" element
/** * Appends and returns a new empty "noFill" element */
CTNoFillProperties addNewNoFill();
Unsets the "noFill" element
/** * Unsets the "noFill" element */
void unsetNoFill();
Gets the "solidFill" element
/** * Gets the "solidFill" element */
CTSolidColorFillProperties getSolidFill();
True if has "solidFill" element
/** * True if has "solidFill" element */
boolean isSetSolidFill();
Sets the "solidFill" element
/** * Sets the "solidFill" element */
void setSolidFill(CTSolidColorFillProperties solidFill);
Appends and returns a new empty "solidFill" element
/** * Appends and returns a new empty "solidFill" element */
CTSolidColorFillProperties addNewSolidFill();
Unsets the "solidFill" element
/** * Unsets the "solidFill" element */
void unsetSolidFill();
Gets the "gradFill" element
/** * Gets the "gradFill" element */
CTGradientFillProperties getGradFill();
True if has "gradFill" element
/** * True if has "gradFill" element */
boolean isSetGradFill();
Sets the "gradFill" element
/** * Sets the "gradFill" element */
void setGradFill(CTGradientFillProperties gradFill);
Appends and returns a new empty "gradFill" element
/** * Appends and returns a new empty "gradFill" element */
CTGradientFillProperties addNewGradFill();
Unsets the "gradFill" element
/** * Unsets the "gradFill" element */
void unsetGradFill();
Gets the "blipFill" element
/** * Gets the "blipFill" element */
CTBlipFillProperties getBlipFill();
True if has "blipFill" element
/** * True if has "blipFill" element */
boolean isSetBlipFill();
Sets the "blipFill" element
/** * Sets the "blipFill" element */
void setBlipFill(CTBlipFillProperties blipFill);
Appends and returns a new empty "blipFill" element
/** * Appends and returns a new empty "blipFill" element */
CTBlipFillProperties addNewBlipFill();
Unsets the "blipFill" element
/** * Unsets the "blipFill" element */
void unsetBlipFill();
Gets the "pattFill" element
/** * Gets the "pattFill" element */
CTPatternFillProperties getPattFill();
True if has "pattFill" element
/** * True if has "pattFill" element */
boolean isSetPattFill();
Sets the "pattFill" element
/** * Sets the "pattFill" element */
void setPattFill(CTPatternFillProperties pattFill);
Appends and returns a new empty "pattFill" element
/** * Appends and returns a new empty "pattFill" element */
CTPatternFillProperties addNewPattFill();
Unsets the "pattFill" element
/** * Unsets the "pattFill" element */
void unsetPattFill();
Gets the "grpFill" element
/** * Gets the "grpFill" element */
CTGroupFillProperties getGrpFill();
True if has "grpFill" element
/** * True if has "grpFill" element */
boolean isSetGrpFill();
Sets the "grpFill" element
/** * Sets the "grpFill" element */
void setGrpFill(CTGroupFillProperties grpFill);
Appends and returns a new empty "grpFill" element
/** * Appends and returns a new empty "grpFill" element */
CTGroupFillProperties addNewGrpFill();
Unsets the "grpFill" element
/** * Unsets the "grpFill" element */
void unsetGrpFill();
Helper method to unify other properties with style matrix references
Returns:true, if this is a matrix style delegate
/** * Helper method to unify other properties with style matrix references * @return true, if this is a matrix style delegate */
boolean isSetMatrixStyle();
Helper method to unify other properties with style matrix references
/** * Helper method to unify other properties with style matrix references */
CTStyleMatrixReference getMatrixStyle();
Helper method to choose between fill and line style
Returns:true, if this applies to a line
/** * Helper method to choose between fill and line style * * @return true, if this applies to a line */
boolean isLineStyle(); } public interface XSLFGeometryProperties {
Gets the "custGeom" element
/** * Gets the "custGeom" element */
CTCustomGeometry2D getCustGeom();
True if has "custGeom" element
/** * True if has "custGeom" element */
boolean isSetCustGeom();
Sets the "custGeom" element
/** * Sets the "custGeom" element */
void setCustGeom(CTCustomGeometry2D custGeom);
Appends and returns a new empty "custGeom" element
/** * Appends and returns a new empty "custGeom" element */
CTCustomGeometry2D addNewCustGeom();
Unsets the "custGeom" element
/** * Unsets the "custGeom" element */
void unsetCustGeom();
Gets the "prstGeom" element
/** * Gets the "prstGeom" element */
CTPresetGeometry2D getPrstGeom();
True if has "prstGeom" element
/** * True if has "prstGeom" element */
boolean isSetPrstGeom();
Sets the "prstGeom" element
/** * Sets the "prstGeom" element */
void setPrstGeom(CTPresetGeometry2D prstGeom);
Appends and returns a new empty "prstGeom" element
/** * Appends and returns a new empty "prstGeom" element */
CTPresetGeometry2D addNewPrstGeom();
Unsets the "prstGeom" element
/** * Unsets the "prstGeom" element */
void unsetPrstGeom(); } public interface XSLFEffectProperties {
Gets the "effectLst" element
/** * Gets the "effectLst" element */
CTEffectList getEffectLst();
True if has "effectLst" element
/** * True if has "effectLst" element */
boolean isSetEffectLst();
Sets the "effectLst" element
/** * Sets the "effectLst" element */
void setEffectLst(CTEffectList effectLst);
Appends and returns a new empty "effectLst" element
/** * Appends and returns a new empty "effectLst" element */
CTEffectList addNewEffectLst();
Unsets the "effectLst" element
/** * Unsets the "effectLst" element */
void unsetEffectLst();
Gets the "effectDag" element
/** * Gets the "effectDag" element */
CTEffectContainer getEffectDag();
True if has "effectDag" element
/** * True if has "effectDag" element */
boolean isSetEffectDag();
Sets the "effectDag" element
/** * Sets the "effectDag" element */
void setEffectDag(CTEffectContainer effectDag);
Appends and returns a new empty "effectDag" element
/** * Appends and returns a new empty "effectDag" element */
CTEffectContainer addNewEffectDag();
Unsets the "effectDag" element
/** * Unsets the "effectDag" element */
void unsetEffectDag(); } private static class ShapeDelegate implements XSLFFillProperties, XSLFGeometryProperties, XSLFEffectProperties { final CTShapeProperties props; ShapeDelegate(CTShapeProperties props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return props.getNoFill(); } @Override public boolean isSetNoFill() { return props.isSetNoFill(); } @Override public void setNoFill(CTNoFillProperties noFill) { props.setNoFill(noFill); } @Override public CTNoFillProperties addNewNoFill() { return props.addNewNoFill(); } @Override public void unsetNoFill() { props.unsetNoFill(); } @Override public CTSolidColorFillProperties getSolidFill() { return props.getSolidFill(); } @Override public boolean isSetSolidFill() { return props.isSetSolidFill(); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) { props.setSolidFill(solidFill); } @Override public CTSolidColorFillProperties addNewSolidFill() { return props.addNewSolidFill(); } @Override public void unsetSolidFill() { props.unsetSolidFill(); } @Override public CTGradientFillProperties getGradFill() { return props.getGradFill(); } @Override public boolean isSetGradFill() { return props.isSetGradFill(); } @Override public void setGradFill(CTGradientFillProperties gradFill) { props.setGradFill(gradFill); } @Override public CTGradientFillProperties addNewGradFill() { return props.addNewGradFill(); } @Override public void unsetGradFill() { props.unsetGradFill(); } @Override public CTBlipFillProperties getBlipFill() { return props.getBlipFill(); } @Override public boolean isSetBlipFill() { return props.isSetBlipFill(); } @Override public void setBlipFill(CTBlipFillProperties blipFill) { props.setBlipFill(blipFill); } @Override public CTBlipFillProperties addNewBlipFill() { return props.addNewBlipFill(); } @Override public void unsetBlipFill() { props.unsetBlipFill(); } @Override public CTPatternFillProperties getPattFill() { return props.getPattFill(); } @Override public boolean isSetPattFill() { return props.isSetPattFill(); } @Override public void setPattFill(CTPatternFillProperties pattFill) { props.setPattFill(pattFill); } @Override public CTPatternFillProperties addNewPattFill() { return props.addNewPattFill(); } @Override public void unsetPattFill() { props.unsetPattFill(); } @Override public CTGroupFillProperties getGrpFill() { return props.getGrpFill(); } @Override public boolean isSetGrpFill() { return props.isSetGrpFill(); } @Override public void setGrpFill(CTGroupFillProperties grpFill) { props.setGrpFill(grpFill); } @Override public CTGroupFillProperties addNewGrpFill() { return props.addNewGrpFill(); } @Override public void unsetGrpFill() { props.unsetGrpFill(); } @Override public CTCustomGeometry2D getCustGeom() { return props.getCustGeom(); } @Override public boolean isSetCustGeom() { return props.isSetCustGeom(); } @Override public void setCustGeom(CTCustomGeometry2D custGeom) { props.setCustGeom(custGeom); } @Override public CTCustomGeometry2D addNewCustGeom() { return props.addNewCustGeom(); } @Override public void unsetCustGeom() { props.unsetCustGeom(); } @Override public CTPresetGeometry2D getPrstGeom() { return props.getPrstGeom(); } @Override public boolean isSetPrstGeom() { return props.isSetPrstGeom(); } @Override public void setPrstGeom(CTPresetGeometry2D prstGeom) { props.setPrstGeom(prstGeom); } @Override public CTPresetGeometry2D addNewPrstGeom() { return props.addNewPrstGeom(); } @Override public void unsetPrstGeom() { props.unsetPrstGeom(); } @Override public CTEffectList getEffectLst() { return props.getEffectLst(); } @Override public boolean isSetEffectLst() { return props.isSetEffectLst(); } @Override public void setEffectLst(CTEffectList effectLst) { props.setEffectLst(effectLst); } @Override public CTEffectList addNewEffectLst() { return props.addNewEffectLst(); } @Override public void unsetEffectLst() { props.unsetEffectLst(); } @Override public CTEffectContainer getEffectDag() { return props.getEffectDag(); } @Override public boolean isSetEffectDag() { return props.isSetEffectDag(); } @Override public void setEffectDag(CTEffectContainer effectDag) { props.setEffectDag(effectDag); } @Override public CTEffectContainer addNewEffectDag() { return props.addNewEffectDag(); } @Override public void unsetEffectDag() { props.unsetEffectDag(); } @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return false; } } private static class BackgroundDelegate implements XSLFFillProperties, XSLFEffectProperties { final CTBackgroundProperties props; BackgroundDelegate(CTBackgroundProperties props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return props.getNoFill(); } @Override public boolean isSetNoFill() { return props.isSetNoFill(); } @Override public void setNoFill(CTNoFillProperties noFill) { props.setNoFill(noFill); } @Override public CTNoFillProperties addNewNoFill() { return props.addNewNoFill(); } @Override public void unsetNoFill() { props.unsetNoFill(); } @Override public CTSolidColorFillProperties getSolidFill() { return props.getSolidFill(); } @Override public boolean isSetSolidFill() { return props.isSetSolidFill(); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) { props.setSolidFill(solidFill); } @Override public CTSolidColorFillProperties addNewSolidFill() { return props.addNewSolidFill(); } @Override public void unsetSolidFill() { props.unsetSolidFill(); } @Override public CTGradientFillProperties getGradFill() { return props.getGradFill(); } @Override public boolean isSetGradFill() { return props.isSetGradFill(); } @Override public void setGradFill(CTGradientFillProperties gradFill) { props.setGradFill(gradFill); } @Override public CTGradientFillProperties addNewGradFill() { return props.addNewGradFill(); } @Override public void unsetGradFill() { props.unsetGradFill(); } @Override public CTBlipFillProperties getBlipFill() { return props.getBlipFill(); } @Override public boolean isSetBlipFill() { return props.isSetBlipFill(); } @Override public void setBlipFill(CTBlipFillProperties blipFill) { props.setBlipFill(blipFill); } @Override public CTBlipFillProperties addNewBlipFill() { return props.addNewBlipFill(); } @Override public void unsetBlipFill() { props.unsetBlipFill(); } @Override public CTPatternFillProperties getPattFill() { return props.getPattFill(); } @Override public boolean isSetPattFill() { return props.isSetPattFill(); } @Override public void setPattFill(CTPatternFillProperties pattFill) { props.setPattFill(pattFill); } @Override public CTPatternFillProperties addNewPattFill() { return props.addNewPattFill(); } @Override public void unsetPattFill() { props.unsetPattFill(); } @Override public CTGroupFillProperties getGrpFill() { return props.getGrpFill(); } @Override public boolean isSetGrpFill() { return props.isSetGrpFill(); } @Override public void setGrpFill(CTGroupFillProperties grpFill) { props.setGrpFill(grpFill); } @Override public CTGroupFillProperties addNewGrpFill() { return props.addNewGrpFill(); } @Override public void unsetGrpFill() { props.unsetGrpFill(); } @Override public CTEffectList getEffectLst() { return props.getEffectLst(); } @Override public boolean isSetEffectLst() { return props.isSetEffectLst(); } @Override public void setEffectLst(CTEffectList effectLst) { props.setEffectLst(effectLst); } @Override public CTEffectList addNewEffectLst() { return props.addNewEffectLst(); } @Override public void unsetEffectLst() { props.unsetEffectLst(); } @Override public CTEffectContainer getEffectDag() { return props.getEffectDag(); } @Override public boolean isSetEffectDag() { return props.isSetEffectDag(); } @Override public void setEffectDag(CTEffectContainer effectDag) { props.setEffectDag(effectDag); } @Override public CTEffectContainer addNewEffectDag() { return props.addNewEffectDag(); } @Override public void unsetEffectDag() { props.unsetEffectDag(); } @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return false; } } private static class TableCellDelegate implements XSLFFillProperties { final CTTableCellProperties props; TableCellDelegate(CTTableCellProperties props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return props.getNoFill(); } @Override public boolean isSetNoFill() { return props.isSetNoFill(); } @Override public void setNoFill(CTNoFillProperties noFill) { props.setNoFill(noFill); } @Override public CTNoFillProperties addNewNoFill() { return props.addNewNoFill(); } @Override public void unsetNoFill() { props.unsetNoFill(); } @Override public CTSolidColorFillProperties getSolidFill() { return props.getSolidFill(); } @Override public boolean isSetSolidFill() { return props.isSetSolidFill(); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) { props.setSolidFill(solidFill); } @Override public CTSolidColorFillProperties addNewSolidFill() { return props.addNewSolidFill(); } @Override public void unsetSolidFill() { props.unsetSolidFill(); } @Override public CTGradientFillProperties getGradFill() { return props.getGradFill(); } @Override public boolean isSetGradFill() { return props.isSetGradFill(); } @Override public void setGradFill(CTGradientFillProperties gradFill) { props.setGradFill(gradFill); } @Override public CTGradientFillProperties addNewGradFill() { return props.addNewGradFill(); } @Override public void unsetGradFill() { props.unsetGradFill(); } @Override public CTBlipFillProperties getBlipFill() { return props.getBlipFill(); } @Override public boolean isSetBlipFill() { return props.isSetBlipFill(); } @Override public void setBlipFill(CTBlipFillProperties blipFill) { props.setBlipFill(blipFill); } @Override public CTBlipFillProperties addNewBlipFill() { return props.addNewBlipFill(); } @Override public void unsetBlipFill() { props.unsetBlipFill(); } @Override public CTPatternFillProperties getPattFill() { return props.getPattFill(); } @Override public boolean isSetPattFill() { return props.isSetPattFill(); } @Override public void setPattFill(CTPatternFillProperties pattFill) { props.setPattFill(pattFill); } @Override public CTPatternFillProperties addNewPattFill() { return props.addNewPattFill(); } @Override public void unsetPattFill() { props.unsetPattFill(); } @Override public CTGroupFillProperties getGrpFill() { return props.getGrpFill(); } @Override public boolean isSetGrpFill() { return props.isSetGrpFill(); } @Override public void setGrpFill(CTGroupFillProperties grpFill) { props.setGrpFill(grpFill); } @Override public CTGroupFillProperties addNewGrpFill() { return props.addNewGrpFill(); } @Override public void unsetGrpFill() { props.unsetGrpFill(); } @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return false; } } private static class StyleMatrixDelegate implements XSLFFillProperties { final CTStyleMatrixReference props; StyleMatrixDelegate(CTStyleMatrixReference props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return null; } @Override public boolean isSetNoFill() { return false; } @Override public void setNoFill(CTNoFillProperties noFill) {} @Override public CTNoFillProperties addNewNoFill() { return null; } @Override public void unsetNoFill() {} @Override public CTSolidColorFillProperties getSolidFill() { return null; } @Override public boolean isSetSolidFill() { return false; } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) {} @Override public CTSolidColorFillProperties addNewSolidFill() { return null; } @Override public void unsetSolidFill() {} @Override public CTGradientFillProperties getGradFill() { return null; } @Override public boolean isSetGradFill() { return false; } @Override public void setGradFill(CTGradientFillProperties gradFill) {} @Override public CTGradientFillProperties addNewGradFill() { return null; } @Override public void unsetGradFill() {} @Override public CTBlipFillProperties getBlipFill() { return null; } @Override public boolean isSetBlipFill() { return false; } @Override public void setBlipFill(CTBlipFillProperties blipFill) {} @Override public CTBlipFillProperties addNewBlipFill() { return null; } @Override public void unsetBlipFill() {} @Override public CTPatternFillProperties getPattFill() { return null; } @Override public boolean isSetPattFill() { return false; } @Override public void setPattFill(CTPatternFillProperties pattFill) {} @Override public CTPatternFillProperties addNewPattFill() { return null; } @Override public void unsetPattFill() {} @Override public CTGroupFillProperties getGrpFill() { return null; } @Override public boolean isSetGrpFill() { return false; } @Override public void setGrpFill(CTGroupFillProperties grpFill) {} @Override public CTGroupFillProperties addNewGrpFill() { return null; } @Override public void unsetGrpFill() {} @Override public boolean isSetMatrixStyle() { return true; } @Override public CTStyleMatrixReference getMatrixStyle() { return props; } @Override public boolean isLineStyle() { XmlCursor cur = props.newCursor(); String name = cur.getName().getLocalPart(); cur.dispose(); return "lnRef".equals(name); } } private static class FillDelegate implements XSLFFillProperties { final CTFillProperties props; FillDelegate(CTFillProperties props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return props.getNoFill(); } @Override public boolean isSetNoFill() { return props.isSetNoFill(); } @Override public void setNoFill(CTNoFillProperties noFill) { props.setNoFill(noFill); } @Override public CTNoFillProperties addNewNoFill() { return props.addNewNoFill(); } @Override public void unsetNoFill() { props.unsetNoFill(); } @Override public CTSolidColorFillProperties getSolidFill() { return props.getSolidFill(); } @Override public boolean isSetSolidFill() { return props.isSetSolidFill(); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) { props.setSolidFill(solidFill); } @Override public CTSolidColorFillProperties addNewSolidFill() { return props.addNewSolidFill(); } @Override public void unsetSolidFill() { props.unsetSolidFill(); } @Override public CTGradientFillProperties getGradFill() { return props.getGradFill(); } @Override public boolean isSetGradFill() { return props.isSetGradFill(); } @Override public void setGradFill(CTGradientFillProperties gradFill) { props.setGradFill(gradFill); } @Override public CTGradientFillProperties addNewGradFill() { return props.addNewGradFill(); } @Override public void unsetGradFill() { props.unsetGradFill(); } @Override public CTBlipFillProperties getBlipFill() { return props.getBlipFill(); } @Override public boolean isSetBlipFill() { return props.isSetBlipFill(); } @Override public void setBlipFill(CTBlipFillProperties blipFill) { props.setBlipFill(blipFill); } @Override public CTBlipFillProperties addNewBlipFill() { return props.addNewBlipFill(); } @Override public void unsetBlipFill() { props.unsetBlipFill(); } @Override public CTPatternFillProperties getPattFill() { return props.getPattFill(); } @Override public boolean isSetPattFill() { return props.isSetPattFill(); } @Override public void setPattFill(CTPatternFillProperties pattFill) { props.setPattFill(pattFill); } @Override public CTPatternFillProperties addNewPattFill() { return props.addNewPattFill(); } @Override public void unsetPattFill() { props.unsetPattFill(); } @Override public CTGroupFillProperties getGrpFill() { return props.getGrpFill(); } @Override public boolean isSetGrpFill() { return props.isSetGrpFill(); } @Override public void setGrpFill(CTGroupFillProperties grpFill) { props.setGrpFill(grpFill); } @Override public CTGroupFillProperties addNewGrpFill() { return props.addNewGrpFill(); } @Override public void unsetGrpFill() { props.unsetGrpFill(); } @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return false; } } private static class FillPartDelegate implements XSLFFillProperties { final XmlObject props; FillPartDelegate(XmlObject props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return isSetNoFill() ? (CTNoFillProperties)props : null; } @Override public boolean isSetNoFill() { return (props instanceof CTNoFillProperties); } @Override public void setNoFill(CTNoFillProperties noFill) {} @Override public CTNoFillProperties addNewNoFill() { return null; } @Override public void unsetNoFill() {} @Override public CTSolidColorFillProperties getSolidFill() { return isSetSolidFill() ? (CTSolidColorFillProperties)props : null; } @Override public boolean isSetSolidFill() { return (props instanceof CTSolidColorFillProperties); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) {} @Override public CTSolidColorFillProperties addNewSolidFill() { return null; } @Override public void unsetSolidFill() {} @Override public CTGradientFillProperties getGradFill() { return isSetGradFill() ? (CTGradientFillProperties)props : null; } @Override public boolean isSetGradFill() { return (props instanceof CTGradientFillProperties); } @Override public void setGradFill(CTGradientFillProperties gradFill) {} @Override public CTGradientFillProperties addNewGradFill() { return null; } @Override public void unsetGradFill() {} @Override public CTBlipFillProperties getBlipFill() { return isSetBlipFill() ? (CTBlipFillProperties)props : null; } @Override public boolean isSetBlipFill() { return (props instanceof CTBlipFillProperties); } @Override public void setBlipFill(CTBlipFillProperties blipFill) {} @Override public CTBlipFillProperties addNewBlipFill() { return null; } @Override public void unsetBlipFill() {} @Override public CTPatternFillProperties getPattFill() { return isSetPattFill() ? (CTPatternFillProperties)props : null; } @Override public boolean isSetPattFill() { return (props instanceof CTPatternFillProperties); } @Override public void setPattFill(CTPatternFillProperties pattFill) {} @Override public CTPatternFillProperties addNewPattFill() { return null; } @Override public void unsetPattFill() {} @Override public CTGroupFillProperties getGrpFill() { return isSetGrpFill() ? (CTGroupFillProperties)props : null; } @Override public boolean isSetGrpFill() { return (props instanceof CTGroupFillProperties); } @Override public void setGrpFill(CTGroupFillProperties grpFill) {} @Override public CTGroupFillProperties addNewGrpFill() { return null; } @Override public void unsetGrpFill() {} @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return false; } } private static class LineStyleDelegate implements XSLFFillProperties { final CTLineProperties props; LineStyleDelegate(CTLineProperties props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return props.getNoFill(); } @Override public boolean isSetNoFill() { return props.isSetNoFill(); } @Override public void setNoFill(CTNoFillProperties noFill) { props.setNoFill(noFill); } @Override public CTNoFillProperties addNewNoFill() { return props.addNewNoFill(); } @Override public void unsetNoFill() { props.unsetNoFill(); } @Override public CTSolidColorFillProperties getSolidFill() { return props.getSolidFill(); } @Override public boolean isSetSolidFill() { return props.isSetSolidFill(); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) { props.setSolidFill(solidFill); } @Override public CTSolidColorFillProperties addNewSolidFill() { return props.addNewSolidFill(); } @Override public void unsetSolidFill() { props.unsetSolidFill(); } @Override public CTGradientFillProperties getGradFill() { return props.getGradFill(); } @Override public boolean isSetGradFill() { return props.isSetGradFill(); } @Override public void setGradFill(CTGradientFillProperties gradFill) { props.setGradFill(gradFill); } @Override public CTGradientFillProperties addNewGradFill() { return props.addNewGradFill(); } @Override public void unsetGradFill() { props.unsetGradFill(); } @Override public CTBlipFillProperties getBlipFill() { return null; } @Override public boolean isSetBlipFill() { return false; } @Override public void setBlipFill(CTBlipFillProperties blipFill) {} @Override public CTBlipFillProperties addNewBlipFill() { return null; } @Override public void unsetBlipFill() {} @Override public CTPatternFillProperties getPattFill() { return props.getPattFill(); } @Override public boolean isSetPattFill() { return props.isSetPattFill(); } @Override public void setPattFill(CTPatternFillProperties pattFill) { props.setPattFill(pattFill); } @Override public CTPatternFillProperties addNewPattFill() { return props.addNewPattFill(); } @Override public void unsetPattFill() { props.unsetPattFill(); } @Override public CTGroupFillProperties getGrpFill() { return null; } @Override public boolean isSetGrpFill() { return false; } @Override public void setGrpFill(CTGroupFillProperties grpFill) {} @Override public CTGroupFillProperties addNewGrpFill() { return null; } @Override public void unsetGrpFill() {} @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return true; } } private static class TextCharDelegate implements XSLFFillProperties { final CTTextCharacterProperties props; TextCharDelegate(CTTextCharacterProperties props) { this.props = props; } @Override public CTNoFillProperties getNoFill() { return props.getNoFill(); } @Override public boolean isSetNoFill() { return props.isSetNoFill(); } @Override public void setNoFill(CTNoFillProperties noFill) { props.setNoFill(noFill); } @Override public CTNoFillProperties addNewNoFill() { return props.addNewNoFill(); } @Override public void unsetNoFill() { props.unsetNoFill(); } @Override public CTSolidColorFillProperties getSolidFill() { return props.getSolidFill(); } @Override public boolean isSetSolidFill() { return props.isSetSolidFill(); } @Override public void setSolidFill(CTSolidColorFillProperties solidFill) { props.setSolidFill(solidFill); } @Override public CTSolidColorFillProperties addNewSolidFill() { return props.addNewSolidFill(); } @Override public void unsetSolidFill() { props.unsetSolidFill(); } @Override public CTGradientFillProperties getGradFill() { return props.getGradFill(); } @Override public boolean isSetGradFill() { return props.isSetGradFill(); } @Override public void setGradFill(CTGradientFillProperties gradFill) { props.setGradFill(gradFill); } @Override public CTGradientFillProperties addNewGradFill() { return props.addNewGradFill(); } @Override public void unsetGradFill() { props.unsetGradFill(); } @Override public CTBlipFillProperties getBlipFill() { return props.getBlipFill(); } @Override public boolean isSetBlipFill() { return props.isSetBlipFill(); } @Override public void setBlipFill(CTBlipFillProperties blipFill) { props.setBlipFill(blipFill); } @Override public CTBlipFillProperties addNewBlipFill() { return props.addNewBlipFill(); } @Override public void unsetBlipFill() { props.unsetBlipFill(); } @Override public CTPatternFillProperties getPattFill() { return props.getPattFill(); } @Override public boolean isSetPattFill() { return props.isSetPattFill(); } @Override public void setPattFill(CTPatternFillProperties pattFill) { props.setPattFill(pattFill); } @Override public CTPatternFillProperties addNewPattFill() { return props.addNewPattFill(); } @Override public void unsetPattFill() { props.unsetPattFill(); } @Override public CTGroupFillProperties getGrpFill() { return props.getGrpFill(); } @Override public boolean isSetGrpFill() { return props.isSetGrpFill(); } @Override public void setGrpFill(CTGroupFillProperties grpFill) { props.setGrpFill(grpFill); } @Override public CTGroupFillProperties addNewGrpFill() { return props.addNewGrpFill(); } @Override public void unsetGrpFill() { props.unsetGrpFill(); } @Override public boolean isSetMatrixStyle() { return false; } @Override public CTStyleMatrixReference getMatrixStyle() { return null; } @Override public boolean isLineStyle() { return false; } } @SuppressWarnings("unchecked") private static <T> T getDelegate(Class<T> clazz, XmlObject props) { Object obj = null; if (props == null) { return null; } else if (props instanceof CTShapeProperties) { obj = new ShapeDelegate((CTShapeProperties)props); } else if (props instanceof CTBackgroundProperties) { obj = new BackgroundDelegate((CTBackgroundProperties)props); } else if (props instanceof CTStyleMatrixReference) { obj = new StyleMatrixDelegate((CTStyleMatrixReference)props); } else if (props instanceof CTTableCellProperties) { obj = new TableCellDelegate((CTTableCellProperties)props); } else if (props instanceof CTNoFillProperties || props instanceof CTSolidColorFillProperties || props instanceof CTGradientFillProperties || props instanceof CTBlipFillProperties || props instanceof CTPatternFillProperties || props instanceof CTGroupFillProperties) { obj = new FillPartDelegate(props); } else if (props instanceof CTFillProperties) { obj = new FillDelegate((CTFillProperties)props); } else if (props instanceof CTLineProperties) { obj = new LineStyleDelegate((CTLineProperties)props); } else if (props instanceof CTTextCharacterProperties) { obj = new TextCharDelegate((CTTextCharacterProperties)props); } else { LOG.log(POILogger.ERROR, props.getClass() +" is an unknown properties type"); return null; } if (clazz.isInstance(obj)) { return (T)obj; } LOG.log(POILogger.WARN, obj.getClass() +" doesn't implement "+ clazz); return null; } }