diff --git a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java index da505430cd..28d4d9ad80 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java @@ -392,7 +392,7 @@ public class HWPFDocument return _dataStream; } - public int registerList(List list) + public int registerList(HWPFList list) { if (_lt == null) { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/QuickTest.java b/src/scratchpad/src/org/apache/poi/hwpf/QuickTest.java new file mode 100644 index 0000000000..5a57f6b0f0 --- /dev/null +++ b/src/scratchpad/src/org/apache/poi/hwpf/QuickTest.java @@ -0,0 +1,72 @@ +package org.apache.poi.hwpf; + +import java.io.*; + +import org.apache.poi.hwpf.usermodel.*; + +public class QuickTest +{ + public QuickTest() + { + } + + public static void main(String[] args) + { + try + { + HWPFDocument doc = new HWPFDocument (new FileInputStream (args[0])); + Range r = doc.getRange(); + + System.out.println("Example you supplied:"); + System.out.println("---------------------"); + for (int x = 0; x < r.numSections(); x++) + { + Section s = r.getSection(x); + for (int y = 0; y < s.numParagraphs(); y++) + { + Paragraph p = s.getParagraph(y); + for (int z = 0; z < p.numCharacterRuns(); z++) + { + //character run + CharacterRun run = p.getCharacterRun(z); + //character run text + String text = run.text(); + // show us the text + System.out.print(text); + } + // use a new line at the paragraph break + System.out.println(); + } + } + + +// System.out.println("\n\nExample using new method:"); +// System.out.println("-------------------------"); +// for (int x = 0; x < r.numSections(); x++) +// { +// Section s = r.getSection(x); +// for (int y = 0; y < s.numParagraphs(); y++) +// { +// Paragraph p = s.getParagraph(y); +// for (int z = 0; z < p.numCharacterRuns(); z++) +// { +// //character run +// CharacterRun run = p.getCharacterRun(z); +// //** get character run/paragraph common text ** +// String text = run.commonText(p); +// // show us the text +// System.out.print(text); +// } +// // use a new line at the paragraph break +// System.out.println(); +// } +// } + + } + catch (Throwable t) + { + t.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java index 2e1cf9e330..f6efb296c3 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java @@ -65,7 +65,7 @@ import org.apache.poi.hwpf.sprm.CharacterSprmUncompressor; * @author Ryan Ackley */ -public class CHPX extends CachedPropertyNode +public class CHPX extends PropertyNode { public CHPX(int fcStart, int fcEnd, byte[] grpprl) @@ -84,17 +84,15 @@ public class CHPX extends CachedPropertyNode return ((SprmBuffer)_buf).toByteArray(); } - public CharacterProperties getCharacterProperties(StyleSheet ss, short istd) + public SprmBuffer getSprmBuf() { - CharacterProperties props = (CharacterProperties)super.getCacheContents(); - if (props == null) - { - CharacterProperties baseStyle = ss.getCharacterStyle(istd); - props = CharacterSprmUncompressor.uncompressCHP(baseStyle, getGrpprl(), 0); - super.fillCache(props); - } - return props; + return (SprmBuffer)_buf; } - + public CharacterProperties getCharacterProperties(StyleSheet ss, short istd) + { + CharacterProperties baseStyle = ss.getCharacterStyle(istd); + CharacterProperties props = CharacterSprmUncompressor.uncompressCHP(baseStyle, getGrpprl(), 0); + return props; + } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java b/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java index 473ffd3671..75b516f3cd 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java @@ -69,7 +69,7 @@ import org.apache.poi.hwpf.sprm.SprmOperation; * @author Ryan Ackley */ -public class PAPX extends CachedPropertyNode +public class PAPX extends PropertyNode { private ParagraphHeight _phe; @@ -153,19 +153,17 @@ public class PAPX extends CachedPropertyNode } } + public SprmBuffer getSprmBuf() + { + return (SprmBuffer)_buf; + } + public ParagraphProperties getParagraphProperties(StyleSheet ss) { - - ParagraphProperties props = (ParagraphProperties)super.getCacheContents(); - if (props == null) - { - short istd = getIstd(); - ParagraphProperties baseStyle = ss.getParagraphStyle(istd); - props = ParagraphSprmUncompressor.uncompressPAP(baseStyle, getGrpprl(), 2); - super.fillCache(props); - } + short istd = getIstd(); + ParagraphProperties baseStyle = ss.getParagraphStyle(istd); + ParagraphProperties props = ParagraphSprmUncompressor.uncompressPAP(baseStyle, getGrpprl(), 2); return props; - } public boolean equals(Object o) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java index cc1d4cae11..c1eafe0b89 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java @@ -1,56 +1,20 @@ /* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Apache POI" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Apache POI", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ + Copyright 2002-2004 Apache Software Foundation + + Licensed 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.hwpf.usermodel; @@ -62,6 +26,11 @@ import org.apache.poi.hwpf.model.StyleSheet; import org.apache.poi.hwpf.sprm.SprmBuffer; import org.apache.poi.hwpf.sprm.CharacterSprmCompressor; +/** + * This class represents a run of text that share common properties. + * + * @author Ryan Ackley + */ public class CharacterRun extends Range implements Cloneable @@ -120,6 +89,13 @@ public class CharacterRun SprmBuffer _chpx; CharacterProperties _props; + /** + * + * @param chpx The chpx this object is based on. + * @param ss The stylesheet for the document this run belongs to. + * @param istd The style index if this run's base style. + * @param parent The parent range of this character run (usually a paragraph). + */ CharacterRun(CHPX chpx, StyleSheet ss, short istd, Range parent) { super(Math.max(parent._start, chpx.getStart()), Math.min(parent._end, chpx.getEnd()), parent); @@ -127,6 +103,11 @@ public class CharacterRun _chpx = chpx.getSprmBuf(); } + /** + * Here for runtime type determination using a switch statement convenient. + * + * @return TYPE_CHARACTER + */ public int type() { return TYPE_CHARACTER; @@ -469,6 +450,12 @@ public class CharacterRun _props.setIco24(colour24); } + /** + * Used to create a deep copy of this object. + * + * @return A deep copy. + * @throws CloneNotSupportedException never + */ public Object clone() throws CloneNotSupportedException { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java index aae16ddb60..44436952e2 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java @@ -1,62 +1,31 @@ /* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Apache POI" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Apache POI", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ + Copyright 2002-2004 Apache Software Foundation + + Licensed 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.hwpf.usermodel; import org.apache.poi.util.BitField; import org.apache.poi.util.LittleEndian; +/** + * This class is used to represent a date and time in a Word document. + * + * @author Ryan Ackley + */ public class DateAndTime implements Cloneable { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java index 59d840fad7..513b305149 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java @@ -1,8 +1,32 @@ +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + Licensed 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.hwpf.usermodel; import org.apache.poi.util.BitField; import org.apache.poi.util.LittleEndian; +/** + * This data structure is used by a paragraph to determine how it should drop + * its first letter. I think its the visual effect that will show a giant first + * letter to a paragraph. I've seen this used in the first paragraph of a + * book + * + * @author Ryan Ackley + */ public class DropCapSpecifier { private short _info; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/List.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java similarity index 58% rename from src/scratchpad/src/org/apache/poi/hwpf/usermodel/List.java rename to src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java index 709f46695e..66dc3bd300 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/List.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java @@ -1,3 +1,19 @@ +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + Licensed 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.hwpf.usermodel; import org.apache.poi.hwpf.HWPFDocument; @@ -10,15 +26,26 @@ import org.apache.poi.hwpf.model.StyleSheet; import org.apache.poi.hwpf.sprm.CharacterSprmCompressor; import org.apache.poi.hwpf.sprm.ParagraphSprmCompressor; - -public class List +/** + * This class is used to create a list in a Word document. It is used in + * conjunction with {@link + * org.apache.poi.hwpf.HWPFDocument#registerList(HWPFList) registerList} in + * {@link org.apache.poi.hwpf.HWPFDocument HWPFDocument}. + * + * In Word, lists are not ranged entities. Lists only act as properties for + * list entries. Once you register a list, you can add list entries to a + * document that use the list. + * + * @author Ryan Ackley + */ +public class HWPFList { private ListData _listData; private ListFormatOverride _override; private boolean _registered; private StyleSheet _styleSheet; - public List(boolean numbered, StyleSheet styleSheet) + public HWPFList(boolean numbered, StyleSheet styleSheet) { _listData = new ListData((int)(Math.random() * (double)System.currentTimeMillis()), numbered); _override = new ListFormatOverride(_listData.getLsid()); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java index 35e410c977..e229fcad8a 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java @@ -1,61 +1,28 @@ /* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Apache POI" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Apache POI", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ + Copyright 2002-2004 Apache Software Foundation + + Licensed 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.hwpf.usermodel; import org.apache.poi.util.LittleEndian; +/** + * This class is used to determine line spacing for a paragraph. + * + * @author Ryan Ackley + */ public class LineSpacingDescriptor implements Cloneable { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java index b0dfed4c94..f633fc424a 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java @@ -1,56 +1,20 @@ /* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Apache POI" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Apache POI", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ + Copyright 2002-2004 Apache Software Foundation + + Licensed 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.hwpf.usermodel; @@ -202,7 +166,7 @@ public class Range * * @param start Starting character offset of the range. * @param end Ending character offset of the range. - * @param doc The parent this range belongs to. + * @param parent The parent this range belongs to. */ protected Range(int start, int end, Range parent) { @@ -516,6 +480,14 @@ public class Range return getParagraph(numParagraphs() - 1); } + /** + * Inserts a simple table into the beginning of this range. The number of + * columns is determined by the TableProperties passed into this function. + * + * @param props The table properties for the table. + * @param rows The number of rows. + * @return The empty Table that is now part of the document. + */ public Table insertBefore(TableProperties props, int rows) { ParagraphProperties parProps = new ParagraphProperties(); @@ -538,8 +510,17 @@ public class Range return new Table(_start, _start + (rows * (columns + 1)), this, 0); } + /** + * Inserts a list into the beginning of this range. + * + * @param props The properties of the list entry. All list entries are + * paragraphs. + * @param listID The id of the list that contains the properties. + * @param level The indentation level of the list. + * @param styleIndex The base style's index in the stylesheet. + * @return The empty ListEntry that is now part of the document. + */ public ListEntry insertBefore(ParagraphProperties props, int listID, int level, int styleIndex) - //throws UnsupportedEncodingException { ListTables lt = _doc.getListTables(); if (lt.getLevel(listID, level) == null) @@ -554,6 +535,12 @@ public class Range return (ListEntry)insertBefore(props, styleIndex); } + /** + * Gets the character run at index. The index is relative to this range. + * + * @param index The index of the character run to get. + * @return The character run at the specified index in this range. + */ public CharacterRun getCharacterRun(int index) { initCharacterRuns(); @@ -569,6 +556,12 @@ public class Range return chp; } + /** + * Gets the section at index. The index is relative to this range. + * + * @param index The index of the section to get. + * @return The section at the specified index in this range. + */ public Section getSection(int index) { initSections(); @@ -577,6 +570,13 @@ public class Range return sep; } + /** + * Gets the paragraph at index. The index is relative to this range. + * + * @param index The index of the paragraph to get. + * @return The paragraph at the specified index in this range. + */ + public Paragraph getParagraph(int index) { initParagraphs(); @@ -596,11 +596,24 @@ public class Range return pap; } + /** + * This method is used to determine the type. Handy for switch statements + * compared to the instanceof operator. + * + * @return A TYPE constant. + */ public int type() { return TYPE_UNDEFINED; } + /** + * Gets the table that starts with paragraph. In a Word file, a table consists + * of a group of paragraphs with certain flags set. + * + * @param paragraph The paragraph that is the first paragraph in the table. + * @return The table that starts with paragraph + */ public Table getTable(Paragraph paragraph) { if (!paragraph.isInTable()) @@ -640,6 +653,9 @@ public class Range return new Table(r._parStart, tableEnd, r._doc.getRange(), 1); } + /** + * loads all of the list indexes. + */ private void initAll() { initText(); @@ -648,7 +664,9 @@ public class Range initSections(); } - + /** + * inits the paragraph list indexes. + */ private void initParagraphs() { if (!_parRangeFound) @@ -660,6 +678,9 @@ public class Range } } + /** + * inits the character run list indexes. + */ private void initCharacterRuns() { if (!_charRangeFound) @@ -671,6 +692,9 @@ public class Range } } + /** + * inits the text piece list indexes. + */ private void initText() { if (!_textRangeFound) @@ -682,6 +706,9 @@ public class Range } } + /** + * inits the section list indexes. + */ private void initSections() { if (!_sectionRangeFound) @@ -693,6 +720,16 @@ public class Range } } + /** + * Used to find the list indexes of a particular property. + * + * @param rpl A list of property nodes. + * @param min A hint on where to start looking. + * @param start The starting character offset. + * @param end The ending character offset. + * @return An int array of length 2. The first int is the start index and the + * second int is the end index. + */ private int[] findRange(List rpl, int min, int start, int end) { int x = min; @@ -713,6 +750,9 @@ public class Range return new int[]{x, y + 1}; } + /** + * resets the list indexes. + */ private void reset() { _textRangeFound = false; @@ -721,6 +761,10 @@ public class Range _sectionRangeFound = false; } + /** + * adjust this range after an insert happens. + * @param length the length to adjust for + */ private void adjustForInsert(int length) { _end += length; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/HWPFTestCase.java b/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestCase.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/hwpf/HWPFTestCase.java rename to src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestCase.java