Revision 1198 org.gvsig.attributeeditor/trunk/org.gvsig.attributeeditor/org.gvsig.attributeeditor.mapcontrol/src/main/java/org/gvsig/fmap/mapcontrol/tools/Listeners/AttributeEditorPointListener.java

View differences:

AttributeEditorPointListener.java
29 29
import java.awt.event.InputEvent;
30 30
import java.awt.event.MouseEvent;
31 31
import java.util.function.Predicate;
32
import javax.swing.Action;
32 33

  
33 34
import javax.swing.JOptionPane;
34 35
import javax.swing.SwingUtilities;
......
42 43

  
43 44
import org.gvsig.featureform.swing.CreateJFeatureFormException;
44 45
import org.gvsig.featureform.swing.JFeaturesForm;
46
import org.gvsig.fmap.dal.DataStoreProviderFactory;
45 47
import org.gvsig.fmap.dal.exception.DataException;
46 48
import org.gvsig.fmap.dal.feature.FeatureQuery;
47 49
import org.gvsig.fmap.dal.feature.FeatureSelection;
48 50
import org.gvsig.fmap.dal.feature.FeatureSet;
49 51
import org.gvsig.fmap.dal.feature.FeatureStore;
52
import org.gvsig.fmap.dal.feature.FeatureStoreNotification;
53
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory;
50 54
import org.gvsig.fmap.dal.feature.FeatureType;
51 55
import org.gvsig.fmap.dal.swing.DALSwingLocator;
52 56
import org.gvsig.fmap.dal.swing.DataSwingManager;
......
70 74
import org.gvsig.tools.dispose.DisposeUtils;
71 75
import org.gvsig.tools.evaluator.Evaluator;
72 76
import org.gvsig.tools.i18n.I18nManager;
77
import org.gvsig.tools.observer.Observable;
78
import org.gvsig.tools.observer.Observer;
73 79
import org.gvsig.tools.service.ServiceException;
74 80
import org.gvsig.tools.swing.api.ToolsSwingLocator;
75 81
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE;
......
92 98
    private final MapControl mapControl;
93 99
    private JFeaturesForm form;
94 100
    private Predicate<FeatureStore> refreshCallback;
101
    private Observer refreshFormObserver;
95 102

  
96 103
    public AttributeEditorPointListener(MapControl mapControl, JFeaturesForm form) {
97 104
        super();
98 105
        this.mapControl = mapControl;
99 106
        this.form = form;
107
        this.refreshFormObserver = (Observable o, Object o1) -> {
108
            doRefreshFormObserver(o, o1);
109
        };
100 110
    }
101 111

  
102 112
    public AttributeEditorPointListener(MapControl mapControl) {
103 113
        super();
104 114
        this.mapControl = mapControl;
115
        this.refreshFormObserver = (Observable o, Object o1) -> {
116
            doRefreshFormObserver(o, o1);
117
        };
118
        
105 119
    }
106 120

  
107 121
    private FLyrVect getLayer() {
......
204 218
    }
205 219
    
206 220
    private void disposeForm() {
221
        if( this.form != null ) {
222
            FeatureStore store = this.form.getFeatureStore();
223
            if( store!=null ) {
224
                store.deleteObserver(this.refreshFormObserver);
225
            }
226
        }
207 227
        DisposeUtils.disposeQuietly(this.form);
208 228
        this.form = null;
209 229
    }
......
235 255
                        break;
236 256
                }
237 257
            });
258
            store.addObserver(this.refreshFormObserver);
238 259
        }
239 260
        return this.form;
240 261
    }
262
    
263
    private void doRefreshFormObserver(Observable o, Object o1) {
264
        if( this.form == null || 
265
                !(o instanceof FeatureStore && o1 instanceof FeatureStoreNotification ) ) {
266
            return;
267
        }
268
        try {
269
            FeatureStoreNotification n = (FeatureStoreNotification) o1;
270
            if( n.getType().equalsIgnoreCase(FeatureStoreNotification.AFTER_REFRESH) ) {
271
                Action refreshAction = this.form.getFormset().getAction(JFeaturesForm.REFRESHFORM_ACTION);
272
                if( refreshAction!=null ) {
273
                    refreshAction.actionPerformed(null);
274
                }
275
            }
276
        } catch(Exception ex) {
277
            LOGGER.warn("Can't refresh attribute editor",ex);
278
        }
279
    }
241 280

  
242 281
    private FeatureQuery queryByPoint(Point point, double tol) throws CreateGeometryException, DataException {
243 282
        GeometryManager manager = GeometryLocator.getGeometryManager();

Also available in: Unified diff