Java: Cursor-Pos. in einer Tabelle in Writer feststellen ...

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Java: Cursor-Pos. in einer Tabelle in Writer feststellen ...

Java: Cursor-Pos. in einer Tabelle in Writer feststellen ...

von HardyH » Do, 02.04.2009 08:56

Hallo,

wie kann ich feststellen, ob der Cursor aktuell innerhalb einer Tabelle steht und in welcher Zelle, falls ja ...
Hintergrund: ich möchte per Makro ein Eingabefeld einfügen und bekomme, sobald der Cursor innerhalb einer Tabellenzeile steht eine Exception innerhalb des "normalen" Textbereichs ist alles OK.



Mein unaufgeräumter Beispielcode

Code: Alles auswählen

    private void insertTextField(XComponentContext xCurrentComponent, String fieldName, String fieldValue, String fieldHelp) throws BootstrapException, Exception 
    {
	Object desktop = xCurrentComponent.getServiceManager().createInstanceWithContext("com.sun.star.frame.Desktop", xCurrentComponent);
	XDesktop xDesktop = (XDesktop)UnoRuntime.queryInterface(XDesktop.class, desktop) ;
	XComponent aCurrentComponent = xDesktop.getCurrentComponent();

        XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, aCurrentComponent);
        XText xDocText = xTextDocument.getText(); 
        XMultiServiceFactory xDocFactory = (XMultiServiceFactory) UnoRuntime.queryInterface( XMultiServiceFactory.class, xTextDocument);
        
        // die aktuelle Position im Dokument besorgen ...
        XController xController = xTextDocument.getCurrentController();
        XTextViewCursorSupplier xTextViewCursorSupplier = (XTextViewCursorSupplier) UnoRuntime.queryInterface(XTextViewCursorSupplier.class, xController);
        XTextViewCursor xDocTextCursor = xTextViewCursorSupplier.getViewCursor();

        // etwas fuer die Properties bereitstellen ...
        XPropertySet inputTextFieldProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xDocFactory.createInstance( "com.sun.star.text.TextField.Input"));
        inputTextFieldProps.setPropertyValue("Hint",    fieldName);
        inputTextFieldProps.setPropertyValue("Content", fieldValue);
        inputTextFieldProps.setPropertyValue("Help",    fieldHelp );
        
        XTextContent inputFieldTextContent = (XTextContent) UnoRuntime.queryInterface( XTextContent.class, inputTextFieldProps );
        
        XSelectionSupplier xSelectionSupplier = (XSelectionSupplier) UnoRuntime.queryInterface(XSelectionSupplier.class, xController);
        XInterface xInterface = (XInterface) UnoRuntime.queryInterface(XInterface.class, xSelectionSupplier.getSelection());
        XTextRange xTextRange =  (XTextRange)UnoRuntime.queryInterface(XTextRange.class, xInterface);
        XIndexAccess xIndexAccess = (XIndexAccess)UnoRuntime.queryInterface(XIndexAccess.class,xInterface);

        xDocText.insertTextContent(xDocTextCursor, inputFieldTextContent, false);
}
Wenn der Cursor in einer Tabellenzelle ist, bekomme ich folgende Ausgabe für die Code-Zeile[ b]"xDocText.insertTextContent(...)"[/b]:

Code: Alles auswählen

Exception in thread "AWT-EventQueue-0" com.sun.star.uno.RuntimeException: text interface and cursor not related

In Basic scheint es ja die Möglichkeit zu geben, festzustellen, ob der Cursor in einer Tabelle steht, irgendwo gefundener Code:

Code: Alles auswählen

oVCurs = ThisComponent.getCurrentController().getViewCursor()

REM Is the cursor in a table?
If IsEmpty(oVCurs.TextTable) Then
Print "The cursor is NOT in a table"
Exit Sub
End If 
NUR: wie komme ich in Java an dieser Stelle weiter???
Hilfe!!!

Nach oben