Re: Copy textstring to Clipboard <SOLVED>
Fernand Vanrie <[email protected]> Thu, 02 Dec 2010 17:21:31 +0100
| Newsgroups | gmane.comp.openoffice.devel.api |
|---|---|
| Message-ID | <[email protected]> |
Steffen,
I learned only to use the dispatcher when there is no API code available
:-). (performance they say)
Java is not realy my cup of tea, i trie to translate to Basic, i was
also told that for some documents there is no Viewcursor (draw)
The bigest advantage of using the SystemClipboard instance stuff is the
fact that the code can been been used without opening any document.
I comeback when translated to Basic
Thanks for your respons
Fernand
> Hi Fernand,
>
> i wonder which method to copy contents is recommended. I achieve the
> same but I use a different approach with XSelectionSupplier in
> combination with XDispatchHelper and the XTextViewCursor.:
>
> public void copyContent(XCellRange cellRange, XTextRange textRange)
> {
> // Get current controller
> XController currController = this.xModel.getCurrentController();
>
> // Get selection supplier
> XSelectionSupplier xSelectionSupplier =
> (XSelectionSupplier)UnoRuntime.queryInterface(XSelectionSupplier.class, currController);
>
>
> // Select the cell range constructed above
>
> xSelectionSupplier.select(AnyConverter.toObject(XCellRange.class,
> cellRange)); // Here you could throw in any (selectable) object you
> want to copy!
> // Get Dispatch Helper to dispatch commands
> XFrame xFrame = xModel.getCurrentController().getFrame();
> XDispatchProvider xDispatchProvider = (XDispatchProvider)
> UnoRuntime.queryInterface(
> XDispatchProvider.class, xFrame);
>
> Object dispatchHelperObject =
> this.xRemoteServiceManager.createInstanceWithContext("com.sun.star.frame.DispatchHelper",
> this.xComponentContext);
> XDispatchHelper xDispatchHelper =
> (com.sun.star.frame.XDispatchHelper) UnoRuntime.queryInterface(
> com.sun.star.frame.XDispatchHelper.class,
> dispatchHelperObject);
>
> // Excute copy command
> xDispatchHelper.executeDispatch(xDispatchProvider,
> ".uno:Copy", "", 0, new PropertyValue[] { new PropertyValue() });
>
> // IMPORTANT!! the textViewCursor has to be set AFTER the
> uno:copy command!!!
> // We have the target selection
>
> this.xTextViewCursorSupplier.getViewCursor().gotoRange(textRange, false);
>
> // Perform Paste command
> xDispatchHelper.executeDispatch(xDispatchProvider,
> ".uno:Paste", "", 0, new PropertyValue[] { new PropertyValue() });
> }
>
> I encounter a serious performance issue if i use this approach for a
> few hundred cell ranges. Maybe your approach doesn't suffer from this.
> A comment from the devs would be great on which method is recommended
> for copying stuff around.
>
> Greetings,
> Steffen
>
> Am 02.12.2010 12:15, schrieb Fernand Vanrie:
>> Somewhere on the web (http://hermione.s41.xrea.com/pukiwiki/) i found
>> finaly the correct Basic code to copy a text to the clipboard without
>> opening ghidden docs etc...
>> I hope its usefull for others as well
>>
>> Fernand
>>
>> |Global sTxtCString AsString
>>
>> Sub clipboard_1
>> sText ="123456"
>> CopyToClipBoard(sText)
>> End Sub
>>
>> Sub CopyToClipBoard( sText )
>> ' create SystemClipboard instance
>> oClip =
>> CreateUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
>> oTR = createUnoListener("Tr_", _
>> "com.sun.star.datatransfer.XTransferable")
>> ' set data
>> oClip.setContents(oTR,Null)
>> sTxtCString = sText
>> 'oClip.flushClipboard() ' does not work
>> End Sub
>>
>> Function Tr_getTransferData(aFlavor as
>> com.sun.star.datatransfer.DataFlavor)
>> If (aFlavor.MimeType ="text/plain;charset=utf-16")Then
>> Tr_getTransferData() = sTxtCString
>> End If
>> End Function
>>
>> Function Tr_getTransferDataFlavors()
>> Dim aFlavor As new com.sun.star.datatransfer.DataFlavor
>> aFlavor.MimeType ="text/plain;charset=utf-16"
>> aFlavor.HumanPresentableName ="Unicode-Text"
>> Tr_getTransferDataFlavors() = array(aFlavor)
>> End Function
>>
>> Function Tr_isDataFlavorSupported(aFlavor as
>> com.sun.star.datatransfer.DataFlavor) as Boolean
>> If aFlavor.MimeType ="text/plain;charset=utf-16" Then
>> Tr_isDataFlavorSupported = true
>> Else
>> Tr_isDataFlavorSupported = false
>> End If
>> End Function|
>>
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]