1 package org.xmlhammer.gui.util;
2
3 import java.awt.event.ItemEvent;
4 import java.awt.event.ItemListener;
5
6 import javax.swing.JComboBox;
7
8 import org.apache.log4j.Logger;
9 import org.xmlhammer.gui.Page;
10
11 public class UndoableComboBoxItemListener implements ItemListener {
12 private Object deselectedItem = null;
13 private JComboBox combo = null;
14 private Page page = null;
15
16 public UndoableComboBoxItemListener(Page page, JComboBox combo) {
17 this.page = page;
18 this.combo = combo;
19 }
20
21 public void itemStateChanged(ItemEvent event) {
22 Logger.getLogger(getClass()).debug("itemStateChanged("+event.paramString()+")");
23
24 if ( event.getStateChange() == ItemEvent.DESELECTED) {
25 deselectedItem = event.getItem();
26 } else {
27 if (!equals(deselectedItem, event.getItem()) && page != null) {
28 page.getProjectView().getUndoManager().addEdit(new UndoableComboBoxEdit(page, combo, event.getItem(), deselectedItem));
29 }
30
31 deselectedItem = null;
32 }
33 }
34
35 protected boolean equals(Object item1, Object item2) {
36 if ( item1 != item2) {
37 if (item1 == null || item2 == null) {
38 return false;
39 }
40
41 return item1.toString().equals(item2.toString());
42 }
43
44 return true;
45 }
46 }