1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.client.rep.controller;
19
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.vectomatic.client.rep.RepApplication;
24 import org.vectomatic.client.rep.events.IShapeSelectionListener;
25 import org.vectomatic.client.rep.view.DrawingView;
26 import org.vectomatic.common.model.CloneShapeVisitor;
27 import org.vectomatic.common.model.Shape;
28
29
30
31
32 public class CopyController extends ControllerBase implements IShapeSelectionListener {
33 private ControllerMenuItem _copyMenuItem;
34 private CloneShapeVisitor _cloner;
35
36 public CopyController(RepApplication app) {
37 super(app);
38 _app.getSelection().addShapeSelectionListener(this);
39 _copyMenuItem = new ControllerMenuItem(_app.getView(), _app.getConstants().copyCommand(), this);
40 selectionChanged(_app.getSelection());
41 _cloner = new CloneShapeVisitor();
42 }
43
44 @Override
45 public void activate(DrawingView view) {
46 List<Shape> selectedShapes = _app.getSelection().getSelectedShapes();
47 List<Shape> clonedShapes = new ArrayList<Shape>();
48 for (int i = 0, size = selectedShapes.size(); i < size; i++) {
49 Shape shape = selectedShapes.get(i);
50 shape.acceptVisitor(_cloner);
51 clonedShapes.add(_cloner.getClone());
52 }
53 _app.getClipboard().setContent(clonedShapes);
54 }
55
56 public ControllerMenuItem getCopyMenuItem() {
57 return _copyMenuItem;
58 }
59 public void selectionChanged(ShapeSelection selection) {
60 _copyMenuItem.setEnabled(_app.getSelection().getSelectedShapes().size() > 0);
61 }
62 }