diff options
author | Duncan Foster <dfoster@openoffice.org> | 2003-03-25 14:05:18 +0000 |
---|---|---|
committer | Duncan Foster <dfoster@openoffice.org> | 2003-03-25 14:05:18 +0000 |
commit | b658df4194bc54a156dfa7d8224bdae4848f0f84 (patch) | |
tree | ce675c5a582e8acd23d367abf1299666e1e7462f | |
parent | 036ed05fe35044e49a91e12b6a8e5f36a5b9c4c2 (diff) |
Added Capitalise beanshell script
-rw-r--r-- | scripting/examples/beanshell/Capitalise/capitalise.bsh | 76 | ||||
-rwxr-xr-x | scripting/examples/beanshell/Capitalise/parcel-descriptor.xml | 16 |
2 files changed, 92 insertions, 0 deletions
diff --git a/scripting/examples/beanshell/Capitalise/capitalise.bsh b/scripting/examples/beanshell/Capitalise/capitalise.bsh new file mode 100644 index 000000000000..7808db8c1294 --- /dev/null +++ b/scripting/examples/beanshell/Capitalise/capitalise.bsh @@ -0,0 +1,76 @@ +import com.sun.star.uno.UnoRuntime; +import com.sun.star.frame.XModel; +import com.sun.star.view.XSelectionSupplier; +import com.sun.star.container.XIndexAccess; +import com.sun.star.text.XText; +import com.sun.star.text.XTextRange; +import com.sun.star.text.XWordCursor; +import drafts.com.sun.star.script.framework.runtime.XScriptContext; + +String getNewString( theString ) { + String newString; + if(theString==null || theString.length()==0) { + return newString; + } + // should we tokenize on "."? + if(Character.isUpperCase(theString.charAt(0)) && theString.length()>=2 && Character.isUpperCase(theString.charAt(1))) { // first two chars are UC => first UC, rest LC + newString=theString.substring(0,1).toUpperCase()+theString.substring(1).toLowerCase(); + } else if (Character.isUpperCase(theString.charAt(0))) { // first char UC => all to LC + newString=theString.toLowerCase(); + } else { // all to UC. + newString=theString.toUpperCase(); + } + return newString; +} + +void capitalise() { + + count = xIndexAccess.getCount(); + if(count>=1) { //ie we have a selection + for(i=0;i<count;i++) { + xTextRange = (XTextRange) + UnoRuntime.queryInterface(XTextRange.class, xIndexAccess.getByIndex(i)); + System.out.println("string: "+xTextRange.getString()); + theString = xTextRange.getString(); + if(theString.length()==0) { + // sadly we can have a selection where nothing is selected + // in this case we get the XWordCursor and make a selection! + xText = (XText) + UnoRuntime.queryInterface(XText.class, xTextRange.getText()); + xWordCursor = (XWordCursor) + UnoRuntime.queryInterface(XWordCursor.class, xText.createTextCursorByRange(xTextRange)); + if(!xWordCursor.isStartOfWord()) { + xWordCursor.gotoStartOfWord(false); + } + xWordCursor.gotoNextWord(true); + theString = xWordCursor.getString(); + newString = getNewString(theString); + if(newString!=null) { + xWordCursor.setString(newString); + xSelectionSupplier.select(xWordCursor); + } + } else { + newString = getNewString( theString ); + if(newString!=null) { + xTextRange.setString(newString); + xSelectionSupplier.select(xTextRange); + } + } + + } + } +} + +// The context variable is of type XScriptContext and is available to +// all BeanShell scripts executed by the Script Framework +xModel = (XModel) + UnoRuntime.queryInterface(XModel.class, context.getDocument()); +//the writer controller impl supports the css.view.XSelectionSupplier interface +xSelectionSupplier = (XSelectionSupplier) + UnoRuntime.queryInterface(XSelectionSupplier.class, xModel.getCurrentController()); +//see section 7.5.1 of developers' guide +xIndexAccess = (XIndexAccess) + UnoRuntime.queryInterface(XIndexAccess.class, xSelectionSupplier.getSelection()); + +capitalise(); +return 0; diff --git a/scripting/examples/beanshell/Capitalise/parcel-descriptor.xml b/scripting/examples/beanshell/Capitalise/parcel-descriptor.xml new file mode 100755 index 000000000000..294a82298b52 --- /dev/null +++ b/scripting/examples/beanshell/Capitalise/parcel-descriptor.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?>
+
+<parcel language="BeanShell" xmlns:parcel="scripting.dtd">
+
+ <script language="BeanShell">
+ <locale lang="en">
+ <displayname value="Capitalise"/>
+ <description>
+ Change the case of a selection, or current word from upper case, to first char upper case, to all lower case to upper case...
+ </description>
+ </locale>
+ <functionname value="capitalise.bsh"/>
+ <logicalname value="Capitalise.BeanShell"/>
+ </script>
+
+</parcel>
|