001package com.hfg.xml.msofficexml.docx.part;
002
003
004import com.hfg.xml.XMLTag;
005import com.hfg.xml.msofficexml.OfficeOpenXmlDocument;
006import com.hfg.xml.msofficexml.OfficeXML;
007import com.hfg.xml.msofficexml.docx.wordprocessingml.WmlXML;
008import com.hfg.xml.msofficexml.part.OfficeXMLPart;
009
010//------------------------------------------------------------------------------
011/**
012 Represents an Office Open XML VBA data part.
013
014 @author J. Alex Taylor, hairyfatguy.com
015 */
016//------------------------------------------------------------------------------
017// com.hfg XML/HTML Coding Library
018//
019// This library is free software; you can redistribute it and/or
020// modify it under the terms of the GNU Lesser General Public
021// License as published by the Free Software Foundation; either
022// version 2.1 of the License, or (at your option) any later version.
023//
024// This library is distributed in the hope that it will be useful,
025// but WITHOUT ANY WARRANTY; without even the implied warranty of
026// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
027// Lesser General Public License for more details.
028//
029// You should have received a copy of the GNU Lesser General Public
030// License along with this library; if not, write to the Free Software
031// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
032//
033// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
034// jataylor@hairyfatguy.com
035//------------------------------------------------------------------------------
036/*
037Ex:
038
039<wne:vbaSuppData xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"
040                 xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex"
041                 xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex"
042                 xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex"
043                 xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex"
044                 xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex"
045                 xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex"
046                 xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex"
047                 xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex"
048                 xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex"
049                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
050                 xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink"
051                 xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d"
052                 xmlns:o="urn:schemas-microsoft-com:office:office"
053                 xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
054                 xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
055                 xmlns:v="urn:schemas-microsoft-com:vml"
056                 xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"
057                 xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
058                 xmlns:w10="urn:schemas-microsoft-com:office:word"
059                 xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
060                 xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"
061                 xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml"
062                 xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex"
063                 xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid"
064                 xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml"
065                 xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex"
066                 xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"
067                 xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk"
068                 xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"
069                 xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex wp14">
070<wne:mcds>
071   <wne:mcd wne:macroName="PROJECT.COM_HFG.AUTOOPEN" wne:name="Project.com_hfg.AutoOpen" wne:bEncrypt="00" wne:cmg="56"/>
072</wne:mcds>
073</wne:vbaSuppData>
074 */
075
076public class VbaDataPart extends OfficeXMLPart
077{
078   private XMLTag mMcdsTag;
079
080   //---------------------------------------------------------------------------
081   public VbaDataPart(OfficeOpenXmlDocument inOfficeDoc)
082   {
083      super(inOfficeDoc);
084
085      setFile(WmlXML.VBA_DATA_FILE);
086
087      XMLTag rootTag = new XMLTag(WmlXML.VBA_SUPPORT_DATA)
088            .setAttribute(OfficeXML.IGNORABLE_ATT, "w14 w15 w16se w16cid w16 w16cex wp14")
089            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSING_CANVAS_NAMESPACE)
090            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_NAMESPACE)
091            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_1_NAMESPACE)
092            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_2_NAMESPACE)
093            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_3_NAMESPACE)
094            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_4_NAMESPACE)
095            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_5_NAMESPACE)
096            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_6_NAMESPACE)
097            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_7_NAMESPACE)
098            .addXMLNamespaceDeclaration(OfficeXML.CHART_EXTENSIONS_8_NAMESPACE)
099            .addXMLNamespaceDeclaration(OfficeXML.MARKUP_CAPABILITY_NAMESPACE)
100            .addXMLNamespaceDeclaration(OfficeXML.DRAWING_INK_NAMESPACE)
101            .addXMLNamespaceDeclaration(OfficeXML.DRAWING_MODEL_3D_NAMESPACE)
102            .addXMLNamespaceDeclaration(OfficeXML.OFFICE_NAMESPACE)
103            .addXMLNamespaceDeclaration(OfficeXML.RELATIONSHIPS_NAMESPACE)
104            .addXMLNamespaceDeclaration(OfficeXML.MATH_NAMESPACE)
105            .addXMLNamespaceDeclaration(OfficeXML.VML_NAMESPACE)
106            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSING_DRAWING_NAMESPACE)
107            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSING_DRAWING_14_NAMESPACE)
108            .addXMLNamespaceDeclaration(WmlXML.WORDML_10_NAMESPACE)
109            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSINGML_NAMESPACE)
110            .addXMLNamespaceDeclaration(WmlXML.WORDML_14_NAMESPACE)
111            .addXMLNamespaceDeclaration(WmlXML.WORDML_15_NAMESPACE)
112            .addXMLNamespaceDeclaration(WmlXML.WORDML_16_NAMESPACE)
113            .addXMLNamespaceDeclaration(WmlXML.WORDML_16_COMMENTS_EXTENSIBLE_NAMESPACE)
114            .addXMLNamespaceDeclaration(WmlXML.WORDML_16_COMMENTS_IDS_NAMESPACE)
115            .addXMLNamespaceDeclaration(WmlXML.WORDML_16_SYMEX_NAMESPACE)
116            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSING_GROUP_NAMESPACE)
117            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSING_INK_NAMESPACE)
118            .addXMLNamespaceDeclaration(WmlXML.WORDPROCESSING_SHAPE_NAMESPACE)
119            .addXMLNamespaceDeclaration(WmlXML.WORDML_NAMESPACE);
120
121      setRootNode(rootTag);
122
123      mMcdsTag = rootTag.addSubtag(WmlXML.MACRO_COLLECTION);
124   }
125
126   //---------------------------------------------------------------------------
127   public void addMacro(String inMacroName)
128   {
129      XMLTag macroTag = new XMLTag(WmlXML.MACRO)
130            .setAttribute(WmlXML.MACRO_NAME_ATT, inMacroName.toUpperCase())
131            .setAttribute(WmlXML.NAME_ATT, inMacroName)
132            .setAttribute(WmlXML.HEX_BINARY_ENCRYPT_ATT, "00")
133            .setAttribute(WmlXML.CMG_ATT, "56");
134
135      mMcdsTag.addSubtag(macroTag);
136   }
137
138}