Re: [dev] Programmatic XTextFrame Control with Java
Thanks for the help and comments. I seem to have got it working, it needs more testing. Surly there seems to be a bug here: xShapeProps.setPropertyValue( "VertOrientPosition", new Integer( 2 ) ); xShapeProps.setPropertyValue( "HoriOrientPosition", new Integer( 12000 ) ); These properties are defined to take longs. VertOrient can take a long, but gives odd results and the other one takes a long but then throws a IllegalArgumentException. Below is the method, I will post this somewhere on a snippets page, after I wait to see if I get any comments, or at least after I test it a bit more. manipulateText() is taken directly out of the handbook. Code Follows # public void frameTest() throws java.lang.Exception { mxDoc = this.bean.getTextDocument(); // get its text mxDocText = ( XText ) mxDoc.getText(); // Create a document cursor and remember it mxDocCursor = mxDocText.createTextCursor(); // Access the text document's multi service factory mxDocFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, mxDoc ); // Use the document's factory to create a new text frame and immediately access // it's XTextFrame interface Object objectTextFrame = mxDocFactory.createInstance( "com.sun.star.text.TextFrame" ); XTextFrame xFrame = ( XTextFrame ) UnoRuntime.queryInterface( XTextFrame.class, objectTextFrame ); XPropertySet xpropertyset = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xFrame ); xpropertyset.setPropertyValue( "AnchorType", TextContentAnchorType.AT_PAGE ); // insert RectangleShape and get shape text, then manipulate text Object writerShape = mxDocFactory.createInstance( "com.sun.star.drawing.TextShape" ); XShape xWriterShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, writerShape ); xWriterShape.setSize( new Size( 5, 5000 ) ); xWriterShape.setPosition(new Point(2,12000)); XTextContent xTextContentShape = ( XTextContent ) UnoRuntime.queryInterface( XTextContent.class, writerShape ); mxDocText.insertTextContent( mxDocText.getEnd(), xTextContentShape, false ); XPropertySet xShapeProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, writerShape ); xShapeProps.setPropertyValue( "AnchorType", TextContentAnchorType.AT_PAGE ); // Setting the vertical position xShapeProps.setPropertyValue( "VertOrient", new Short( VertOrientation.NONE ) ); xShapeProps.setPropertyValue( "HoriOrient", new Short( HoriOrientation.NONE ) ); // Setting the vertical position // these really should be able to take longs xShapeProps.setPropertyValue( "VertOrientPosition", new Integer( 2 ) ); xShapeProps.setPropertyValue( "HoriOrientPosition", new Long( 12000 ) ); XText xShapeText = ( XText ) UnoRuntime.queryInterface( XText.class, writerShape ); manipulateText( xShapeText ); } __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [dev] Programmatic XTextFrame Control with Java
Hi again, I took your code and just added some lines. Here you are: XInterface xTextFrameInterface = (XInterface) mxDocFactory.createInstance("com.sun.star.text.TextFrame"); XTextContent xFrameContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xTextFrameInterface); XTextRange xDocRange = (XTextRange)UnoRuntime.queryInterface(XTextRange.class, mxDocFactory); XText xText = xDocRange.getText(); xText.insertTextContent(xDocRange, xFrameContent, false); XPropertySet xFramePropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextFrameInterface); xFramePropSet.setPropertyValue( "FrameHeightAbsolute", new Long(5000)); xFramePropSet.setPropertyValue( "FrameIsAutomaticHeight", Boolean.FALSE); xFramePropSet.setPropertyValue( "SizeType", new Short((short)1)); This should do the trick. Note that the text frame is inserted at the end of your document. See the description of "insertTextContent". Regards, Steffen Kent Gibson wrote: please an example in java would be grand, this has been a two day struggle. kind regards, kent - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [dev] Programmatic XTextFrame Control with Java
I created a solution in Basic http://www.oooforum.org/forum/viewtopic.phtml?t=8657 Kent Gibson wrote: Hi-ya, I would like to create XTextFrames of a fixed arbitrary height and width and place them at arbitrary x and y coordinates. I can manage to get the frame, but I can't seem to size it or place it arbitrarily. I have based my code on the TextFrameExample() in TextDocuments.java. // Set the size of the new Text Frame using the XShape's 'setSize' method Size aSize = new Size(); // this is probably (1/100 mm) aSize.Height = 400; aSize.Width = 15000; xShape.setSize(aSize); If anyone has any pointers that would be grand. kent -- Andrew Pitonyak My Macro Document: http://www.pitonyak.org/AndrewMacro.odt My Book: http://www.hentzenwerke.com/catalog/oome.htm Info: http://www.pitonyak.org/oo.php See Also: http://documentation.openoffice.org/HOW_TO/index.html - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [dev] Programmatic XTextFrame Control with Java
please an example in java would be grand, this has been a two day struggle. kind regards, kent --- Steffen Grund <[EMAIL PROTECTED]> wrote: > Hi Kent, > > the text frame is only really valid after you've > inserted it in the > document. > See > http://api.openoffice.org/docs/common/ref/com/sun/star/text/TextFrame.html > for a Basic example on how to insert the frame. If > you need one in Java, > let me know. > > Regards, Steffen > > > Kent Gibson wrote: > > Hi-ya, > > > > I would like to create XTextFrames of a fixed > > arbitrary height and width and place them at > arbitrary > > x and y coordinates. > > > > I can manage to get the frame, but I can't seem to > > size it or place it arbitrarily. I have based my > code > > on the TextFrameExample() in TextDocuments.java. > > > > These properties seem to have no effect: > > > > XInterface xTextFrameInterface = (XInterface) > > > mxDocFactory.createInstance("com.sun.star.text.TextFrame"); > > > > > > XPropertySet xFramePropSet = (XPropertySet) > > UnoRuntime.queryInterface(XPropertySet.class, > > xTextFrameInterface); > > xFramePropSet.setPropertyValue( > "FrameHeightAbsolute", > > new Long(5000)); > > xFramePropSet.setPropertyValue( > > "FrameIsAutomaticHeight", new Boolean(false)); > > xFramePropSet.setPropertyValue( "SizeType", new > > Short((short)1)); > > > > Also when I use xShape to define height and width, > it > > doesn't seem to work either. The textframe is only > as > > big as the text inside it. > > > > XShape xShape = ( XShape ) > UnoRuntime.queryInterface( > > XShape.class, xFrame ); > > > > // Access the XPropertySet interface of the > TextFrame > > XPropertySet xFrameProps = ( XPropertySet ) > > UnoRuntime.queryInterface( XPropertySet.class, > xFrame > > ); > > > > // Set the size of the new Text Frame using the > > XShape's 'setSize' method > > Size aSize = new Size(); > > // this is probably (1/100 mm) > > aSize.Height = 400; > > aSize.Width = 15000; > > xShape.setSize(aSize); > > > > If anyone has any pointers that would be grand. > > > > kent > > > > __ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > protection around > > http://mail.yahoo.com > > > > > - > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > - > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [dev] Programmatic XTextFrame Control with Java
Hi Kent, the text frame is only really valid after you've inserted it in the document. See http://api.openoffice.org/docs/common/ref/com/sun/star/text/TextFrame.html for a Basic example on how to insert the frame. If you need one in Java, let me know. Regards, Steffen Kent Gibson wrote: Hi-ya, I would like to create XTextFrames of a fixed arbitrary height and width and place them at arbitrary x and y coordinates. I can manage to get the frame, but I can't seem to size it or place it arbitrarily. I have based my code on the TextFrameExample() in TextDocuments.java. These properties seem to have no effect: XInterface xTextFrameInterface = (XInterface) mxDocFactory.createInstance("com.sun.star.text.TextFrame"); XPropertySet xFramePropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextFrameInterface); xFramePropSet.setPropertyValue( "FrameHeightAbsolute", new Long(5000)); xFramePropSet.setPropertyValue( "FrameIsAutomaticHeight", new Boolean(false)); xFramePropSet.setPropertyValue( "SizeType", new Short((short)1)); Also when I use xShape to define height and width, it doesn't seem to work either. The textframe is only as big as the text inside it. XShape xShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, xFrame ); // Access the XPropertySet interface of the TextFrame XPropertySet xFrameProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xFrame ); // Set the size of the new Text Frame using the XShape's 'setSize' method Size aSize = new Size(); // this is probably (1/100 mm) aSize.Height = 400; aSize.Width = 15000; xShape.setSize(aSize); If anyone has any pointers that would be grand. kent __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [dev] Programmatic XTextFrame Control with Java
thanks, I am now signed up to the api list. I don't suppose in the interim my question was answered? We would really like to integrate openoffice but we need to able to place text with x,y coords and so far I can't get it to work. Does anyone even know if this is possible? Whenever I set any of these properties on a XTextFrame they are either ignored or I get IllegalArgumentException: HoriOrientPosition VertOrientPosition Width Height FrameHeightAbsolute FrameWidthAbsolute FrameWidthAbsolute FrameIsAutomaticHeight SizeType --- Christian Junker <[EMAIL PROTECTED]> wrote: > Hi Kent Gibson, > > this is a pure API topic, so discussion should > rather go on over there > (dev@api.openoffice.org). Thus I am forwarding your > message. > > 2006/2/6, Kent Gibson <[EMAIL PROTECTED]>: > > Hi-ya, > > > > I would like to create XTextFrames of a fixed > > arbitrary height and width and place them at > arbitrary > > x and y coordinates. > > > > I can manage to get the frame, but I can't seem to > > size it or place it arbitrarily. I have based my > code > > on the TextFrameExample() in TextDocuments.java. > > > > These properties seem to have no effect: > > > > XInterface xTextFrameInterface = (XInterface) > > > mxDocFactory.createInstance("com.sun.star.text.TextFrame"); > > > > > > XPropertySet xFramePropSet = (XPropertySet) > > UnoRuntime.queryInterface(XPropertySet.class, > > xTextFrameInterface); > > xFramePropSet.setPropertyValue( > "FrameHeightAbsolute", > > new Long(5000)); > > xFramePropSet.setPropertyValue( > > "FrameIsAutomaticHeight", new Boolean(false)); > > xFramePropSet.setPropertyValue( "SizeType", new > > Short((short)1)); > > > > Also when I use xShape to define height and width, > it > > doesn't seem to work either. The textframe is only > as > > big as the text inside it. > > > > XShape xShape = ( XShape ) > UnoRuntime.queryInterface( > > XShape.class, xFrame ); > > > > // Access the XPropertySet interface of the > TextFrame > > XPropertySet xFrameProps = ( XPropertySet ) > > UnoRuntime.queryInterface( XPropertySet.class, > xFrame > > ); > > > > // Set the size of the new Text Frame using the > > XShape's 'setSize' method > > Size aSize = new Size(); > > // this is probably (1/100 mm) > > aSize.Height = 400; > > aSize.Width = 15000; > > xShape.setSize(aSize); > > > > If anyone has any pointers that would be grand. > > > > -- > Best Regards > Christian Junker > > - > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [dev] Programmatic XTextFrame Control with Java
Hi Kent Gibson, this is a pure API topic, so discussion should rather go on over there (dev@api.openoffice.org). Thus I am forwarding your message. 2006/2/6, Kent Gibson <[EMAIL PROTECTED]>: > Hi-ya, > > I would like to create XTextFrames of a fixed > arbitrary height and width and place them at arbitrary > x and y coordinates. > > I can manage to get the frame, but I can't seem to > size it or place it arbitrarily. I have based my code > on the TextFrameExample() in TextDocuments.java. > > These properties seem to have no effect: > > XInterface xTextFrameInterface = (XInterface) > mxDocFactory.createInstance("com.sun.star.text.TextFrame"); > > > XPropertySet xFramePropSet = (XPropertySet) > UnoRuntime.queryInterface(XPropertySet.class, > xTextFrameInterface); > xFramePropSet.setPropertyValue( "FrameHeightAbsolute", > new Long(5000)); > xFramePropSet.setPropertyValue( > "FrameIsAutomaticHeight", new Boolean(false)); > xFramePropSet.setPropertyValue( "SizeType", new > Short((short)1)); > > Also when I use xShape to define height and width, it > doesn't seem to work either. The textframe is only as > big as the text inside it. > > XShape xShape = ( XShape ) UnoRuntime.queryInterface( > XShape.class, xFrame ); > > // Access the XPropertySet interface of the TextFrame > XPropertySet xFrameProps = ( XPropertySet ) > UnoRuntime.queryInterface( XPropertySet.class, xFrame > ); > > // Set the size of the new Text Frame using the > XShape's 'setSize' method > Size aSize = new Size(); > // this is probably (1/100 mm) > aSize.Height = 400; > aSize.Width = 15000; > xShape.setSize(aSize); > > If anyone has any pointers that would be grand. -- Best Regards Christian Junker - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[dev] Programmatic XTextFrame Control with Java
Hi-ya, I would like to create XTextFrames of a fixed arbitrary height and width and place them at arbitrary x and y coordinates. I can manage to get the frame, but I can't seem to size it or place it arbitrarily. I have based my code on the TextFrameExample() in TextDocuments.java. These properties seem to have no effect: XInterface xTextFrameInterface = (XInterface) mxDocFactory.createInstance("com.sun.star.text.TextFrame"); XPropertySet xFramePropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextFrameInterface); xFramePropSet.setPropertyValue( "FrameHeightAbsolute", new Long(5000)); xFramePropSet.setPropertyValue( "FrameIsAutomaticHeight", new Boolean(false)); xFramePropSet.setPropertyValue( "SizeType", new Short((short)1)); Also when I use xShape to define height and width, it doesn't seem to work either. The textframe is only as big as the text inside it. XShape xShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, xFrame ); // Access the XPropertySet interface of the TextFrame XPropertySet xFrameProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xFrame ); // Set the size of the new Text Frame using the XShape's 'setSize' method Size aSize = new Size(); // this is probably (1/100 mm) aSize.Height = 400; aSize.Width = 15000; xShape.setSize(aSize); If anyone has any pointers that would be grand. kent __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]