Merge lp:~danilovesky/workcraft/trunk-bug-1321714 into lp:workcraft

Proposed by Danil Sokolov
Status: Merged
Merged at revision: 520
Proposed branch: lp:~danilovesky/workcraft/trunk-bug-1321714
Merge into: lp:workcraft
Diff against target: 568 lines (+121/-83)
19 files modified
CircuitPlugin/src/org/workcraft/plugins/circuit/VisualCircuitComponent.java (+6/-0)
GraphPlugin/src/org/workcraft/plugins/graph/ToolsProvider.java (+0/-3)
SONPlugin/src/org/workcraft/plugins/son/SONToolProvider.java (+0/-3)
WorkcraftCore/src/org/workcraft/Framework.java (+6/-10)
WorkcraftCore/src/org/workcraft/dom/AbstractGroup.java (+50/-41)
WorkcraftCore/src/org/workcraft/dom/DefaultHangingConnectionRemover.java (+1/-1)
WorkcraftCore/src/org/workcraft/dom/math/MathConnection.java (+2/-1)
WorkcraftCore/src/org/workcraft/dom/math/MathGroup.java (+13/-9)
WorkcraftCore/src/org/workcraft/dom/visual/AbstractVisualModel.java (+1/-5)
WorkcraftCore/src/org/workcraft/dom/visual/VisualGroup.java (+4/-0)
WorkcraftCore/src/org/workcraft/dom/visual/VisualPage.java (+4/-0)
WorkcraftCore/src/org/workcraft/dom/visual/connections/Polyline.java (+5/-1)
WorkcraftCore/src/org/workcraft/dom/visual/connections/VisualConnection.java (+6/-0)
WorkcraftCore/src/org/workcraft/gui/graph/tools/PageGeneratorTool.java (+1/-3)
WorkcraftCore/src/org/workcraft/observation/ObservableHierarchy.java (+1/-0)
WorkcraftCore/src/org/workcraft/observation/ObservableHierarchyImpl.java (+4/-0)
WorkcraftCore/src/org/workcraft/workspace/WorkspaceEntry.java (+6/-6)
XmasPlugin/src/org/workcraft/plugins/xmas/components/VisualXmasComponent.java (+6/-0)
XmasPlugin/src/org/workcraft/plugins/xmas/components/XmasComponent.java (+5/-0)
To merge this branch: bzr merge lp:~danilovesky/workcraft/trunk-bug-1321714
Reviewer Review Type Date Requested Status
Danil Sokolov Approve
Review via email: mp+226995@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Danil Sokolov (danilovesky) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CircuitPlugin/src/org/workcraft/plugins/circuit/VisualCircuitComponent.java'
2--- CircuitPlugin/src/org/workcraft/plugins/circuit/VisualCircuitComponent.java 2014-07-08 11:51:21 +0000
3+++ CircuitPlugin/src/org/workcraft/plugins/circuit/VisualCircuitComponent.java 2014-07-16 10:33:39 +0000
4@@ -631,5 +631,11 @@
5 public void removeObserver(HierarchyObserver obs) {
6 groupImpl.removeObserver(obs);
7 }
8+
9+ @Override
10+ public void removeAllObservers() {
11+ groupImpl.removeAllObservers();
12+ }
13+
14
15 }
16
17=== modified file 'GraphPlugin/src/org/workcraft/plugins/graph/ToolsProvider.java'
18--- GraphPlugin/src/org/workcraft/plugins/graph/ToolsProvider.java 2014-02-27 09:22:57 +0000
19+++ GraphPlugin/src/org/workcraft/plugins/graph/ToolsProvider.java 2014-07-16 10:33:39 +0000
20@@ -2,14 +2,12 @@
21
22 import java.util.ArrayList;
23
24-import org.workcraft.dom.math.PageNode;
25 import org.workcraft.gui.graph.tools.CommentGeneratorTool;
26 import org.workcraft.gui.graph.tools.ConnectionTool;
27 import org.workcraft.gui.graph.tools.CustomToolsProvider;
28 import org.workcraft.gui.graph.tools.DefaultNodeGenerator;
29 import org.workcraft.gui.graph.tools.GraphEditorTool;
30 import org.workcraft.gui.graph.tools.NodeGeneratorTool;
31-import org.workcraft.gui.graph.tools.PageGeneratorTool;
32 import org.workcraft.gui.graph.tools.SelectionTool;
33
34 public class ToolsProvider implements CustomToolsProvider {
35@@ -20,7 +18,6 @@
36
37 result.add(new SelectionTool());
38 result.add(new CommentGeneratorTool());
39- result.add(new PageGeneratorTool(new DefaultNodeGenerator(PageNode.class)));
40 result.add(new ConnectionTool(true, false));
41 result.add(new NodeGeneratorTool(new DefaultNodeGenerator(Vertex.class)));
42 return result;
43
44=== modified file 'SONPlugin/src/org/workcraft/plugins/son/SONToolProvider.java'
45--- SONPlugin/src/org/workcraft/plugins/son/SONToolProvider.java 2014-04-30 08:14:53 +0000
46+++ SONPlugin/src/org/workcraft/plugins/son/SONToolProvider.java 2014-07-16 10:33:39 +0000
47@@ -2,13 +2,11 @@
48
49 import java.util.ArrayList;
50
51-import org.workcraft.dom.math.PageNode;
52 import org.workcraft.gui.graph.tools.CommentGeneratorTool;
53 import org.workcraft.gui.graph.tools.CustomToolsProvider;
54 import org.workcraft.gui.graph.tools.DefaultNodeGenerator;
55 import org.workcraft.gui.graph.tools.GraphEditorTool;
56 import org.workcraft.gui.graph.tools.NodeGeneratorTool;
57-import org.workcraft.gui.graph.tools.PageGeneratorTool;
58 import org.workcraft.plugins.son.elements.ChannelPlace;
59 import org.workcraft.plugins.son.elements.Condition;
60 import org.workcraft.plugins.son.elements.Event;
61@@ -23,7 +21,6 @@
62 ArrayList<GraphEditorTool> result = new ArrayList<GraphEditorTool>();
63 GraphEditorTool channelPlaceTool = new NodeGeneratorTool(new DefaultNodeGenerator(ChannelPlace.class));
64 result.add(new SelectionTool(channelPlaceTool));
65- result.add(new PageGeneratorTool(new DefaultNodeGenerator(PageNode.class)));
66 result.add(new CommentGeneratorTool());
67 result.add(new SONConnectionTool());
68 result.add(new NodeGeneratorTool(new DefaultNodeGenerator(Condition.class)));
69
70=== modified file 'WorkcraftCore/src/org/workcraft/Framework.java'
71--- WorkcraftCore/src/org/workcraft/Framework.java 2014-06-25 19:35:02 +0000
72+++ WorkcraftCore/src/org/workcraft/Framework.java 2014-07-16 10:33:39 +0000
73@@ -69,11 +69,9 @@
74 import org.workcraft.gui.propertyeditor.SettingsPage;
75 import org.workcraft.interop.Importer;
76 import org.workcraft.plugins.PluginInfo;
77-import org.workcraft.plugins.serialisation.XMLDualModelDeserialiser;
78 import org.workcraft.plugins.serialisation.XMLModelDeserialiser;
79 import org.workcraft.plugins.serialisation.XMLModelSerialiser;
80 import org.workcraft.serialisation.DeserialisationResult;
81-import org.workcraft.serialisation.DualDeserialisationResult;
82 import org.workcraft.serialisation.ModelSerialiser;
83 import org.workcraft.serialisation.ReferenceProducer;
84 import org.workcraft.serialisation.References;
85@@ -663,28 +661,26 @@
86 }
87
88 public ModelEntry load(InputStream is1, InputStream is2) throws DeserialisationException {
89-
90 ModelEntry me1 = load(is1);
91 ModelEntry me2 = load(is2);
92
93 VisualModel vmodel1 = me1.getVisualModel();
94 VisualModel vmodel2 = me2.getVisualModel();
95
96- if (!me1.getDescriptor().getDisplayName().equals(
97- me2.getDescriptor().getDisplayName())) {
98- throw new DeserialisationException("incompatible models cannot be merged");
99+ if (!me1.getDescriptor().getDisplayName().equals(me2.getDescriptor().getDisplayName())) {
100+ throw new DeserialisationException("Incompatible models cannot be merged");
101 }
102
103-
104 Collection<Node> children = new HashSet<Node>(vmodel2.getRoot().getChildren());
105
106 vmodel1.selectNone();
107 vmodel1.reparent(vmodel1.getCurrentLevel(), vmodel2, vmodel2.getRoot(), null);
108 vmodel1.select(children);
109
110- return me1;
111-
112-
113+ // FIXME: dirty hack to avoid any hanging observers (serialise and deserialise the model)
114+ Memento memo = save(me1);
115+ ModelEntry me3 = load(memo);
116+ return me3;
117 }
118
119 // old implementation for reference
120
121=== modified file 'WorkcraftCore/src/org/workcraft/dom/AbstractGroup.java'
122--- WorkcraftCore/src/org/workcraft/dom/AbstractGroup.java 2014-06-29 17:47:02 +0000
123+++ WorkcraftCore/src/org/workcraft/dom/AbstractGroup.java 2014-07-16 10:33:39 +0000
124@@ -65,35 +65,38 @@
125
126 protected void postAdd(Node node, boolean notify) {
127 node.setParent(groupRef);
128-
129- if (notify)
130+ if (notify) {
131 observableHierarchyImpl.sendNotification (new NodesAddedEvent(groupRef, node));
132+ }
133 }
134
135 protected void preAdd(Node node, boolean notify) {
136- if (node.getParent() == this)
137+ if (node.getParent() == this) {
138 return;
139-
140- if (node.getParent() != null && node.getParent() != groupRef)
141+ }
142+ if ((node.getParent() != null) && (node.getParent() != groupRef)) {
143 throw new RuntimeException("Cannot attach someone else's node. Please detach from the old parent first.");
144-
145- if (notify)
146+ }
147+ if (notify) {
148 observableHierarchyImpl.sendNotification (new NodesAddingEvent(groupRef, node));
149+ }
150 }
151
152 protected void removeInternal(Node node, boolean notify) {
153- if (notify)
154+ if (notify) {
155 observableHierarchyImpl.sendNotification(new NodesDeletingEvent(groupRef, node));
156-
157- if (node.getParent() != groupRef)
158- throw new RuntimeException
159- ("Failed to remove a node frome a group because it is not a child of that group ("+node+", parent is " + node.getParent() +", expected " + groupRef + ")");
160-
161+ }
162+ if (node.getParent() != groupRef) {
163+ throw new RuntimeException(
164+ "Failed to remove a node frome a group because it is not a child of that group ("
165+ + node + ", parent is " + node.getParent() + ", expected " + groupRef + ")");
166+ }
167 removeInternal(node);
168 node.setParent(null);
169
170- if (notify)
171+ if (notify) {
172 observableHierarchyImpl.sendNotification (new NodesDeletedEvent(groupRef, node));
173+ }
174 }
175
176 public void addObserver(HierarchyObserver obs) {
177@@ -103,6 +106,10 @@
178 public void removeObserver(HierarchyObserver obs) {
179 observableHierarchyImpl.removeObserver(obs);
180 }
181+
182+ public void removeAllObservers() {
183+ observableHierarchyImpl.removeAllObservers();
184+ }
185
186 @Override
187 public void add(Node node) {
188@@ -112,10 +119,9 @@
189 @Override
190 public void add(Collection<Node> nodes) {
191 observableHierarchyImpl.sendNotification (new NodesAddingEvent(groupRef, nodes));
192-
193- for (Node node : nodes)
194+ for (Node node : nodes) {
195 addInternal(node, false);
196-
197+ }
198 observableHierarchyImpl.sendNotification (new NodesAddedEvent(groupRef, nodes));
199 }
200
201@@ -127,40 +133,42 @@
202 @Override
203 public void remove(Collection<Node> nodes) {
204 LinkedList<Node> nodesToRemove = new LinkedList<Node>(nodes);
205-
206 observableHierarchyImpl.sendNotification(new NodesDeletingEvent(groupRef, nodesToRemove));
207-
208- for (Node node : nodesToRemove)
209+ for (Node node : nodesToRemove) {
210 removeInternal(node, false);
211-
212+ }
213 observableHierarchyImpl.sendNotification (new NodesDeletedEvent(groupRef, nodesToRemove));
214 }
215-
216-
217-
218
219 @Override
220 public void reparent(Collection<Node> nodes, Container newParent) {
221 observableHierarchyImpl.sendNotification(new NodesReparentingEvent(groupRef, newParent, nodes));
222-
223- //HashSet<Node> newModelNodes= new HashSet<Node>();
224- boolean differentModels = false;
225-
226- for (Node node : nodes) {
227-
228- if (Hierarchy.getTopParent(newParent)!=Hierarchy.getTopParent(node)) differentModels = true;
229-
230+ for (Node node: nodes) {
231 removeInternal(node, false);
232-
233- }
234-
235- if (differentModels)
236- newParent.add(nodes);
237- else
238- newParent.reparent(nodes);
239-
240+ }
241+ if (!isSameModel(nodes, newParent)) {
242+ // If the model is not the same, then remove all node listeners
243+ for (Node node: nodes) {
244+ if (node instanceof ObservableHierarchy) {
245+ ((ObservableHierarchy) node).removeAllObservers();
246+ }
247+ }
248+ }
249+ newParent.add(nodes);
250 observableHierarchyImpl.sendNotification(new NodesReparentedEvent(groupRef, newParent, nodes));
251 }
252+
253+ private boolean isSameModel(Collection<Node> nodes, Container newParent) {
254+ Node newRoot = Hierarchy.getTopParent(newParent);
255+ boolean sameModel = true;
256+ for (Node node : nodes) {
257+ if (newRoot != Hierarchy.getTopParent(node)) {
258+ sameModel = false;
259+ break;
260+ }
261+ }
262+ return sameModel;
263+ }
264
265 @Override
266 public void reparent (Collection<Node> nodes) {
267@@ -173,5 +181,6 @@
268 public abstract Collection<Node> getChildren();
269
270 protected abstract void addInternal(Node node);
271+
272 protected abstract void removeInternal (Node node);
273-}
274\ No newline at end of file
275+}
276
277=== modified file 'WorkcraftCore/src/org/workcraft/dom/DefaultHangingConnectionRemover.java'
278--- WorkcraftCore/src/org/workcraft/dom/DefaultHangingConnectionRemover.java 2013-10-31 11:44:01 +0000
279+++ WorkcraftCore/src/org/workcraft/dom/DefaultHangingConnectionRemover.java 2014-07-16 10:33:39 +0000
280@@ -53,7 +53,7 @@
281
282 for (Node node : e.getAffectedNodes())
283 findHangingConnections(node, hangingConnections, hanging);
284-
285+
286 for (Connection con : hangingConnections)
287 if (con.getParent() instanceof Container)
288 ((Container)con.getParent()).remove(con);
289
290=== modified file 'WorkcraftCore/src/org/workcraft/dom/math/MathConnection.java'
291--- WorkcraftCore/src/org/workcraft/dom/math/MathConnection.java 2013-09-10 09:54:55 +0000
292+++ WorkcraftCore/src/org/workcraft/dom/math/MathConnection.java 2014-07-16 10:33:39 +0000
293@@ -23,6 +23,7 @@
294
295 import org.workcraft.annotations.VisualClass;
296 import org.workcraft.dom.Connection;
297+import org.workcraft.dom.Node;
298
299 @VisualClass(org.workcraft.dom.visual.connections.VisualConnection.class)
300 public class MathConnection extends MathNode implements Connection {
301@@ -36,7 +37,7 @@
302 super();
303 setDependencies(first, second);
304 }
305-
306+
307 final public MathNode getFirst() {
308 return first;
309 }
310
311=== modified file 'WorkcraftCore/src/org/workcraft/dom/math/MathGroup.java'
312--- WorkcraftCore/src/org/workcraft/dom/math/MathGroup.java 2014-04-28 18:05:39 +0000
313+++ WorkcraftCore/src/org/workcraft/dom/math/MathGroup.java 2014-07-16 10:33:39 +0000
314@@ -22,17 +22,16 @@
315 package org.workcraft.dom.math;
316
317 import java.util.ArrayList;
318-import java.util.Collection;
319-
320-import org.workcraft.dom.Container;
321-import org.workcraft.dom.DefaultGroupImpl;
322-import org.workcraft.dom.Node;
323+import java.util.Collection;
324+
325+import org.workcraft.dom.Container;
326+import org.workcraft.dom.DefaultGroupImpl;
327+import org.workcraft.dom.Node;
328 import org.workcraft.dom.hierarchy.NamespaceProvider;
329 import org.workcraft.dom.references.HierarchicalUniqueNameReferenceManager;
330 import org.workcraft.dom.references.ReferenceManager;
331-import org.workcraft.dom.visual.TransformHelper;
332-import org.workcraft.observation.HierarchyObserver;
333-import org.workcraft.observation.ObservableHierarchy;
334+import org.workcraft.observation.HierarchyObserver;
335+import org.workcraft.observation.ObservableHierarchy;
336 import org.workcraft.util.Hierarchy;
337
338 public class MathGroup extends MathNode implements NamespaceProvider, ObservableHierarchy, Container {
339@@ -66,7 +65,12 @@
340 @Override
341 public void removeObserver(HierarchyObserver obs) {
342 groupImpl.removeObserver(obs);
343- }
344+ }
345+
346+ @Override
347+ public void removeAllObservers() {
348+ groupImpl.removeAllObservers();
349+ }
350
351 @Override
352 public void setParent(Node parent) {
353
354=== modified file 'WorkcraftCore/src/org/workcraft/dom/visual/AbstractVisualModel.java'
355--- WorkcraftCore/src/org/workcraft/dom/visual/AbstractVisualModel.java 2014-07-11 09:28:08 +0000
356+++ WorkcraftCore/src/org/workcraft/dom/visual/AbstractVisualModel.java 2014-07-16 10:33:39 +0000
357@@ -627,11 +627,7 @@
358
359 Collection<Node> children = new HashSet<Node>();
360
361- if (sourceChildren==null) {
362- children.addAll(sourceRoot.getChildren());
363- } else {
364- children.addAll(sourceChildren);
365- }
366+ children.addAll(sourceChildren);
367
368 sourceRoot.reparent(children, targetContainer);
369
370
371=== modified file 'WorkcraftCore/src/org/workcraft/dom/visual/VisualGroup.java'
372--- WorkcraftCore/src/org/workcraft/dom/visual/VisualGroup.java 2014-06-29 17:47:02 +0000
373+++ WorkcraftCore/src/org/workcraft/dom/visual/VisualGroup.java 2014-07-16 10:33:39 +0000
374@@ -223,6 +223,10 @@
375 groupImpl.removeObserver(obs);
376 }
377
378+ @Override
379+ public void removeAllObservers() {
380+ groupImpl.removeAllObservers();
381+ }
382
383 @Override
384 public void setParent(Node parent) {
385
386=== modified file 'WorkcraftCore/src/org/workcraft/dom/visual/VisualPage.java'
387--- WorkcraftCore/src/org/workcraft/dom/visual/VisualPage.java 2014-06-26 08:11:52 +0000
388+++ WorkcraftCore/src/org/workcraft/dom/visual/VisualPage.java 2014-07-16 10:33:39 +0000
389@@ -170,6 +170,10 @@
390 groupImpl.removeObserver(obs);
391 }
392
393+ @Override
394+ public void removeAllObservers() {
395+ groupImpl.removeAllObservers();
396+ }
397
398 @Override
399 public void setParent(Node parent) {
400
401=== modified file 'WorkcraftCore/src/org/workcraft/dom/visual/connections/Polyline.java'
402--- WorkcraftCore/src/org/workcraft/dom/visual/connections/Polyline.java 2013-10-21 17:36:57 +0000
403+++ WorkcraftCore/src/org/workcraft/dom/visual/connections/Polyline.java 2014-07-16 10:33:39 +0000
404@@ -276,7 +276,11 @@
405
406 public void removeObserver(HierarchyObserver obs) {
407 groupImpl.removeObserver(obs);
408- }
409+ }
410+
411+ public void removeAllObservers() {
412+ groupImpl.removeAllObservers();
413+ }
414
415 public void reparent(Collection<Node> nodes, Container newParent) {
416 groupImpl.reparent(nodes, newParent);
417
418=== modified file 'WorkcraftCore/src/org/workcraft/dom/visual/connections/VisualConnection.java'
419--- WorkcraftCore/src/org/workcraft/dom/visual/connections/VisualConnection.java 2014-06-05 11:46:41 +0000
420+++ WorkcraftCore/src/org/workcraft/dom/visual/connections/VisualConnection.java 2014-07-16 10:33:39 +0000
421@@ -457,6 +457,12 @@
422 public void removeObserver(HierarchyObserver obs) {
423 observableHierarchyImpl.removeObserver(obs);
424 }
425+
426+ public void removeAllObservers() {
427+ observableHierarchyImpl.removeAllObservers();
428+ }
429+
430+
431 @Override
432 public Point2D getFirstCenter() {
433 return componentsTransformObserver.getFirstCenter();
434
435=== modified file 'WorkcraftCore/src/org/workcraft/gui/graph/tools/PageGeneratorTool.java'
436--- WorkcraftCore/src/org/workcraft/gui/graph/tools/PageGeneratorTool.java 2014-02-27 09:22:57 +0000
437+++ WorkcraftCore/src/org/workcraft/gui/graph/tools/PageGeneratorTool.java 2014-07-16 10:33:39 +0000
438@@ -1,6 +1,5 @@
439 package org.workcraft.gui.graph.tools;
440
441-import org.workcraft.dom.math.CommentNode;
442 import org.workcraft.dom.math.MathNode;
443 import org.workcraft.dom.math.PageNode;
444 import org.workcraft.exceptions.NodeCreationException;
445@@ -11,8 +10,7 @@
446 super(new DefaultNodeGenerator(PageNode.class)
447 {
448 @Override
449- protected MathNode createMathNode()
450- throws NodeCreationException {
451+ protected MathNode createMathNode() throws NodeCreationException {
452 MathNode node = super.createMathNode();
453 return node;
454 }
455
456=== modified file 'WorkcraftCore/src/org/workcraft/observation/ObservableHierarchy.java'
457--- WorkcraftCore/src/org/workcraft/observation/ObservableHierarchy.java 2009-09-22 21:01:45 +0000
458+++ WorkcraftCore/src/org/workcraft/observation/ObservableHierarchy.java 2014-07-16 10:33:39 +0000
459@@ -24,4 +24,5 @@
460 public interface ObservableHierarchy {
461 public void addObserver (HierarchyObserver obs);
462 public void removeObserver (HierarchyObserver obs);
463+ public void removeAllObservers();
464 }
465
466=== modified file 'WorkcraftCore/src/org/workcraft/observation/ObservableHierarchyImpl.java'
467--- WorkcraftCore/src/org/workcraft/observation/ObservableHierarchyImpl.java 2009-09-22 21:01:45 +0000
468+++ WorkcraftCore/src/org/workcraft/observation/ObservableHierarchyImpl.java 2014-07-16 10:33:39 +0000
469@@ -34,6 +34,10 @@
470 observers.remove(obs);
471 }
472
473+ public void removeAllObservers() {
474+ observers.clear();
475+ }
476+
477 public void sendNotification (HierarchyEvent e) {
478 for (HierarchyObserver obs : observers)
479 obs.notify(e);
480
481=== modified file 'WorkcraftCore/src/org/workcraft/workspace/WorkspaceEntry.java'
482--- WorkcraftCore/src/org/workcraft/workspace/WorkspaceEntry.java 2014-06-17 18:47:40 +0000
483+++ WorkcraftCore/src/org/workcraft/workspace/WorkspaceEntry.java 2014-07-16 10:33:39 +0000
484@@ -29,11 +29,12 @@
485 import java.io.IOException;
486 import java.io.InputStreamReader;
487 import java.util.Collection;
488-import java.util.HashMap;
489 import java.util.HashSet;
490 import java.util.zip.ZipEntry;
491 import java.util.zip.ZipInputStream;
492
493+import javax.swing.JOptionPane;
494+
495 import org.workcraft.Framework;
496 import org.workcraft.dom.Container;
497 import org.workcraft.dom.Node;
498@@ -48,7 +49,6 @@
499 import org.workcraft.observation.StateEvent;
500 import org.workcraft.observation.StateObserver;
501 import org.workcraft.plugins.shared.CommonEditorSettings;
502-import org.workcraft.plugins.shared.CommonVisualSettings;
503 import org.workcraft.util.Hierarchy;
504
505 public class WorkspaceEntry implements ObservableState {
506@@ -211,9 +211,7 @@
507 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
508 String str = unzipInputStream(new ZipInputStream(capturedMemento.getStream()));
509 clipboard.setContents(new StringSelection(str), null);
510-
511 }
512-
513 }
514
515 public void cancelMemento() {
516@@ -278,7 +276,8 @@
517 setModelEntry(result);
518 setChanged(true);
519 } catch (DeserialisationException e) {
520- e.printStackTrace();
521+ JOptionPane.showMessageDialog(framework.getMainWindow(), e.getMessage(),
522+ "Model insertion failed", JOptionPane.ERROR_MESSAGE);
523 }
524 }
525
526@@ -356,7 +355,8 @@
527 setChanged(true);
528 VisualModelTransformer.translateSelection(result.getVisualModel(), 1.0, 1.0);
529 } catch (DeserialisationException e) {
530- e.printStackTrace();
531+ JOptionPane.showMessageDialog(framework.getMainWindow(), e.getMessage(),
532+ "Clipboard paste failed", JOptionPane.ERROR_MESSAGE);
533 }
534 }
535 }
536
537=== modified file 'XmasPlugin/src/org/workcraft/plugins/xmas/components/VisualXmasComponent.java'
538--- XmasPlugin/src/org/workcraft/plugins/xmas/components/VisualXmasComponent.java 2014-01-07 16:03:24 +0000
539+++ XmasPlugin/src/org/workcraft/plugins/xmas/components/VisualXmasComponent.java 2014-07-16 10:33:39 +0000
540@@ -213,6 +213,12 @@
541 groupImpl.removeObserver(obs);
542 }
543
544+ @Override
545+ public void removeAllObservers() {
546+ groupImpl.removeAllObservers();
547+ }
548+
549+
550 abstract public Shape getShape();
551
552 @Override
553
554=== modified file 'XmasPlugin/src/org/workcraft/plugins/xmas/components/XmasComponent.java'
555--- XmasPlugin/src/org/workcraft/plugins/xmas/components/XmasComponent.java 2013-11-05 18:01:19 +0000
556+++ XmasPlugin/src/org/workcraft/plugins/xmas/components/XmasComponent.java 2014-07-16 10:33:39 +0000
557@@ -52,6 +52,11 @@
558 public void removeObserver(HierarchyObserver obs) {
559 groupImpl.removeObserver(obs);
560 }
561+
562+ public void removeAllObservers() {
563+ groupImpl.removeAllObservers();
564+ }
565+
566
567 @Override
568 public void add(Node node) {

Subscribers

People subscribed via source and target branches