1 19 20 28 29 package org.netbeans.modules.xml.schema.abe; 30 31 import java.beans.PropertyChangeEvent ; 32 import java.beans.PropertyChangeListener ; 33 import javax.swing.SwingUtilities ; 34 import org.netbeans.modules.xml.axi.AXIComponent; 35 36 40 public abstract class ModelEventMediator implements PropertyChangeListener { 41 42 ABEBaseDropPanel uiPeer; 43 AXIComponent modelPeer; 44 45 protected ModelEventMediator(ABEBaseDropPanel uiPeer, AXIComponent modelPeer) { 46 this.uiPeer = uiPeer; 47 this.modelPeer = modelPeer; 48 49 uiPeer.addPropertyChangeListener(ABEBaseDropPanel.PROP_COMPONENT_REMOVED, 50 new PropertyChangeListener (){ 51 public void propertyChange(PropertyChangeEvent evt) { 52 if(evt.getPropertyName().equals(ABEBaseDropPanel.PROP_COMPONENT_REMOVED)) 53 cleanUp(); 54 } 55 }); 56 } 57 58 public abstract void _propertyChange(PropertyChangeEvent pce); 59 60 public void propertyChange(PropertyChangeEvent evt) { 61 if(hasPathToTC()){ 62 _propertyChange(evt); 64 }else{ 65 cleanUp(); 67 } 68 } 69 70 protected boolean hasPathToTC() { 71 if(uiPeer != null) 72 return (SwingUtilities.getAncestorOfClass(InstanceDesignerPanel.class, uiPeer) != null); 73 else{ 74 modelPeer = null; 75 return false; 76 } 77 } 78 79 protected void cleanUp(){ 80 if(modelPeer != null){ 81 if(modelPeer.getModel() != null) 82 modelPeer.removePropertyChangeListener(this); 83 } 84 modelPeer = null; 85 uiPeer = null; 86 } 87 88 } 89 | Popular Tags |