При разработке APE-форм для Borland StarTeam часто возникает желание обрабатывать некоторые события на уровне всего объекта (например Task).
Так что небольшой кусок кода, который показывает как можно отслеживать следующие вещи:
- Изменение атрибута (свойства) объекта — addPropertyChangeListener
- Предобработка глобальных событий (сохранение например) объекта — addPreprocessListener
- Постобработка глобальных событий — addPostprocessListener
Самое сложное — хоть убей не помню, где же есть описание вот этого:
String str = ev.getOperation();
if (str.equals(«update«))
Ну а вот и сам кусок кода:
package com.starbase.starteam.task;
public class TaskForm extends JPanel {
public static JFrame f;
private static DefaultNavigatorPanel defNav;
ItemCatcher itemCatch = new ItemCatcher();
public TaskForm() {
}
void jbInit() throws Exception {
}
public static void main(String[] args) {
}
private void onLoadItem() {
}
class ItemCatcher extends JComponent implements ItemDisplayListener {
ItemCatcher() {
}
public void refreshDisplay() {
// Do nothing
}
public void setItem(ItemWrapper item) {
Container con = this.getParent().getParent();
defNav = (DefaultNavigatorPanel) con.getParent();
item.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
onLoadItem();
}
});
defNav.navigator.addPreprocessListener(new PreprocessListener() {
public void preprocess(PreprocessEvent ev) throws AbortException {
String str = ev.getOperation();
if (str.equals(«update»)) {
}
});
defNav.navigator.addPostprocessListener(new PostprocessListener() {
public void postprocess(PostprocessEvent ev) {
String str = ev.getOperation();
if (str.equals(«update»)) {
}
}
});
}
}
Если что — спрашивайте. Постараюсь помочь 