~danilovesky/workcraft/trunk-ui-property-filter

« back to all changes in this revision

Viewing changes to WorkcraftCore/src/org/workcraft/gui/graph/tools/NodeGeneratorTool.java

  • Committer: Danil Sokolov
  • Date: 2015-04-14 13:29:45 UTC
  • mfrom: (598.2.4 trunk-bug)
  • Revision ID: danilovesky@gmail.com-20150414132945-j86ynv6ttfdb1wav
Merge proposal for blueprint ui-default-properties approved.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
import java.awt.Color;
25
25
import java.awt.Graphics2D;
26
26
import java.awt.event.MouseEvent;
 
27
import java.awt.geom.Point2D;
27
28
 
28
29
import javax.swing.Icon;
29
30
 
 
31
import org.workcraft.dom.visual.VisualModel;
30
32
import org.workcraft.dom.visual.VisualNode;
31
33
import org.workcraft.exceptions.NodeCreationException;
32
34
import org.workcraft.gui.events.GraphEditorMouseEvent;
34
36
 
35
37
public class NodeGeneratorTool extends AbstractTool {
36
38
        private final NodeGenerator generator;
 
39
        private VisualNode templateNode = null;
37
40
        private VisualNode lastGeneratedNode = null;
38
41
        private String warningMessage = null;
39
42
 
40
 
        public NodeGeneratorTool (NodeGenerator generator) {
41
 
                this.generator = generator;
 
43
        public NodeGeneratorTool(NodeGenerator generator) {
 
44
                this.generator = generator;
42
45
        }
43
46
 
44
47
        @Override
66
69
        public void activated(GraphEditor editor) {
67
70
                super.activated(editor);
68
71
                resetState(editor);
 
72
                if (templateNode == null) {
 
73
                        try {
 
74
                                templateNode = generator.createVisualNode(generator.createMathNode());
 
75
                        } catch (NodeCreationException e) {
 
76
                                throw new RuntimeException (e);
 
77
                        }
 
78
                }
 
79
                editor.getModel().setTemplateNode(templateNode);
69
80
        }
70
81
 
71
 
 
72
82
        @Override
73
83
        public void deactivated(GraphEditor editor) {
74
84
                super.deactivated(editor);
75
85
                resetState(editor);
76
86
        }
 
87
 
 
88
        @Override
 
89
        public void reactivated(GraphEditor editor) {
 
90
                templateNode = null;
 
91
        }
77
92
        
78
93
        @Override
79
94
        public void mouseMoved(GraphEditorMouseEvent e) {
95
110
                        try {
96
111
                                if (e.getButton() == MouseEvent.BUTTON1) {
97
112
                                        editor.getWorkspaceEntry().saveMemento();
98
 
                                        lastGeneratedNode = generator.generate(e.getModel(), editor.snap(e.getPosition(), null));
 
113
                                        VisualModel model = e.getModel();
 
114
                                        Point2D snapPosition = editor.snap(e.getPosition(), null);
 
115
                                        lastGeneratedNode = generator.generate(model, snapPosition);
 
116
                                        lastGeneratedNode.copyStyle(templateNode);
99
117
                                }
100
118
                        } catch (NodeCreationException e1) {
101
119
                                throw new RuntimeException (e1);