/************************************************************** * * 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. * *************************************************************/ // __________ Imports __________ import com.sun.star.uno.UnoRuntime; import com.sun.star.lang.XComponent; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.awt.Point; import com.sun.star.awt.Size; import com.sun.star.beans.XPropertySet; import com.sun.star.container.XEnumeration; import com.sun.star.container.XEnumerationAccess; import com.sun.star.drawing.XShape; import com.sun.star.drawing.XShapes; import com.sun.star.text.ControlCharacter; import com.sun.star.text.XText; import com.sun.star.text.XTextCursor; import com.sun.star.text.XTextContent; import com.sun.star.text.XTextRange; public class ShapeHelper { // __________ static helper methods __________ // public static XPropertySet createAndInsertShape( XComponent xDrawDoc, XShapes xShapes, Point aPos, Size aSize, String sShapeType ) throws java.lang.Exception { XShape xShape = createShape( xDrawDoc, aPos, aSize, sShapeType ); xShapes.add( xShape ); XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xShape ); return xPropSet; } /** create a Shape */ public static XShape createShape( XComponent xDrawDoc, Point aPos, Size aSize, String sShapeType ) throws java.lang.Exception { XShape xShape = null; XMultiServiceFactory xFactory = (XMultiServiceFactory )UnoRuntime.queryInterface( XMultiServiceFactory.class, xDrawDoc ); Object xObj = xFactory.createInstance( sShapeType ); xShape = (XShape)UnoRuntime.queryInterface( XShape.class, xObj ); xShape.setPosition( aPos ); xShape.setSize( aSize ); return xShape; } /** add text to a shape. the return value is the PropertySet of the text range that has been added */ public static XPropertySet addPortion( XShape xShape, String sText, boolean bNewParagraph ) throws com.sun.star.lang.IllegalArgumentException { XText xText = (XText) UnoRuntime.queryInterface( XText.class, xShape ); XTextCursor xTextCursor = xText.createTextCursor(); xTextCursor.gotoEnd( false ); if ( bNewParagraph == true ) { xText.insertControlCharacter( xTextCursor, ControlCharacter.PARAGRAPH_BREAK, false ); xTextCursor.gotoEnd( false ); } XTextRange xTextRange = (XTextRange) UnoRuntime.queryInterface( XTextRange.class, xTextCursor ); xTextRange.setString( sText ); xTextCursor.gotoEnd( true ); XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xTextRange ); return xPropSet; } public static void setPropertyForLastParagraph( XShape xText, String sPropName, Object aValue ) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException, com.sun.star.container.NoSuchElementException { XEnumerationAccess xEnumerationAccess = (XEnumerationAccess) UnoRuntime.queryInterface( XEnumerationAccess.class, xText ); if ( xEnumerationAccess.hasElements() ) { XEnumeration xEnumeration = xEnumerationAccess.createEnumeration(); while( xEnumeration.hasMoreElements () ) { Object xObj = xEnumeration.nextElement(); if ( xEnumeration.hasMoreElements() == false ) { XTextContent xTextContent = (XTextContent)UnoRuntime.queryInterface( XTextContent.class, xObj ); XPropertySet xParaPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xTextContent ); xParaPropSet.setPropertyValue( sPropName, aValue ); } } } } }