Ответ 1
Похоже, вы хотите зарегистрировать слушателя в компоненте электронной таблицы. Чтобы удовлетворить вашу цель, вы можете добавить слушателя к объекту электронной таблицы самостоятельно или к другому вложенному объекту, который реализует интерфейс, поддерживающий метод add. + EventListener().
Ниже представлена пара (вещатель/слушатель), которую я могу думать, что вы можете использовать в своем проекте: XDocumentEventBroadcaster/XDocumentEventListener
Здесь описывается модель событий UNO: https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Event_Model
Ниже приведены примеры использования этих слушателей.
////////////////////////////////////////////////////////////////////
// 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) { }
});
Кроме того, служба SheetCellRange поддерживает интерфейс XModifyBroadcaster. Возможно, вы можете получить желаемое поведение, если вы зарегистрировали для него объект XModifyListener. Объект будет реализовывать "модифицированный" метод, который получает EventObject при вызове. Я считаю, что вы можете получить, кто из вызывающего есть исходное свойство EventObject. Если источником оказывается весь SheetCellRange, вы можете попытаться пропустить все ячейки, которые хотите отслеживать, и добавить к ним XModifyListener. Служба SheetCell также поддерживает интерфейс XModifyBroadcaster.
Пример использования XModifyBroadcaster из CellRange: http://openoffice.2283327.n4.nabble.com/Re-How-to-get-the-XModifyBroadcaster-from-Cell-CellRange-Table-td2771959.html
Ура!