Author: dvinnichek
Date: 2010-10-19 04:06:45 -0400 (Tue, 19 Oct 2010)
New Revision: 25910
Added:
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/src/org/jboss/tools/vpe/docbook/template/DocbookProgramlistingTemplate.java
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml.xml
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/templates/vpe-templates-docbook.xml
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/src/org/jboss/tools/vpe/docbook/test/DocbookComponentContentTest.java
Log:
add support for <![CDATA[...]]> inside <programlisting> in Docbook
editor(https://jira.jboss.org/browse/JBIDE-7174)
Added:
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/src/org/jboss/tools/vpe/docbook/template/DocbookProgramlistingTemplate.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/src/org/jboss/tools/vpe/docbook/template/DocbookProgramlistingTemplate.java
(rev 0)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/src/org/jboss/tools/vpe/docbook/template/DocbookProgramlistingTemplate.java 2010-10-19
08:06:45 UTC (rev 25910)
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.vpe.docbook.template;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.tools.vpe.editor.context.VpePageContext;
+import org.jboss.tools.vpe.editor.template.VpeAbstractTemplate;
+import org.jboss.tools.vpe.editor.template.VpeChildrenInfo;
+import org.jboss.tools.vpe.editor.template.VpeCreationData;
+import org.jboss.tools.vpe.editor.util.HTML;
+import org.mozilla.interfaces.nsIDOMDocument;
+import org.mozilla.interfaces.nsIDOMElement;
+import org.mozilla.interfaces.nsIDOMText;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Used for processing CDATA sections.
+ *
+ * @author dvinnichek
+ *
+ */
+public class DocbookProgramlistingTemplate extends VpeAbstractTemplate {
+
+ @Override
+ public VpeCreationData create(VpePageContext pageContext, Node sourceNode,
+ nsIDOMDocument visualDocument) {
+
+ final nsIDOMElement newElement = visualDocument
+ .createElement(HTML.TAG_PRE);
+ final VpeCreationData creationData = new VpeCreationData(newElement);
+
+ NodeList childNodes = sourceNode.getChildNodes();
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ Node childNode = childNodes.item(i);
+ if (childNode.getNodeType() == Node.CDATA_SECTION_NODE) {
+ String cdataText = childNode.getNodeValue();
+ newElement.appendChild(visualDocument.createTextNode(cdataText));
+ } else {
+ nsIDOMElement spanElement = visualDocument.createElement(HTML.TAG_SPAN);
+ newElement.appendChild(spanElement);
+ VpeChildrenInfo info = new VpeChildrenInfo(spanElement);
+ info.addSourceChild(childNode);
+ creationData.addChildrenInfo(info);
+ }
+ }
+
+ return creationData;
+ }
+
+}
Property changes on:
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/src/org/jboss/tools/vpe/docbook/template/DocbookProgramlistingTemplate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Id Revision Date
Name: svn:eol-style
+ native
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/templates/vpe-templates-docbook.xml
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/templates/vpe-templates-docbook.xml 2010-10-19
06:15:47 UTC (rev 25909)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.docbook/templates/vpe-templates-docbook.xml 2010-10-19
08:06:45 UTC (rev 25910)
@@ -322,9 +322,8 @@
</vpe:tag>
<vpe:tag name="programlisting" case-sensitive="yes"
docbook="yes">
- <vpe:template children="yes" modify="yes">
- <pre />
- </vpe:template>
+ <vpe:template children="yes" modify="yes"
+ class="org.jboss.tools.vpe.docbook.template.DocbookProgramlistingTemplate"/>
</vpe:tag>
<vpe:tag name="programlistingco" case-sensitive="yes"
docbook="yes">
<vpe:template children="yes" modify="yes">
Added:
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml
===================================================================
---
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml
(rev 0)
+++
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml 2010-10-19
08:06:45 UTC (rev 25910)
@@ -0,0 +1,20 @@
+<!DOCTYPE tip PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<programlisting id="programlisting01">
+(define (node-list-filter-by-gi nodelist gilist)
+ ;; Returns the node-list that contains every element of the original
+ ;; nodelist whose gi is in gilist
+ (let loop ((result (empty-node-list)) (nl nodelist))
+ (if (node-list-empty? nl)
+ result
+ (if (member (gi (node-list-first nl)) gilist)
+ (loop (node-list result (node-list-first nl))
+ (node-list-rest nl))
+ (loop result (node-list-rest nl))))))
+</programlisting>
+
+<programlisting id="programlisting02">
+ <![CDATA[
+<emphasis>tags</emphasis> &entities; "]".
+ ]]>
+</programlisting>
Property changes on:
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:eol-style
+ native
Added:
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml.xml
===================================================================
---
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml.xml
(rev 0)
+++
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml.xml 2010-10-19
08:06:45 UTC (rev 25910)
@@ -0,0 +1,27 @@
+<tests>
+ <test id="programlisting01">
+ <PRE>
+ <SPAN>
+ <SPAN>
+(define (node-list-filter-by-gi nodelist gilist)
+ ;; Returns the node-list that contains every element of the original
+ ;; nodelist whose gi is in gilist
+ (let loop ((result (empty-node-list)) (nl nodelist))
+ (if (node-list-empty? nl)
+ result
+ (if (member (gi (node-list-first nl)) gilist)
+ (loop (node-list result (node-list-first nl))
+ (node-list-rest nl))
+ (loop result (node-list-rest nl))))))
+ </SPAN>
+ </SPAN>
+ </PRE>
+ </test>
+ <test id="programlisting02">
+ <PRE>
+ <SPAN/>
+<emphasis>tags</emphasis> &entities;
"]".
+ <SPAN/>
+ </PRE>
+ </test>
+</tests>
\ No newline at end of file
Property changes on:
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/resources/DocbookTest/WebContent/pages/components/programlisting/programlisting.xml.xml
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:eol-style
+ native
Modified:
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/src/org/jboss/tools/vpe/docbook/test/DocbookComponentContentTest.java
===================================================================
---
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/src/org/jboss/tools/vpe/docbook/test/DocbookComponentContentTest.java 2010-10-19
06:15:47 UTC (rev 25909)
+++
trunk/vpe/tests/org.jboss.tools.vpe.docbook.test/src/org/jboss/tools/vpe/docbook/test/DocbookComponentContentTest.java 2010-10-19
08:06:45 UTC (rev 25910)
@@ -60,6 +60,10 @@
performContentTest("components/important/important.xml"); //$NON-NLS-1$
}
+ public void testProgramlisting() throws Throwable {
+ performContentTest("components/programlisting/programlisting.xml");
//$NON-NLS-1$
+ }
+
@Override
protected String getTestProjectName() {
return DocbookAllTests.IMPORT_PROJECT_NAME;