Sembra che si desidera registrare un ascoltatore a un componente foglio di calcolo. Per soddisfare il tuo obiettivo, puoi aggiungere il listener all'oggetto foglio di calcolo stesso o a un altro oggetto nidificato che implementa un'interfaccia che supporta un metodo add. + EventListener().
Qui di seguito è una coppia (emittenti/ascoltatore) che mi viene in mente che si potrebbe utilizzare nel progetto: XDocumentEventBroadcaster/XDocumentEventListener
Il modello di eventi UNO viene qui spiegato: https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Event_Model
Qui di seguito sono esempi di come questi ascoltatori sono usati.
////////////////////////////////////////////////////////////////////
// Add document window listeners.
////////////////////////////////////////////////////////////////////
System.out.println("WriterDoc: Add window listeners.");
// Example of adding a document displose listener so the application
// can know if the user manually exits the Writer window.
document.addEventListener(new XEventListener() {
public void disposing(EventObject e) {
System.out.println(
"WriterDoc (Event Listener): The document window is closing.");
}
});
// Example of adding a window listener so the application can know
// when the document becomes initially visible (in the case of this
// implementation, we will manually set it visible below after we
// finish building it).
window.addWindowListener(new XWindowListener() {
public void windowShown(com.sun.star.lang.EventObject e) {
System.out.println(
"WriterDoc (Window listener): The document window has become visible.");
}
public void windowHidden(com.sun.star.lang.EventObject e) { }
public void disposing(com.sun.star.lang.EventObject e) { }
public void windowResized(com.sun.star.awt.WindowEvent e) { }
public void windowMoved(com.sun.star.awt.WindowEvent e) { }
});
Inoltre, il servizio SheetCellRange supporta l'interfaccia XModifyBroadcaster. Forse potresti ottenere il comportamento desiderato se hai registrato un oggetto XModifyListener su di esso. L'oggetto implementerebbe il metodo 'modificato', che riceve un EventObject quando viene chiamato. Credo che tu possa ottenere chi è il chiamante dalla proprietà source di EventObject. Se la sorgente risulta essere l'intero SheetCellRange, puoi provare a scorrere tutte le celle che desideri vengano monitorate e aggiungere un XModifyListener a ciascuna. Il servizio SheetCell supporta anche l'interfaccia XModifyBroadcaster.
Esempio di utilizzo della XModifyBroadcaster da un CellRange: http://openoffice.2283327.n4.nabble.com/Re-How-to-get-the-XModifyBroadcaster-from-Cell-CellRange-Table-td2771959.html
Cheers!
fonte
2014-04-09 22:53:18
Provate a chiedere su un canale irc libreoffice, alcuni sviluppatori attivi si siedono lì e immagino sia molto più possibile che otterrete la vostra risposta lì. –