summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Foster <dfoster@openoffice.org>2003-03-25 14:05:18 +0000
committerDuncan Foster <dfoster@openoffice.org>2003-03-25 14:05:18 +0000
commitb658df4194bc54a156dfa7d8224bdae4848f0f84 (patch)
treece675c5a582e8acd23d367abf1299666e1e7462f
parent036ed05fe35044e49a91e12b6a8e5f36a5b9c4c2 (diff)
Added Capitalise beanshell script
-rw-r--r--scripting/examples/beanshell/Capitalise/capitalise.bsh76
-rwxr-xr-xscripting/examples/beanshell/Capitalise/parcel-descriptor.xml16
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>