Merge lp:~danilovesky/workcraft/trunk-bug-1321714 into lp:workcraft
- trunk-bug-1321714
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Danil Sokolov | Approve | ||
Review via email: mp+226995@code.launchpad.net |
Commit message
Description of the change
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) { |