diff options
Diffstat (limited to 'wizards/com/sun/star/wizards/text/TextSectionHandler.java')
-rw-r--r-- | wizards/com/sun/star/wizards/text/TextSectionHandler.java | 271 |
1 files changed, 271 insertions, 0 deletions
diff --git a/wizards/com/sun/star/wizards/text/TextSectionHandler.java b/wizards/com/sun/star/wizards/text/TextSectionHandler.java new file mode 100644 index 000000000000..42fd75879c3c --- /dev/null +++ b/wizards/com/sun/star/wizards/text/TextSectionHandler.java @@ -0,0 +1,271 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +package com.sun.star.wizards.text; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +import com.sun.star.container.XNamed; +import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.text.ControlCharacter; +import com.sun.star.text.SectionFileLink; +import com.sun.star.text.XText; +import com.sun.star.text.XTextContent; +import com.sun.star.text.XTextCursor; +import com.sun.star.text.XTextDocument; +import com.sun.star.text.XTextSectionsSupplier; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Exception; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.wizards.common.Helper; + +public class TextSectionHandler +{ + + public XTextSectionsSupplier xTextSectionsSupplier; + private XMultiServiceFactory xMSFDoc; + private XTextDocument xTextDocument; + private XText xText; + + /** Creates a new instance of TextSectionHandler */ + public TextSectionHandler(XMultiServiceFactory xMSF, XTextDocument xTextDocument) + { + this.xMSFDoc = xMSF; + this.xTextDocument = xTextDocument; + xText = xTextDocument.getText(); + xTextSectionsSupplier = (XTextSectionsSupplier) UnoRuntime.queryInterface(XTextSectionsSupplier.class, xTextDocument); + } + + public void removeTextSectionbyName(String SectionName) + { + try + { + XNameAccess xAllTextSections = xTextSectionsSupplier.getTextSections(); + if (xAllTextSections.hasByName(SectionName) == true) + { + Object oTextSection = xTextSectionsSupplier.getTextSections().getByName(SectionName); + removeTextSection(oTextSection); + } + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } + + public boolean hasTextSectionByName(String SectionName) + { + com.sun.star.container.XNameAccess xAllTextSections = xTextSectionsSupplier.getTextSections(); + return xAllTextSections.hasByName(SectionName); + } + + public void removeLastTextSection() + { + try + { + XIndexAccess xAllTextSections = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTextSectionsSupplier.getTextSections()); + Object oTextSection = xAllTextSections.getByIndex(xAllTextSections.getCount() - 1); + removeTextSection(oTextSection); + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } + + public void removeTextSection(Object _oTextSection) + { + try + { + XTextContent xTextContentTextSection = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, _oTextSection); + xText.removeTextContent(xTextContentTextSection); + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } + + public void removeInvisibleTextSections() + { + try + { + XIndexAccess xAllTextSections = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTextSectionsSupplier.getTextSections()); + int TextSectionCount = xAllTextSections.getCount(); + for (int i = TextSectionCount - 1; i >= 0; i--) + { + XTextContent xTextContentTextSection = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xAllTextSections.getByIndex(i)); + XPropertySet xTextSectionPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextContentTextSection); + boolean bRemoveTextSection = (!AnyConverter.toBoolean(xTextSectionPropertySet.getPropertyValue("IsVisible"))); + if (bRemoveTextSection) + { + xText.removeTextContent(xTextContentTextSection); + } + } + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } + + public void removeAllTextSections() + { + try + { + XIndexAccess xAllTextSections = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTextSectionsSupplier.getTextSections()); + int TextSectionCount = xAllTextSections.getCount(); + for (int i = TextSectionCount - 1; i >= 0; i--) + { + XTextContent xTextContentTextSection = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xAllTextSections.getByIndex(i)); + XPropertySet xTextSectionPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextContentTextSection); + xText.removeTextContent(xTextContentTextSection); + } + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } + + public void breakLinkofTextSections() + { + try + { + Object oTextSection; + XIndexAccess xAllTextSections = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTextSectionsSupplier.getTextSections()); + int iSectionCount = xAllTextSections.getCount(); + SectionFileLink oSectionLink = new SectionFileLink(); + oSectionLink.FileURL = ""; + for (int i = 0; i < iSectionCount; i++) + { + oTextSection = xAllTextSections.getByIndex(i); + Helper.setUnoPropertyValues(oTextSection, new String[] + { + "FileLink", "LinkRegion" + }, new Object[] + { + oSectionLink, "" + }); + } + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } + + public void breakLinkOfTextSection(Object oTextSection) + { + SectionFileLink oSectionLink = new SectionFileLink(); + oSectionLink.FileURL = ""; + Helper.setUnoPropertyValues(oTextSection, new String[] + { + "FileLink", "LinkRegion" + }, new Object[] + { + oSectionLink, "" + }); + } + + public void linkSectiontoTemplate(String TemplateName, String SectionName) + { + try + { + Object oTextSection = xTextSectionsSupplier.getTextSections().getByName(SectionName); + linkSectiontoTemplate(oTextSection, TemplateName, SectionName); + } + catch (Exception e) + { + e.printStackTrace(System.out); + } + } + + public void linkSectiontoTemplate(Object oTextSection, String TemplateName, String SectionName) + { + SectionFileLink oSectionLink = new SectionFileLink(); + oSectionLink.FileURL = TemplateName; + Helper.setUnoPropertyValues(oTextSection, new String[] + { + "FileLink", "LinkRegion" + }, new Object[] + { + oSectionLink, SectionName + }); + XNamed xSectionName = (XNamed) UnoRuntime.queryInterface(XNamed.class, oTextSection); + String NewSectionName = xSectionName.getName(); + if (NewSectionName.compareTo(SectionName) != 0) + { + xSectionName.setName(SectionName); + } + } + + public void insertTextSection(String GroupName, String TemplateName, boolean _bAddParagraph) + { + try + { + if (_bAddParagraph) + { + XTextCursor xTextCursor = xText.createTextCursor(); + xText.insertControlCharacter(xTextCursor, ControlCharacter.PARAGRAPH_BREAK, false); + // Helper.setUnoPropertyValue(xTextCursor, "PageDescName", "First Page"); + xTextCursor.collapseToEnd(); + } + XTextCursor xSecondTextCursor = xText.createTextCursor(); + xSecondTextCursor.gotoEnd(false); + insertTextSection(GroupName, TemplateName, xSecondTextCursor); + } + catch (IllegalArgumentException e) + { + e.printStackTrace(System.out); + } + } + + public void insertTextSection(String sectionName, String templateName, XTextCursor position) + { + try + { + Object xTextSection; + if (xTextSectionsSupplier.getTextSections().hasByName(sectionName) == true) + { + xTextSection = xTextSectionsSupplier.getTextSections().getByName(sectionName); + } + else + { + xTextSection = xMSFDoc.createInstance("com.sun.star.text.TextSection"); + XTextContent xTextContentSection = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xTextSection); + position.getText().insertTextContent(position, xTextContentSection, false); + } + linkSectiontoTemplate(xTextSection, templateName, sectionName); + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + } + } +} |