Revision 6676 trunk/applications/appgvSIG/src/com/iver/cit/gvsig/CopyPasteExtension.java

View differences:

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