Statistics
| Revision:

gvsig-vectorediting / org.gvsig.vectorediting / trunk / org.gvsig.vectorediting / org.gvsig.vectorediting.lib / org.gvsig.vectorediting.lib.impl / src / main / java / org / gvsig / vectorediting / lib / impl / DefaultEditingManager.java @ 22

History | View | Annotate | Download (4.31 KB)

1
/*
2
 * Copyright 2014 DiSiD Technologies S.L.L. All rights reserved.
3
 * 
4
 * Project  : DiSiD org.gvsig.vectorediting.lib.impl 
5
 * SVN Id   : $Id$
6
 */
7
package org.gvsig.vectorediting.lib.impl;
8

    
9
import org.gvsig.app.ApplicationLocator;
10
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
11
import org.gvsig.editing.EditingNotification;
12
import org.gvsig.editing.EditingNotificationManager;
13
import org.gvsig.fmap.dal.exception.DataException;
14
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
15
import org.gvsig.fmap.mapcontrol.MapControl;
16
import org.gvsig.fmap.mapcontrol.MapControlLocator;
17
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
18
import org.gvsig.tools.dynobject.DynObject;
19
import org.gvsig.tools.service.AbstractManager;
20
import org.gvsig.tools.service.Service;
21
import org.gvsig.tools.service.ServiceException;
22
import org.gvsig.utils.console.ResponseListener;
23
import org.gvsig.vectorediting.lib.api.EditingBehavior;
24
import org.gvsig.vectorediting.lib.api.EditingManager;
25
import org.gvsig.vectorediting.lib.api.EditingService;
26
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
27
import org.gvsig.vectorediting.lib.spi.EditingProvider;
28
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
29
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
30
import org.slf4j.Logger;
31
import org.slf4j.LoggerFactory;
32

    
33
public class DefaultEditingManager extends AbstractManager implements
34
    EditingManager {
35

    
36
  private static final Logger logger = LoggerFactory
37
      .getLogger(EditingManager.class);
38

    
39
  public DefaultEditingManager() {
40
    super(new DefaultEditingProviderManager());
41
    // TODO Auto-generated constructor stub
42
  }
43

    
44
  public Service getService(DynObject arg0) throws ServiceException {
45
    // TODO Auto-generated method stub
46
    EditingProvider provider = (EditingProvider) EditingProviderLocator
47
        .getProviderManager().createProvider(arg0,
48
            new DefaultEditingProviderServices());
49
    return new DefaultEditingService(provider);
50
  }
51

    
52
  public EditingServiceInfo getServiceInfo(String toolName) {
53
    // TODO Auto-generated method stub
54
    return null;
55
  }
56

    
57
  public void activateTool(String name, MapControl mapControl) {
58
    // TODO Auto-generated method stub
59
    if (mapControl != null && mapControl.hasTool("VectorEditing")) {
60
      EditingBehavior behavior = (EditingBehavior) mapControl
61
          .getMapTool("VectorEditing");
62
      behavior.activateTool(name);
63
    }
64
  }
65

    
66
  public EditingService getEditingService(String name, FLyrVect layer) {
67
    try {
68
      DynObject params = this.createServiceParameters(name);
69
      params.setDynValue(EditingProviderFactory.LAYER_FIELD, layer);
70
      return (EditingService) this.getService(params);
71
    }
72
    catch (ServiceException e) {
73
      // TODO Auto-generated catch block
74
      e.printStackTrace();
75
    }
76

    
77
    return null;
78
  }
79

    
80
  public void beginEdition(FLyrVect layer, DefaultViewPanel view)
81
      throws DataException {
82

    
83
    EditingNotificationManager editingNotificationManager = MapControlLocator
84
        .getEditingNotificationManager();
85

    
86
    EditingNotification notification = editingNotificationManager
87
        .notifyObservers(this, EditingNotification.BEFORE_ENTER_EDITING_STORE,
88
            view.getDocument(), layer);
89

    
90
    if (notification.isCanceled()) {
91
      logger.info("Edit layer '" + layer.getName()
92
          + "' canceled by somme observer.");
93
      throw new RuntimeException("Edit layer '" + layer.getName()
94
          + "' canceled.");
95
    }
96

    
97
    initFocus(view);
98
    view.showConsole();
99

    
100
    layer.getFeatureStore().edit();
101
    layer.getFeatureStore().addObserver(view);
102
    layer.getFeatureStore().addObserver(view.getMapControl());
103

    
104
    ApplicationLocator.getManager().refreshMenusAndToolBars();
105

    
106
    editingNotificationManager.notifyObservers(this,
107
        EditingNotification.AFTER_ENTER_EDITING_STORE, view.getDocument(),
108
        layer);
109
  }
110

    
111
  private void initFocus(DefaultViewPanel view) {
112

    
113
    MapControl mapControl = view.getMapControl();
114

    
115
    if (!mapControl.hasTool("VectorEditing")) {
116
      Behavior vectorEditing = new DefaultEditingBehavior(mapControl);
117
      mapControl.addBehavior("VectorEditing", vectorEditing);
118
    }
119

    
120
    view.addConsoleListener("cad", new ResponseListener() {
121
      public void acceptResponse(String response) {
122
        System.out.println(response);
123
      }
124
    });
125
    
126
    mapControl.setTool("VectorEditing");
127
  }
128
}