All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.fop.render.rtf.rtflib.rtfdoc.RtfListTable Maven / Gradle / Ivy

There is a newer version: 1.2.2.1-jre17
Show newest version
/*
 * 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.
 */

/* $Id: RtfListTable.java 1805173 2017-08-16 10:50:04Z ssteiner $ */

package org.apache.fop.render.rtf.rtflib.rtfdoc;

/*
 * This file is part of the RTF library of the FOP project, which was originally
 * created by Bertrand Delacretaz [email protected] and by other
 * contributors to the jfor project (www.jfor.org), who agreed to donate jfor to
 * the FOP project.
 */

import java.io.IOException;
import java.io.Writer;
import java.util.LinkedList;

/**
 * 

RtfListTable: used to make the list table in the header section of the RtfFile. * This is the method that Word uses to make lists in RTF and the way most RTF readers, * esp. Adobe FrameMaker read lists from RTF.

* *

This work was authored by Christopher Scott ([email protected]).

*/ public class RtfListTable extends RtfContainer { private LinkedList lists; private LinkedList styles; //static data members /** constant for a list table */ public static final String LIST_TABLE = "listtable"; /** constant for a list */ public static final String LIST = "list"; /** constant for a list template id */ public static final String LIST_TEMPLATE_ID = "listtemplateid"; /** constant for a list level */ public static final String LIST_LEVEL = "listlevel"; /** constant for a list number type */ public static final String LIST_NUMBER_TYPE = "levelnfc"; /** constant for a list justification */ public static final String LIST_JUSTIFICATION = "leveljc"; /** constant for list following character */ public static final String LIST_FOLLOWING_CHAR = "levelfollow"; /** constant for list start at */ public static final String LIST_START_AT = "levelstartat"; /** constant for list space */ public static final String LIST_SPACE = "levelspace"; /** constant for list indentation */ public static final String LIST_INDENT = "levelindent"; /** constant for list text format */ public static final String LIST_TEXT_FORM = "leveltext"; /** constant for list number positioning */ public static final String LIST_NUM_POSITION = "levelnumbers"; /** constant for list name */ public static final String LIST_NAME = "listname ;"; /** constant for list ID */ public static final String LIST_ID = "listid"; /** constant for list font type */ public static final String LIST_FONT_TYPE = "f"; /** constant for list override table */ public static final String LIST_OVR_TABLE = "listoverridetable"; /** constant for list override */ public static final String LIST_OVR = "listoverride"; /** constant for list override count */ public static final String LIST_OVR_COUNT = "listoverridecount"; /** constant for list number */ public static final String LIST_NUMBER = "ls"; /** String array of list table attributes */ public static final String [] LIST_TABLE_ATTR = { LIST_TABLE, LIST, LIST_TEMPLATE_ID, LIST_NUMBER_TYPE, LIST_JUSTIFICATION, LIST_FOLLOWING_CHAR, LIST_START_AT, LIST_SPACE, LIST_INDENT, LIST_TEXT_FORM, LIST_NUM_POSITION, LIST_ID, LIST_OVR_TABLE, LIST_OVR, LIST_OVR_COUNT, LIST_NUMBER, LIST_LEVEL }; /** * RtfListTable Constructor: sets the number of the list, and allocates * for the RtfAttributes * @param parent RtfContainer holding this RtfListTable * @param w Writer * @param num number of the list in the document * @param attrs attributes of new RtfListTable * @throws IOException for I/O problems */ public RtfListTable(RtfContainer parent, Writer w, Integer num, RtfAttributes attrs) throws IOException { super(parent, w, attrs); styles = new LinkedList(); } /** * Add List * @param list RtfList to add * @return number of lists in the table after adding */ public int addList(RtfList list) { if (lists == null) { lists = new LinkedList(); } lists.add(list); return lists.size(); } /** * Write the content * @throws IOException for I/O problems */ public void writeRtfContent() throws IOException { newLine(); if (lists != null) { //write '\listtable' writeGroupMark(true); writeStarControlWordNS(LIST_TABLE); newLine(); for (Object list1 : lists) { final RtfList list = (RtfList) list1; writeListTableEntry(list); newLine(); } writeGroupMark(false); newLine(); //write '\listoveridetable' writeGroupMark(true); writeStarControlWordNS(LIST_OVR_TABLE); int z = 1; newLine(); for (Object style1 : styles) { final RtfListStyle style = (RtfListStyle) style1; writeGroupMark(true); writeStarControlWordNS(LIST_OVR); writeGroupMark(true); writeOneAttributeNS(LIST_ID, style.getRtfList().getListId().toString()); writeOneAttributeNS(LIST_OVR_COUNT, 0); writeOneAttributeNS(LIST_NUMBER, z++); writeGroupMark(false); writeGroupMark(false); newLine(); } writeGroupMark(false); newLine(); } } /** * Since this has no text content we have to overwrite isEmpty to print * the table * @return false (always) */ public boolean isEmpty() { return false; } private void writeListTableEntry(RtfList list) throws IOException { //write list-specific attributes writeGroupMark(true); writeControlWordNS(LIST); writeOneAttributeNS(LIST_TEMPLATE_ID, list.getListTemplateId().toString()); writeOneAttributeNS(LIST, attrib.getValue(LIST)); // write level-specific attributes writeGroupMark(true); writeControlWordNS(LIST_LEVEL); writeOneAttributeNS(LIST_JUSTIFICATION, attrib.getValue(LIST_JUSTIFICATION)); writeOneAttributeNS(LIST_FOLLOWING_CHAR, attrib.getValue(LIST_FOLLOWING_CHAR)); writeOneAttributeNS(LIST_SPACE, 0); writeOneAttributeNS(LIST_INDENT, attrib.getValue(LIST_INDENT)); RtfListItem item = (RtfListItem)list.getChildren().get(0); if (item != null) { item.getRtfListStyle().writeLevelGroup(this); } writeGroupMark(false); writeGroupMark(true); writeControlWordNS(LIST_NAME); writeGroupMark(false); writeOneAttributeNS(LIST_ID, list.getListId().toString()); writeGroupMark(false); } /** * Add list style * @param ls ListStyle to set * @return number of styles after adding */ public int addRtfListStyle(RtfListStyle ls) { styles.add(ls); return styles.size(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy