1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.templating.editor.client.dom.processor;
35
36 import info.magnolia.templating.editor.client.PageEditor;
37 import info.magnolia.templating.editor.client.dom.CMSComment;
38 import info.magnolia.templating.editor.client.dom.Comment;
39 import info.magnolia.templating.editor.client.dom.MgnlElement;
40 import info.magnolia.templating.editor.client.widget.controlbar.PageBar;
41
42 import com.google.gwt.core.client.GWT;
43 import com.google.gwt.dom.client.Node;
44
45
46
47
48
49 public class CommentProcessor {
50
51 public static MgnlElement process (Node node, MgnlElement mgnlElement) throws Exception {
52
53 CMSComment comment = new CMSComment((Comment)node.cast());
54
55 GWT.log("processing comment " + comment);
56
57 if (!comment.isClosing()) {
58
59 if ("cms:page".equals(comment.getTagName())) {
60 GWT.log("element was detected as page edit bar. Injecting it...");
61 PageBar pageBarWidget = new PageBar(comment);
62 pageBarWidget.attach();
63
64 if (PageEditor.isPreview()) {
65
66 GWT.log("We're in preview mode, stop processing DOM.");
67 PageEditor.process = false;
68 }
69 }
70
71 else {
72 try {
73 mgnlElement = new MgnlElement(comment, mgnlElement);
74
75 if (mgnlElement.getParent() == null) {
76 PageEditor.model.addRoot(mgnlElement);
77 }
78 else {
79 mgnlElement.getParent().getChildren().add(mgnlElement);
80 }
81
82 }
83 catch (IllegalArgumentException e) {
84 GWT.log("Not MgnlElement, skipping: " + e.toString());
85 }
86 }
87 }
88
89 else if (mgnlElement != null) {
90 mgnlElement.setEndComment(comment);
91 mgnlElement = mgnlElement.getParent();
92 }
93
94 return mgnlElement;
95
96 }
97 }