1*b1cdbd2cSJim Jagielski'************************************************************************* 2*b1cdbd2cSJim Jagielski' 3*b1cdbd2cSJim Jagielski' Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski' or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski' distributed with this work for additional information 6*b1cdbd2cSJim Jagielski' regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski' to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski' "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski' with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski' 11*b1cdbd2cSJim Jagielski' http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski' 13*b1cdbd2cSJim Jagielski' Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski' software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski' KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski' specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski' under the License. 19*b1cdbd2cSJim Jagielski' 20*b1cdbd2cSJim Jagielski'************************************************************************* 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim JagielskiOption Explicit On 23*b1cdbd2cSJim JagielskiOption Strict On 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielskiimports System 26*b1cdbd2cSJim Jagielskiimports System.Collections 27*b1cdbd2cSJim Jagielskiimports Microsoft.VisualBasic 28*b1cdbd2cSJim Jagielskiimports unoidl.com.sun.star.lang 29*b1cdbd2cSJim Jagielskiimports unoidl.com.sun.star.uno 30*b1cdbd2cSJim Jagielskiimports unoidl.com.sun.star.bridge 31*b1cdbd2cSJim Jagielskiimports uno.util 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim JagielskiModule WriterDemo 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim JagielskiSub Main( ByVal args() As String) 36*b1cdbd2cSJim Jagielski' If args.Length <> 2 Then 37*b1cdbd2cSJim Jagielski' Console.WriteLine("WriterDemo takes two arguments. A file url to the office" & _ 38*b1cdbd2cSJim Jagielski' "program directory and a connection string.") 39*b1cdbd2cSJim Jagielski' End If 40*b1cdbd2cSJim Jagielski'Connect to a running office 41*b1cdbd2cSJim Jagielski'-------------------------------------------------- 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski'Create a service manager of the remote office 44*b1cdbd2cSJim Jagielski'Dim ht As Hashtable = New Hashtable() 45*b1cdbd2cSJim Jagielski'ht.Add("SYSBINDIR", args(0)) 46*b1cdbd2cSJim JagielskiDim xContext As XComponentContext 47*b1cdbd2cSJim Jagielski'xLocalContext = Bootstrap.defaultBootstrap_InitialComponentContext( _ 48*b1cdbd2cSJim Jagielski' args(0) & "/uno.ini", ht.GetEnumerator()) 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim JagielskixContext = Bootstrap.bootstrap() 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski'Dim xURLResolver As XUnoUrlResolver 53*b1cdbd2cSJim Jagielski'xURLResolver = DirectCast(xLocalContext.getServiceManager(). _ 54*b1cdbd2cSJim Jagielski' createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", _ 55*b1cdbd2cSJim Jagielski' xLocalContext), XUnoUrlResolver) 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski'Dim xRemoteContext As XComponentContext 58*b1cdbd2cSJim Jagielski'xRemoteContext = DirectCast(xURLResolver.resolve( _ 59*b1cdbd2cSJim Jagielski' "uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext"), _ 60*b1cdbd2cSJim Jagielski' XComponentContext) 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim JagielskiDim xFactory As XMultiServiceFactory 63*b1cdbd2cSJim JagielskixFactory = DirectCast(xContext.getServiceManager(), _ 64*b1cdbd2cSJim Jagielski XMultiServiceFactory) 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski'Create the Desktop 67*b1cdbd2cSJim JagielskiDim xDesktop As unoidl.com.sun.star.frame.XDesktop 68*b1cdbd2cSJim JagielskixDesktop = DirectCast(xFactory.createInstance("com.sun.star.frame.Desktop"), _ 69*b1cdbd2cSJim Jagielski unoidl.com.sun.star.frame.XDesktop) 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski'Open a new empty writer document 72*b1cdbd2cSJim JagielskiDim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader 73*b1cdbd2cSJim JagielskixComponentLoader = DirectCast(xDesktop, unoidl.com.sun.star.frame.XComponentLoader) 74*b1cdbd2cSJim JagielskiDim arProps() As unoidl.com.sun.star.beans.PropertyValue = _ 75*b1cdbd2cSJim Jagielski New unoidl.com.sun.star.beans.PropertyValue(){} 76*b1cdbd2cSJim JagielskiDim xComponent As unoidl.com.sun.star.lang.XComponent 77*b1cdbd2cSJim Jagielski xComponent = xComponentLoader.loadComponentFromURL( _ 78*b1cdbd2cSJim Jagielski "private:factory/swriter", "_blank", 0, arProps) 79*b1cdbd2cSJim JagielskiDim xTextDocument As unoidl.com.sun.star.text.XTextDocument 80*b1cdbd2cSJim JagielskixTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument) 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski'Create a text object 83*b1cdbd2cSJim JagielskiDim xText As unoidl.com.sun.star.text.XText 84*b1cdbd2cSJim JagielskixText = xTextDocument.getText() 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim JagielskiDim xSimpleText As unoidl.com.sun.star.text.XSimpleText 87*b1cdbd2cSJim JagielskixSimpleText = DirectCast(xText, unoidl.com.sun.star.text.XSimpleText) 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski'Create a cursor object 90*b1cdbd2cSJim JagielskiDim xCursor As unoidl.com.sun.star.text.XTextCursor 91*b1cdbd2cSJim JagielskixCursor = xSimpleText.createTextCursor() 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski'Inserting some Text 94*b1cdbd2cSJim JagielskixText.insertString(xCursor, "The first line in the newly created text document." _ 95*b1cdbd2cSJim Jagielski & vbLf, false) 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski'Create instance of a text table with 4 columns and 4 rows 98*b1cdbd2cSJim JagielskiDim objTextTable As Object 99*b1cdbd2cSJim JagielskiobjTextTable= DirectCast(xTextDocument, unoidl.com.sun.star.lang.XMultiServiceFactory). _ 100*b1cdbd2cSJim Jagielski createInstance("com.sun.star.text.TextTable") 101*b1cdbd2cSJim JagielskiDim xTextTable As unoidl.com.sun.star.text.XTextTable 102*b1cdbd2cSJim JagielskixTextTable = DirectCast(objTextTable, unoidl.com.sun.star.text.XTextTable) 103*b1cdbd2cSJim JagielskixTextTable.initialize(4, 4) 104*b1cdbd2cSJim JagielskixText.insertTextContent(xCursor, xTextTable, false) 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski'Set the table background color 107*b1cdbd2cSJim JagielskiDim xPropertySetTable As unoidl.com.sun.star.beans.XPropertySet 108*b1cdbd2cSJim JagielskixPropertySetTable = DirectCast(objTextTable, unoidl.com.sun.star.beans.XPropertySet) 109*b1cdbd2cSJim JagielskixPropertySetTable.setPropertyValue("BackTransparent", New uno.Any(False)) 110*b1cdbd2cSJim JagielskixPropertySetTable.setPropertyValue("BackColor", New uno.Any(&Hccccff)) 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski'Get first row 113*b1cdbd2cSJim JagielskiDim xTableRows As unoidl.com.sun.star.table.XTableRows 114*b1cdbd2cSJim JagielskixTableRows = xTextTable.getRows() 115*b1cdbd2cSJim JagielskiDim anyRow As uno.Any 116*b1cdbd2cSJim JagielskianyRow = DirectCast(xTableRows, unoidl.com.sun.star.container.XIndexAccess).getByIndex( 0) 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski'Set a different background color for the first row 119*b1cdbd2cSJim JagielskiDim xPropertySetFirstRow As unoidl.com.sun.star.beans.XPropertySet 120*b1cdbd2cSJim JagielskixPropertySetFirstRow = DirectCast(anyRow.Value, unoidl.com.sun.star.beans.XPropertySet) 121*b1cdbd2cSJim JagielskixPropertySetFirstRow.setPropertyValue("BackTransparent", New uno.Any(False)) 122*b1cdbd2cSJim JagielskixPropertySetFirstRow.setPropertyValue("BackColor", New uno.Any(&H6666AA)) 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski'Fill the first table row 125*b1cdbd2cSJim JagielskiinsertIntoCell("A1","FirstColumn", xTextTable) 126*b1cdbd2cSJim JagielskiinsertIntoCell("B1","SecondColumn", xTextTable) 127*b1cdbd2cSJim JagielskiinsertIntoCell("C1","ThirdColumn", xTextTable) 128*b1cdbd2cSJim JagielskiinsertIntoCell("D1","SUM", xTextTable) 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski'Fill the remaining rows 131*b1cdbd2cSJim JagielskixTextTable.getCellByName("A2").setValue(22.5) 132*b1cdbd2cSJim JagielskixTextTable.getCellByName("B2").setValue(5615.3) 133*b1cdbd2cSJim JagielskixTextTable.getCellByName("C2").setValue(-2315.7) 134*b1cdbd2cSJim JagielskixTextTable.getCellByName("D2").setFormula("sum <A2:C2>") 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim JagielskixTextTable.getCellByName("A3").setValue(21.5) 137*b1cdbd2cSJim JagielskixTextTable.getCellByName("B3").setValue (615.3) 138*b1cdbd2cSJim JagielskixTextTable.getCellByName("C3").setValue( -315.7) 139*b1cdbd2cSJim JagielskixTextTable.getCellByName("D3").setFormula( "sum <A3:C3>") 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim JagielskixTextTable.getCellByName("A4").setValue( 121.5) 142*b1cdbd2cSJim JagielskixTextTable.getCellByName("B4").setValue( -615.3) 143*b1cdbd2cSJim JagielskixTextTable.getCellByName("C4").setValue( 415.7) 144*b1cdbd2cSJim JagielskixTextTable.getCellByName("D4").setFormula( "sum <A4:C4>") 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski'Change the CharColor and add a Shadow 147*b1cdbd2cSJim JagielskiDim xPropertySetCursor As unoidl.com.sun.star.beans.XPropertySet 148*b1cdbd2cSJim JagielskixPropertySetCursor = DirectCast(xCursor, unoidl.com.sun.star.beans.XPropertySet) 149*b1cdbd2cSJim JagielskixPropertySetCursor.setPropertyValue("CharColor", New uno.Any(255)) 150*b1cdbd2cSJim JagielskixPropertySetCursor.setPropertyValue("CharShadowed", New uno.Any(true)) 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski'Create a paragraph break 153*b1cdbd2cSJim JagielskixSimpleText.insertControlCharacter(xCursor, _ 154*b1cdbd2cSJim Jagielski unoidl.com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False) 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski'Inserting colored Text. 157*b1cdbd2cSJim JagielskixSimpleText.insertString(xCursor," This is a colored Text - blue with shadow" & vbLf, _ 158*b1cdbd2cSJim Jagielski False) 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski'Create a paragraph break 161*b1cdbd2cSJim JagielskixSimpleText.insertControlCharacter(xCursor, _ 162*b1cdbd2cSJim Jagielski unoidl.com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False) 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski'Create a TextFrame. 165*b1cdbd2cSJim JagielskiDim objTextFrame As Object 166*b1cdbd2cSJim JagielskiobjTextFrame = DirectCast(xTextDocument, unoidl.com.sun.star.lang.XMultiServiceFactory). _ 167*b1cdbd2cSJim Jagielski createInstance("com.sun.star.text.TextFrame") 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim JagielskiDim xTextFrame As unoidl.com.sun.star.text.XTextFrame = _ 170*b1cdbd2cSJim Jagielski DirectCast(objTextFrame, unoidl.com.sun.star.text.XTextFrame) 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski'Set the size of the frame 173*b1cdbd2cSJim JagielskiDim aSize As unoidl.com.sun.star.awt.Size = _ 174*b1cdbd2cSJim Jagielski New unoidl.com.sun.star.awt.Size(15000, 400) 175*b1cdbd2cSJim JagielskiDirectCast(xTextFrame, unoidl.com.sun.star.drawing.XShape).setSize(aSize) 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski'Set anchortype 178*b1cdbd2cSJim JagielskiDim xPropertySetFrame As unoidl.com.sun.star.beans.XPropertySet 179*b1cdbd2cSJim JagielskixPropertySetFrame = DirectCast(xTextFrame, unoidl.com.sun.star.beans.XPropertySet) 180*b1cdbd2cSJim JagielskixPropertySetFrame.setPropertyValue("AnchorType", New uno.Any( _ 181*b1cdbd2cSJim Jagielski GetType(unoidl.com.sun.star.text.TextContentAnchorType), _ 182*b1cdbd2cSJim Jagielski unoidl.com.sun.star.text.TextContentAnchorType.AS_CHARACTER)) 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski'insert the frame 185*b1cdbd2cSJim JagielskixText.insertTextContent(xCursor, xTextFrame, False) 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski'Get the text object of the frame 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim JagielskiDim xFrameText As unoidl.com.sun.star.text.XText 190*b1cdbd2cSJim JagielskixFrameText = xTextFrame.getText() 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim JagielskiDim xFrameSimpleText As unoidl.com.sun.star.text.XSimpleText 193*b1cdbd2cSJim JagielskixFrameSimpleText = DirectCast(xFrameText, unoidl.com.sun.star.text.XSimpleText) 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski'Create a cursor object 196*b1cdbd2cSJim JagielskiDim xFrameCursor As unoidl.com.sun.star.text.XTextCursor 197*b1cdbd2cSJim JagielskixFrameCursor = xFrameSimpleText.createTextCursor() 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski'Inserting some Text 200*b1cdbd2cSJim JagielskixFrameSimpleText.insertString(xFrameCursor, _ 201*b1cdbd2cSJim Jagielski "The first line in the newly created text frame.", False) 202*b1cdbd2cSJim JagielskixFrameSimpleText.insertString(xFrameCursor, _ 203*b1cdbd2cSJim Jagielski vbLf & "With this second line the height of the frame raises.", False) 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski'Create a paragraph break 206*b1cdbd2cSJim JagielskixSimpleText.insertControlCharacter(xFrameCursor, _ 207*b1cdbd2cSJim Jagielski unoidl.com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False) 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski'Change the CharColor and add a Shadow 210*b1cdbd2cSJim JagielskixPropertySetCursor.setPropertyValue("CharColor", New uno.Any(65536)) 211*b1cdbd2cSJim JagielskixPropertySetCursor.setPropertyValue("CharShadowed", New uno.Any(False)) 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski'Insert another string 214*b1cdbd2cSJim JagielskixText.insertString(xCursor, vbLf + " That's all for now !!", False) 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim JagielskiEnd Sub 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim JagielskiSub insertIntoCell(sCellName As String,sText As String, _ 219*b1cdbd2cSJim Jagielski xTable As unoidl.com.sun.star.text.XTextTable) 220*b1cdbd2cSJim Jagielski Dim xCell As unoidl.com.sun.star.table.XCell 221*b1cdbd2cSJim Jagielski xCell = xTable.getCellByName(sCellName) 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski Dim xSimpleTextCell As unoidl.com.sun.star.text.XSimpleText 224*b1cdbd2cSJim Jagielski xSimpleTextCell = DirectCast(xCell, unoidl.com.sun.star.text.XSimpleText) 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski Dim xCursor As unoidl.com.sun.star.text.XTextCursor 227*b1cdbd2cSJim Jagielski xCursor = xSimpleTextCell.createTextCursor() 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski Dim xPropertySetCursor As unoidl.com.sun.star.beans.XPropertySet 230*b1cdbd2cSJim Jagielski xPropertySetCursor = DirectCast(xCursor, unoidl.com.sun.star.beans.XPropertySet) 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski xPropertySetCursor.setPropertyValue("CharColor", New uno.Any(&Hffffff)) 233*b1cdbd2cSJim Jagielski xSimpleTextCell.insertString(xCursor, sText, False) 234*b1cdbd2cSJim JagielskiEnd Sub 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim JagielskiEnd Module 237