View Javadoc

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  }