Revision 54 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.main/src/main/java/org/gvsig/vectorediting/main/Main.java
Main.java | ||
---|---|---|
41 | 41 |
import javax.swing.WindowConstants; |
42 | 42 |
|
43 | 43 |
import org.cresques.cts.IProjection; |
44 |
import org.gvsig.editing.EditingNotificationManager; |
|
45 | 44 |
import org.gvsig.fmap.crs.CRSFactory; |
46 | 45 |
import org.gvsig.fmap.dal.DALLocator; |
47 | 46 |
import org.gvsig.fmap.dal.DataManager; |
... | ... | |
51 | 50 |
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
52 | 51 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
53 | 52 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
53 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
54 |
import org.gvsig.fmap.mapcontext.MapContext; |
|
54 | 55 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
55 | 56 |
import org.gvsig.fmap.mapcontext.MapContextManager; |
56 | 57 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException; |
57 | 58 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
58 |
import org.gvsig.fmap.mapcontext.layers.LayerFactory; |
|
59 | 59 |
import org.gvsig.fmap.mapcontext.layers.order.impl.TrivialLayerOrderManager; |
60 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
|
60 | 61 |
import org.gvsig.fmap.mapcontrol.MapControl; |
61 | 62 |
import org.gvsig.fmap.mapcontrol.MapControlCreationException; |
62 | 63 |
import org.gvsig.fmap.mapcontrol.MapControlLocator; |
63 | 64 |
import org.gvsig.fmap.mapcontrol.MapControlManager; |
65 |
import org.gvsig.fmap.mapcontrol.tools.PanListenerImpl; |
|
66 |
import org.gvsig.fmap.mapcontrol.tools.ZoomInListenerImpl; |
|
67 |
import org.gvsig.fmap.mapcontrol.tools.ZoomOutRightButtonListener; |
|
64 | 68 |
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior; |
69 |
import org.gvsig.fmap.mapcontrol.tools.Behavior.MoveBehavior; |
|
70 |
import org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior; |
|
71 |
import org.gvsig.fmap.mapcontrol.tools.Behavior.RectangleBehavior; |
|
65 | 72 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
66 |
import org.gvsig.vectorediting.lib.api.EditingBehavior; |
|
67 | 73 |
import org.gvsig.vectorediting.lib.api.EditingLocator; |
68 | 74 |
import org.gvsig.vectorediting.lib.api.EditingManager; |
69 |
import org.gvsig.vectorediting.lib.impl.DefaultEditingBehavior; |
|
75 |
import org.gvsig.vectorediting.lib.prov.circlecr.CircleCREditingProviderFactory; |
|
76 |
import org.gvsig.vectorediting.lib.prov.insertpoint.InsertPointEditingProviderFactory; |
|
70 | 77 |
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator; |
71 | 78 |
import org.gvsig.vectorediting.lib.spi.EditingProviderManager; |
79 |
import org.gvsig.vectorediting.swing.api.EditingBehavior; |
|
80 |
import org.gvsig.vectorediting.swing.api.EditingSwingLocator; |
|
81 |
import org.gvsig.vectorediting.swing.api.EditingSwingManager; |
|
82 |
import org.gvsig.vectorediting.swing.impl.DefaultEditingBehavior; |
|
72 | 83 |
import org.slf4j.Logger; |
73 | 84 |
import org.slf4j.LoggerFactory; |
74 | 85 |
|
... | ... | |
84 | 95 |
|
85 | 96 |
final EditingManager manager; |
86 | 97 |
|
98 |
final EditingSwingManager swingManager; |
|
99 |
|
|
87 | 100 |
final EditingProviderManager providerManager; |
88 | 101 |
|
89 | 102 |
final MapControlManager mapControlManager; |
... | ... | |
98 | 111 |
|
99 | 112 |
FeatureStore store; |
100 | 113 |
|
114 |
FLyrVect currentLayer; |
|
115 |
|
|
101 | 116 |
final String DEFAULT_CRS_CODE = "EPSG:4326"; |
102 | 117 |
|
103 | 118 |
IProjection defaultProjection; |
... | ... | |
108 | 123 |
|
109 | 124 |
JFrame addLayerFrame; |
110 | 125 |
|
126 |
JFrame paletteTools; |
|
127 |
|
|
111 | 128 |
JTextField shpField; |
112 | 129 |
|
113 | 130 |
// Actions |
131 |
AbstractAction pan; |
|
132 |
|
|
133 |
AbstractAction zoom; |
|
134 |
|
|
135 |
AbstractAction zoomall; |
|
136 |
|
|
137 |
AbstractAction cleanMap; |
|
138 |
|
|
139 |
AbstractAction openAddLayerDialog; |
|
140 |
|
|
141 |
AbstractAction openPaletteTools; |
|
142 |
|
|
114 | 143 |
AbstractAction editingExtensionAction; |
115 | 144 |
|
116 |
AbstractAction insertPointAction;
|
|
145 |
AbstractAction insertPoint; |
|
117 | 146 |
|
118 | 147 |
AbstractAction exit; |
119 | 148 |
|
120 | 149 |
AbstractAction addLayer; |
121 | 150 |
|
122 |
AbstractAction openAddLayerDialog;
|
|
151 |
AbstractAction circleCr;
|
|
123 | 152 |
|
124 | 153 |
public static void main(String args[]) { |
125 | 154 |
new DefaultLibrariesInitializer().fullInitialize(); |
... | ... | |
129 | 158 |
|
130 | 159 |
public Main() { |
131 | 160 |
manager = EditingLocator.getManager(); |
161 |
swingManager = EditingSwingLocator.getSwingManager(); |
|
132 | 162 |
providerManager = EditingProviderLocator.getProviderManager(); |
133 | 163 |
mapControlManager = MapControlLocator.getMapControlManager(); |
134 | 164 |
dataManager = DALLocator.getDataManager(); |
... | ... | |
142 | 172 |
try { |
143 | 173 |
mapControl = mapControlManager.createJMapControlPanel(); |
144 | 174 |
editingBehavior = new DefaultEditingBehavior(mapControl); |
145 |
}
|
|
146 |
catch (MapControlCreationException e) {
|
|
147 |
// TODO Auto-generated catch block
|
|
148 |
e.printStackTrace();
|
|
149 |
}
|
|
175 |
mapControl.addBehavior("zoom", new Behavior[] {
|
|
176 |
new RectangleBehavior(new ZoomInListenerImpl(mapControl)),
|
|
177 |
new PointBehavior(new ZoomOutRightButtonListener(mapControl)) });
|
|
178 |
mapControl.addBehavior("pan", new MoveBehavior(new PanListenerImpl(
|
|
179 |
mapControl)));
|
|
150 | 180 |
|
151 |
IProjection defaultProjection = CRSFactory.getCRS(DEFAULT_CRS_CODE); |
|
152 |
mapControl.getViewPort().setProjection(defaultProjection); |
|
153 |
mapControl.addBehavior("VectorEditing", (Behavior) editingBehavior); |
|
154 | 181 |
|
155 |
// Create actions |
|
156 |
try { |
|
182 |
IProjection defaultProjection = CRSFactory.getCRS(DEFAULT_CRS_CODE); |
|
183 |
mapControl.getViewPort().setProjection(defaultProjection); |
|
184 |
mapControl.addBehavior("VectorEditing", (Behavior) editingBehavior); |
|
185 |
|
|
186 |
// Create actions |
|
157 | 187 |
createActions(); |
158 | 188 |
} |
159 | 189 |
catch (MapControlCreationException e) { |
160 |
// TODO Auto-generated catch block |
|
161 |
e.printStackTrace(); |
|
190 |
logger.error("Can't create mapControl"); |
|
162 | 191 |
} |
163 | 192 |
|
164 | 193 |
// Create JFrame to show data |
165 | 194 |
mainFrame = new JFrame("Editing test app"); |
166 | 195 |
mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); |
167 |
mainFrame.setPreferredSize(new Dimension(600, 480));
|
|
196 |
mainFrame.setPreferredSize(new Dimension(800, 680));
|
|
168 | 197 |
mainFrame.add(mapControl, BorderLayout.CENTER); |
169 | 198 |
|
170 | 199 |
// Create JFrame to add layer |
171 | 200 |
createAddLayerJFrame(); |
172 | 201 |
|
202 |
// create JFrame palette tools |
|
203 |
createShowPaletteTools(); |
|
204 |
|
|
173 | 205 |
// Create menu bar |
174 | 206 |
createMenu(); |
175 | 207 |
|
... | ... | |
178 | 210 |
|
179 | 211 |
// Display the window. |
180 | 212 |
mainFrame.pack(); |
181 |
mainFrame.setLocation(100, 100);
|
|
213 |
mainFrame.setLocation(500, 0);
|
|
182 | 214 |
mainFrame.setVisible(true); |
183 | 215 |
} |
184 | 216 |
|
... | ... | |
202 | 234 |
|
203 | 235 |
} |
204 | 236 |
|
237 |
private void createShowPaletteTools() { |
|
238 |
paletteTools = new JFrame("Palette tools"); |
|
239 |
paletteTools.setLayout(new GridLayout(20, 1, 1, 5)); |
|
240 |
paletteTools.setPreferredSize(new Dimension(200, 600)); |
|
241 |
paletteTools.pack(); |
|
242 |
paletteTools.setLocation(0, 0); |
|
243 |
paletteTools.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); |
|
244 |
|
|
245 |
JButton insertPointButton = new JButton(insertPoint); |
|
246 |
JButton circleCrButton = new JButton(circleCr); |
|
247 |
|
|
248 |
paletteTools.add(new JLabel("Insert tools")); |
|
249 |
paletteTools.add(insertPointButton); |
|
250 |
paletteTools.add(circleCrButton); |
|
251 |
} |
|
252 |
|
|
205 | 253 |
private void createToolBar() { |
206 | 254 |
JToolBar toolBar = new JToolBar(); |
207 | 255 |
|
208 | 256 |
toolBar.add(new JButton(openAddLayerDialog)); |
209 | 257 |
toolBar.add(new JButton(editingExtensionAction)); |
210 |
toolBar.add(new JButton(insertPointAction)); |
|
258 |
toolBar.add(new JButton(pan)); |
|
259 |
toolBar.add(new JButton(zoom)); |
|
260 |
toolBar.add(new JButton(zoomall)); |
|
261 |
toolBar.add(new JButton(cleanMap)); |
|
262 |
toolBar.add(new JButton(openPaletteTools)); |
|
211 | 263 |
|
212 | 264 |
mainFrame.add(toolBar, BorderLayout.PAGE_START); |
213 | 265 |
} |
... | ... | |
222 | 274 |
|
223 | 275 |
JMenu menuLayer = new JMenu("Layer"); |
224 | 276 |
menuLayer.add(new JMenuItem(openAddLayerDialog)); |
277 |
menuLayer.add(new JMenuItem(pan)); |
|
278 |
menuLayer.add(new JMenuItem(zoom)); |
|
279 |
menuLayer.add(new JMenuItem(zoomall)); |
|
280 |
menuLayer.add(new JMenuItem(cleanMap)); |
|
225 | 281 |
|
226 | 282 |
JMenu menuTool = new JMenu("Tools"); |
227 | 283 |
menuTool.add(new JMenuItem(editingExtensionAction)); |
228 | 284 |
menuTool.addSeparator(); |
229 |
menuTool.add(new JMenuItem(insertPointAction)); |
|
285 |
menuTool.add(new JMenuItem(insertPoint)); |
|
286 |
menuTool.add(new JMenuItem(circleCr)); |
|
230 | 287 |
|
231 | 288 |
menuBar.add(menuFile); |
232 | 289 |
menuBar.add(menuTool); |
... | ... | |
237 | 294 |
@SuppressWarnings("serial") |
238 | 295 |
private void createActions() throws MapControlCreationException { |
239 | 296 |
|
297 |
pan = new AbstractAction("Pan") { |
|
298 |
|
|
299 |
public void actionPerformed(ActionEvent e) { |
|
300 |
mapControl.setTool("pan"); |
|
301 |
} |
|
302 |
}; |
|
303 |
|
|
304 |
zoom = new AbstractAction("Zoom") { |
|
305 |
|
|
306 |
public void actionPerformed(ActionEvent e) { |
|
307 |
mapControl.setTool("zoom"); |
|
308 |
} |
|
309 |
}; |
|
310 |
|
|
311 |
zoomall = new AbstractAction("Zoom all") { |
|
312 |
|
|
313 |
public void actionPerformed(ActionEvent e) { |
|
314 |
zoomAll(); |
|
315 |
} |
|
316 |
}; |
|
317 |
|
|
318 |
cleanMap = new AbstractAction("Clean Map") { |
|
319 |
|
|
320 |
public void actionPerformed(ActionEvent e) { |
|
321 |
MapContext mapContext = mapControl.getMapContext(); |
|
322 |
mapContext.beginAtomicEvent(); |
|
323 |
while (mapContext.getLayers().getLayersCount() > 0) { |
|
324 |
mapContext.getLayers().removeLayer(0); |
|
325 |
} |
|
326 |
mapContext.endAtomicEvent(); |
|
327 |
} |
|
328 |
}; |
|
329 |
|
|
240 | 330 |
openAddLayerDialog = new AbstractAction("Add layer") { |
241 | 331 |
|
242 | 332 |
public void actionPerformed(ActionEvent e) { |
... | ... | |
244 | 334 |
} |
245 | 335 |
}; |
246 | 336 |
|
337 |
openPaletteTools = new AbstractAction("Show palette tools") { |
|
338 |
|
|
339 |
public void actionPerformed(ActionEvent e) { |
|
340 |
paletteTools.setVisible(true); |
|
341 |
} |
|
342 |
}; |
|
343 |
|
|
247 | 344 |
addLayer = new AbstractAction("OK") { |
248 | 345 |
|
249 | 346 |
public void actionPerformed(ActionEvent e) { |
... | ... | |
270 | 367 |
editingExtensionAction = new AbstractAction("EditingExtension") { |
271 | 368 |
|
272 | 369 |
public void actionPerformed(ActionEvent e) { |
273 |
mapControl.setTool("VectorEditing"); |
|
274 | 370 |
try { |
275 |
store.edit();
|
|
371 |
swingManager.beginEdition(currentLayer, mapControl);
|
|
276 | 372 |
} |
277 | 373 |
catch (DataException e1) { |
278 |
// TODO Auto-generated catch block |
|
279 | 374 |
e1.printStackTrace(); |
280 | 375 |
} |
281 |
|
|
282 | 376 |
updateControls(); |
283 | 377 |
} |
284 | 378 |
}; |
285 | 379 |
|
286 |
insertPointAction = new AbstractAction("InsertPointAction") {
|
|
380 |
insertPoint = new AbstractAction("InsertPointAction") { |
|
287 | 381 |
|
288 | 382 |
public void actionPerformed(ActionEvent e) { |
289 |
activateTool("InsertPoint"); |
|
383 |
|
|
384 |
swingManager.activateTool( |
|
385 |
InsertPointEditingProviderFactory.PROVIDER_NAME, mapControl); |
|
290 | 386 |
} |
291 | 387 |
|
292 | 388 |
}; |
293 |
insertPointAction.setEnabled(false); |
|
294 | 389 |
|
390 |
circleCr = new AbstractAction("CircleCrAction") { |
|
391 |
|
|
392 |
public void actionPerformed(ActionEvent e) { |
|
393 |
swingManager.activateTool(CircleCREditingProviderFactory.PROVIDER_NAME, |
|
394 |
mapControl); |
|
395 |
} |
|
396 |
}; |
|
295 | 397 |
} |
296 | 398 |
|
297 | 399 |
private void updateControls() { |
298 |
insertPointAction.setEnabled(true); |
|
400 |
editingExtensionAction.setEnabled(false); |
|
401 |
insertPoint.setEnabled(true); |
|
402 |
circleCr.setEnabled(true); |
|
299 | 403 |
} |
300 | 404 |
|
301 |
private void activateTool(String name) { |
|
302 |
manager.activateTool(name, mapControl); |
|
303 |
} |
|
304 |
|
|
305 |
public void addLayer(String shpPath) |
|
306 |
throws InitializeException, ProviderNotRegisteredException, |
|
307 |
ValidateDataParametersException, LoadLayerException { |
|
405 |
public void addLayer(String shpPath) throws InitializeException, |
|
406 |
ProviderNotRegisteredException, ValidateDataParametersException, |
|
407 |
LoadLayerException { |
|
308 | 408 |
DataStoreParameters params; |
309 | 409 |
params = dataManager.createStoreParameters("Shape"); |
310 |
|
|
311 |
String dbfPath = shpPath.substring(0, shpPath.length()-3).concat("dbf");
|
|
312 |
String shxPath = shpPath.substring(0, shpPath.length()-3).concat("shx");
|
|
313 |
|
|
410 |
|
|
411 |
String dbfPath = shpPath.substring(0, shpPath.length() - 3).concat("dbf");
|
|
412 |
String shxPath = shpPath.substring(0, shpPath.length() - 3).concat("shx");
|
|
413 |
|
|
314 | 414 |
File shpFile = new File(shpPath); |
315 | 415 |
File dbFile = new File(dbfPath); |
316 | 416 |
File shxFile = new File(shxPath); |
... | ... | |
325 | 425 |
FLayer layer = mapContextManager.createLayer("prueba", store); |
326 | 426 |
mapControl.getMapContext().setOrderManager(layerOrderManager); |
327 | 427 |
mapControl.getMapContext().getLayers().addLayer(layer); |
428 |
mapControl.getMapContext().getLayers().setActive(true); |
|
429 |
try { |
|
430 |
currentLayer = (FLyrVect) layer; |
|
431 |
} |
|
432 |
catch (Exception e) { |
|
433 |
logger.error("Can't load layer " + e.getMessage()); |
|
434 |
} |
|
435 |
|
|
328 | 436 |
} |
329 | 437 |
|
438 |
private void zoomAll() { |
|
439 |
MapContext mapContext = mapControl.getMapContext(); |
|
440 |
Envelope all = mapContext.getLayers().getFullEnvelope(); |
|
441 |
logger.info("Full extdents " + all.toString()); |
|
442 |
mapContext.getViewPort().setEnvelope(all); |
|
443 |
mapContext.invalidate(); |
|
444 |
} |
|
445 |
|
|
330 | 446 |
public JFrame getJFrame() { |
331 | 447 |
return this.addLayerFrame; |
332 | 448 |
} |
Also available in: Unified diff