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 }