Revision 6676 trunk/applications/appgvSIG/src/com/iver/cit/gvsig/CopyPasteExtension.java
CopyPasteExtension.java | ||
---|---|---|
39 | 39 |
import com.iver.cit.gvsig.gui.layout.fframes.IFFrame; |
40 | 40 |
import com.iver.cit.gvsig.gui.project.OpenException; |
41 | 41 |
import com.iver.cit.gvsig.gui.project.SaveException; |
42 |
import com.iver.cit.gvsig.gui.toc.AbstractTocContextMenuAction; |
|
42 | 43 |
import com.iver.cit.gvsig.gui.toc.FPopupMenu; |
44 |
import com.iver.cit.gvsig.gui.toc.ITocItem; |
|
43 | 45 |
import com.iver.cit.gvsig.gui.toc.TocMenuEntry; |
44 |
import com.iver.cit.gvsig.project.AbstractContextMenuAction; |
|
46 |
import com.iver.cit.gvsig.project.AbstractDocumentContextMenuAction;
|
|
45 | 47 |
import com.iver.cit.gvsig.project.Project; |
46 | 48 |
import com.iver.cit.gvsig.project.ProjectElement; |
47 | 49 |
import com.iver.cit.gvsig.project.ProjectMap; |
... | ... | |
56 | 58 |
public class CopyPasteExtension extends Extension { |
57 | 59 |
|
58 | 60 |
public void initialize() { |
61 |
ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance(); |
|
62 |
|
|
63 |
|
|
64 |
|
|
59 | 65 |
// TOC |
60 |
myTocMenuEntry copy = new CopyTocMenuEntry();
|
|
61 |
myTocMenuEntry cut = new CutTocMenuEntry();
|
|
62 |
myTocMenuEntry paste = new PasteTocMenuEntry();
|
|
66 |
MyTocMenuEntry copy = new CopyTocMenuEntry();
|
|
67 |
MyTocMenuEntry cut = new CutTocMenuEntry();
|
|
68 |
MyTocMenuEntry paste = new PasteTocMenuEntry();
|
|
63 | 69 |
Utiles utiles = new Utiles(); |
64 | 70 |
copy.setUtiles(utiles); |
65 | 71 |
cut.setUtiles(utiles); |
66 | 72 |
paste.setUtiles(utiles); |
73 |
|
|
74 |
extensionPoints.add("View_TocActions","Copy","Copy selectes layers to system clipboard",copy); |
|
75 |
extensionPoints.add("View_TocActions","Cut","Cut selectes layers to system clipboard", cut); |
|
76 |
extensionPoints.add("View_TocActions","Paste","Paste layers from system clipboard",paste); |
|
77 |
|
|
78 |
/* |
|
67 | 79 |
FPopupMenu.addEntry(copy); |
68 | 80 |
FPopupMenu.addEntry(cut); |
69 | 81 |
FPopupMenu.addEntry(paste); |
82 |
*/ |
|
70 | 83 |
|
71 |
// ProjectWindow |
|
72 |
ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance(); |
|
84 |
// ProjectWindow |
|
73 | 85 |
CopyProjectElement copyProjectElement = new CopyProjectElement(); |
74 | 86 |
CutProjectElement cutProjectElement = new CutProjectElement(); |
75 | 87 |
PasteProjectElement pasteProjectElementView = new PasteProjectElement(); |
... | ... | |
87 | 99 |
pasteProjectElementMap.setType("maps"); |
88 | 100 |
|
89 | 101 |
|
90 |
extensionPoints.add("DocumentActions_View","Copy",copyProjectElement); |
|
91 |
extensionPoints.add("DocumentActions_View","Cut",cutProjectElement); |
|
92 |
extensionPoints.add("DocumentActions_View","Paste",pasteProjectElementView); |
|
102 |
extensionPoints.add("DocumentActions_View","Copy","Copy selectes documento to system clipboard",copyProjectElement);
|
|
103 |
extensionPoints.add("DocumentActions_View","Cut","Cut selectes documento to system clipboard", cutProjectElement);
|
|
104 |
extensionPoints.add("DocumentActions_View","Paste","Paste views from system clipboard",pasteProjectElementView);
|
|
93 | 105 |
|
94 | 106 |
|
95 |
extensionPoints.add("DocumentActions_Table","Copy",copyProjectElement); |
|
96 |
extensionPoints.add("DocumentActions_Table","Cut",cutProjectElement); |
|
97 |
extensionPoints.add("DocumentActions_Table","Paste",pasteProjectElementTable); |
|
107 |
extensionPoints.add("DocumentActions_Table","Copy","Copy selectes documento to system clipboard",copyProjectElement);
|
|
108 |
extensionPoints.add("DocumentActions_Table","Cut","Cut selectes documento to system clipboard", cutProjectElement);
|
|
109 |
extensionPoints.add("DocumentActions_Table","Paste","Paste tables from system clipboard",pasteProjectElementTable);
|
|
98 | 110 |
|
99 |
extensionPoints.add("DocumentActions_Map","Copy",copyProjectElement); |
|
100 |
extensionPoints.add("DocumentActions_Map","Cut",cutProjectElement); |
|
101 |
extensionPoints.add("DocumentActions_Map","Paste",pasteProjectElementMap); |
|
111 |
extensionPoints.add("DocumentActions_Map","Copy","Copy selectes documento to system clipboard",copyProjectElement);
|
|
112 |
extensionPoints.add("DocumentActions_Map","Cut","Cut selectes documento to system clipboard", cutProjectElement);
|
|
113 |
extensionPoints.add("DocumentActions_Map","Paste","Paste maps from system clipboard",pasteProjectElementMap);
|
|
102 | 114 |
|
103 | 115 |
} |
104 | 116 |
|
... | ... | |
118 | 130 |
|
119 | 131 |
} |
120 | 132 |
|
121 |
abstract class MyDocumentAction extends AbstractContextMenuAction implements IExtensionBuilder { |
|
133 |
abstract class MyDocumentAction extends AbstractDocumentContextMenuAction implements IExtensionBuilder {
|
|
122 | 134 |
protected Utiles utiles; |
123 | 135 |
|
124 | 136 |
public void setUtiles(Utiles utiles) { |
... | ... | |
146 | 158 |
} |
147 | 159 |
|
148 | 160 |
|
149 |
class CopyProjectElement extends MyDocumentAction{ |
|
161 |
class CopyProjectElement extends MyDocumentAction{ |
|
162 |
public String getDescription() { |
|
163 |
//FIXME: Falta claves |
|
164 |
//return PluginServices.getText(this,"tooltip_copiar_al_portapapeles"); |
|
165 |
return null; |
|
166 |
} |
|
167 |
|
|
150 | 168 |
public int getOrder() { |
169 |
|
|
151 | 170 |
return 0; |
152 | 171 |
} |
153 | 172 |
|
154 |
public boolean isVisible(ProjectElement[] selectedItems) { |
|
173 |
public boolean isVisible(ProjectElement item, ProjectElement[] selectedItems) {
|
|
155 | 174 |
return true; |
156 | 175 |
} |
157 | 176 |
|
158 |
public boolean isEnabled(ProjectElement[] selectedItems) { |
|
177 |
public boolean isEnabled(ProjectElement item, ProjectElement[] selectedItems) {
|
|
159 | 178 |
return selectedItems.length > 0; |
160 | 179 |
} |
161 | 180 |
|
162 | 181 |
|
163 |
public void execute(ProjectElement[] selectedItems) { |
|
182 |
public void execute(ProjectElement item, ProjectElement[] selectedItems) {
|
|
164 | 183 |
XMLEntity xml = this.utiles.generateXMLCopyDocuments(selectedItems); |
165 | 184 |
if (xml == null) { |
166 | 185 |
//TODO: arreglar esto |
... | ... | |
181 | 200 |
|
182 | 201 |
} |
183 | 202 |
|
184 |
class CutProjectElement extends MyDocumentAction { |
|
203 |
class CutProjectElement extends MyDocumentAction { |
|
204 |
public String getDescription() { |
|
205 |
//FIXME: Falta claves |
|
206 |
//return PluginServices.getText(this,"tooltip_cortar_al_portapapeles"); |
|
207 |
return null; |
|
208 |
} |
|
209 |
|
|
185 | 210 |
public int getOrder() { |
186 | 211 |
return 1; |
187 | 212 |
} |
188 | 213 |
|
189 |
public boolean isVisible(ProjectElement[] selectedItems) { |
|
214 |
public boolean isVisible(ProjectElement item, ProjectElement[] selectedItems) {
|
|
190 | 215 |
return true; |
191 | 216 |
} |
192 | 217 |
|
193 |
public boolean isEnabled(ProjectElement[] selectedItems) { |
|
218 |
public boolean isEnabled(ProjectElement item, ProjectElement[] selectedItems) {
|
|
194 | 219 |
return selectedItems.length > 0; |
195 | 220 |
} |
196 | 221 |
|
197 | 222 |
|
198 |
public void execute(ProjectElement[] selectedItems) { |
|
223 |
public void execute(ProjectElement item, ProjectElement[] selectedItems) {
|
|
199 | 224 |
XMLEntity xml = this.utiles.generateXMLCopyDocuments(selectedItems); |
200 | 225 |
if (xml == null) { |
201 | 226 |
//TODO: arreglar esto |
... | ... | |
228 | 253 |
|
229 | 254 |
class PasteProjectElement extends MyDocumentAction { |
230 | 255 |
private String type; |
256 |
|
|
257 |
public String getDescription() { |
|
258 |
//FIXME: Falta claves |
|
259 |
//return PluginServices.getText(this,"tooltip_pegar_desde_el_portapapeles"); |
|
260 |
return null; |
|
261 |
} |
|
262 |
|
|
231 | 263 |
public int getOrder() { |
232 | 264 |
return 2; |
233 | 265 |
} |
... | ... | |
240 | 272 |
return this.type; |
241 | 273 |
} |
242 | 274 |
|
243 |
public boolean isVisible(ProjectElement[] selectedItems) { |
|
275 |
public boolean isVisible(ProjectElement item, ProjectElement[] selectedItems) {
|
|
244 | 276 |
return true; |
245 | 277 |
} |
246 | 278 |
|
247 |
public boolean isEnabled(ProjectElement[] selectedItems) { |
|
279 |
public boolean isEnabled(ProjectElement item, ProjectElement[] selectedItems) {
|
|
248 | 280 |
String sourceString = this.utiles.getFromClipboard(); |
249 | 281 |
if (sourceString == null) return false; |
250 | 282 |
|
... | ... | |
258 | 290 |
} |
259 | 291 |
|
260 | 292 |
|
261 |
public void execute(ProjectElement[] selectedItems) { |
|
293 |
public void execute(ProjectElement item, ProjectElement[] selectedItems) {
|
|
262 | 294 |
String sourceString = this.utiles.getFromClipboard(); |
263 | 295 |
if (sourceString == null) return; |
264 | 296 |
|
... | ... | |
288 | 320 |
|
289 | 321 |
|
290 | 322 |
|
291 |
abstract class myTocMenuEntry extends TocMenuEntry {
|
|
323 |
abstract class MyTocMenuEntry extends AbstractTocContextMenuAction {
|
|
292 | 324 |
protected Utiles utiles; |
293 |
|
|
294 |
protected JMenuItem addMenuEntry(String title) { |
|
295 |
JMenuItem menuEntry = new JMenuItem(title); |
|
296 |
menuEntry.setFont(FPopupMenu.theFont); |
|
297 |
menuEntry.addActionListener(this); |
|
298 |
getMenu().add( menuEntry ); |
|
299 |
return menuEntry; |
|
300 |
} |
|
301 |
|
|
325 |
|
|
302 | 326 |
public void setUtiles(Utiles utiles) { |
303 | 327 |
this.utiles = utiles; |
304 | 328 |
} |
329 |
|
|
330 |
public String getGroup() { |
|
331 |
return "copyPasteLayer"; |
|
332 |
} |
|
333 |
|
|
334 |
public int getGroupOrder() { |
|
335 |
return 60; |
|
336 |
} |
|
305 | 337 |
|
306 | 338 |
} |
307 | 339 |
|
308 |
class CopyTocMenuEntry extends myTocMenuEntry{ |
|
309 |
private JMenuItem properties; |
|
340 |
class CopyTocMenuEntry extends MyTocMenuEntry{ |
|
341 |
public int getOrder() { |
|
342 |
return 0; |
|
343 |
} |
|
344 |
|
|
345 |
public String getText() { |
|
346 |
return PluginServices.getText(this, "copiar"); |
|
347 |
} |
|
348 |
|
|
349 |
public boolean isEnabled(ITocItem item, FLayer[] selectedItems) { |
|
350 |
return selectedItems.length >= 1 && isTocItemBranch(item); |
|
351 |
} |
|
310 | 352 |
|
311 |
public void initialize(FPopupMenu m) { |
|
312 |
super.initialize(m); |
|
313 |
if (getMenu().getComponentCount() > 0) { |
|
314 |
getMenu().addSeparator(); |
|
315 |
} |
|
316 |
properties = addMenuEntry(PluginServices.getText(this, "copiar")); |
|
317 |
|
|
318 |
FLayer[] actives = getMapContext().getLayers().getActives(); |
|
319 |
if (actives.length >= 1 && isTocItemBranch()) { |
|
320 |
properties.setEnabled(true); |
|
321 |
} else { |
|
322 |
properties.setEnabled(false); |
|
323 |
} |
|
324 | 353 |
|
325 |
|
|
326 |
} |
|
327 |
|
|
328 |
public void actionPerformed(ActionEvent e) { |
|
329 |
FLayer[] actives = getMapContext().getLayers().getActives(); |
|
330 |
|
|
331 |
XMLEntity xml = this.utiles.generateXMLCopyLayers(actives); |
|
354 |
public void execute(ITocItem item, FLayer[] selectedItems) { |
|
355 |
XMLEntity xml = this.utiles.generateXMLCopyLayers(selectedItems); |
|
332 | 356 |
if (xml == null) { |
333 | 357 |
//TODO: arreglar esto |
334 | 358 |
return; |
... | ... | |
339 | 363 |
//TODO: arreglar esto |
340 | 364 |
return; |
341 | 365 |
} |
342 |
|
|
343 |
|
|
344 |
/* |
|
345 |
System.out.println("=============================================================="); |
|
346 |
System.out.println(data); |
|
347 |
System.out.println("=============================================================="); |
|
348 |
System.out.flush(); |
|
349 |
*/ |
|
350 | 366 |
|
351 | 367 |
this.utiles.putInClipboard(data); |
352 | 368 |
|
353 | 369 |
} |
354 |
} |
|
355 | 370 |
|
356 |
class CutTocMenuEntry extends myTocMenuEntry{ |
|
357 |
private JMenuItem properties; |
|
358 |
|
|
359 | 371 |
|
360 |
public void initialize(FPopupMenu m) { |
|
361 |
super.initialize(m); |
|
362 |
properties = addMenuEntry(PluginServices.getText(this, "cortar")); |
|
363 |
|
|
364 |
FLayer[] actives = getMapContext().getLayers().getActives(); |
|
365 |
if (actives.length >=1 && isTocItemBranch()) { |
|
366 |
properties.setEnabled(true); |
|
367 |
} else { |
|
368 |
properties.setEnabled(false); |
|
369 |
} |
|
370 |
|
|
371 |
|
|
372 |
} |
|
372 | 373 |
|
374 |
class CutTocMenuEntry extends MyTocMenuEntry{ |
|
375 |
public int getOrder() { |
|
376 |
return 1; |
|
373 | 377 |
} |
378 |
|
|
379 |
public String getText() { |
|
380 |
return PluginServices.getText(this, "cortar"); |
|
381 |
} |
|
382 |
|
|
383 |
public boolean isEnabled(ITocItem item, FLayer[] selectedItems) { |
|
384 |
return selectedItems.length >= 1 && isTocItemBranch(item); |
|
385 |
} |
|
374 | 386 |
|
375 |
public void actionPerformed(ActionEvent e) { |
|
376 |
FLayer[] actives = getMapContext().getLayers().getActives(); |
|
377 |
if (actives.length< 1) { |
|
378 |
return; |
|
379 |
} |
|
380 |
|
|
381 |
XMLEntity xml = this.utiles.generateXMLCopyLayers(actives); |
|
387 |
|
|
388 |
public void execute(ITocItem item, FLayer[] selectedItems) { |
|
389 |
XMLEntity xml = this.utiles.generateXMLCopyLayers(selectedItems); |
|
382 | 390 |
if (xml == null) { |
383 | 391 |
//TODO: arreglar esto |
384 | 392 |
return; |
... | ... | |
390 | 398 |
return; |
391 | 399 |
} |
392 | 400 |
|
393 |
|
|
394 |
/* |
|
395 |
System.out.println("=============================================================="); |
|
396 |
System.out.println(data); |
|
397 |
System.out.println("=============================================================="); |
|
398 |
System.out.flush(); |
|
399 |
*/ |
|
400 | 401 |
|
401 | 402 |
this.utiles.putInClipboard(data); |
402 | 403 |
|
... | ... | |
408 | 409 |
getMapContext().beginAtomicEvent(); |
409 | 410 |
|
410 | 411 |
|
411 |
boolean isOK =this.utiles.removeLayers(actives);
|
|
412 |
boolean isOK =this.utiles.removeLayers(selectedItems);
|
|
412 | 413 |
|
413 | 414 |
getMapContext().endAtomicEvent(); |
414 | 415 |
|
... | ... | |
423 | 424 |
} |
424 | 425 |
|
425 | 426 |
|
426 |
class PasteTocMenuEntry extends myTocMenuEntry{ |
|
427 |
private JMenuItem properties; |
|
427 |
class PasteTocMenuEntry extends MyTocMenuEntry{ |
|
428 | 428 |
private XMLEntity xml=null; |
429 | 429 |
|
430 |
|
|
431 |
public void initialize(FPopupMenu m) { |
|
432 |
super.initialize(m); |
|
433 |
properties = addMenuEntry(PluginServices.getText(this, "pegar")); |
|
434 |
|
|
435 |
if (isTocItemBranch()) { |
|
436 |
FLayer lyr = getNodeLayer(); |
|
430 |
public int getOrder() { |
|
431 |
return 2; |
|
432 |
} |
|
433 |
|
|
434 |
public String getText() { |
|
435 |
return PluginServices.getText(this, "pegar"); |
|
436 |
} |
|
437 |
|
|
438 |
public boolean isEnabled(ITocItem item, FLayer[] selectedItems) { |
|
439 |
if (isTocItemBranch(item)) { |
|
440 |
FLayer lyr = getNodeLayer(item); |
|
437 | 441 |
if (lyr instanceof FLayers) { |
438 | 442 |
this.xml = this.getCheckedXMLFromClipboard(); |
439 |
properties.setEnabled((this.xml != null)); |
|
440 |
} else { |
|
441 |
properties.setEnabled(false); |
|
443 |
return true; |
|
442 | 444 |
} |
443 | 445 |
|
444 |
} else if (isTocItemLeaf()) { |
|
445 |
properties.setEnabled(false); |
|
446 |
} else { |
|
447 |
if (getNodeLayer() == null) { |
|
446 |
} else if (!isTocItemLeaf(item)) { |
|
447 |
if (getNodeLayer(item) == null) { |
|
448 | 448 |
this.xml = this.getCheckedXMLFromClipboard(); |
449 |
properties.setEnabled((this.xml != null));
|
|
450 |
} |
|
451 |
}
|
|
452 |
|
|
449 |
return this.xml != null;
|
|
450 |
}
|
|
451 |
} |
|
452 |
return false; |
|
453 | 453 |
} |
454 |
|
|
454 |
|
|
455 | 455 |
private XMLEntity getCheckedXMLFromClipboard() { |
456 | 456 |
String sourceString = this.utiles.getFromClipboard(); |
457 | 457 |
if (sourceString == null) return null; |
... | ... | |
466 | 466 |
return xml; |
467 | 467 |
} |
468 | 468 |
|
469 |
public void actionPerformed(ActionEvent e) {
|
|
469 |
public void execute(ITocItem item, FLayer[] selectedItems) {
|
|
470 | 470 |
FLayers root; |
471 | 471 |
|
472 | 472 |
if (this.xml == null) return; |
473 | 473 |
|
474 |
if (isTocItemBranch()) { |
|
475 |
root = (FLayers)getNodeLayer(); |
|
476 |
} else if (getNodeLayer() == null){ |
|
474 |
if (isTocItemBranch(item)) {
|
|
475 |
root = (FLayers)getNodeLayer(item);
|
|
476 |
} else if (getNodeLayer(item) == null){
|
|
477 | 477 |
root = getMapContext().getLayers(); |
478 | 478 |
} else { |
479 | 479 |
return; |
Also available in: Unified diff