Author: yradtsevich
Date: 2009-08-18 09:56:19 -0400 (Tue, 18 Aug 2009)
New Revision: 17130
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/Messages.java
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/messages.properties
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/util/
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/util/FaceletsUtil.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml.xml
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeCompositionTemplate.java
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeDefineTemplate.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/src/org/jboss/tools/jsf/vpe/facelets/test/FaceletsComponentContentTest.java
Log:
issue JBIDE-4416: Modify templates for ui:composition and ui:define
https://jira.jboss.org/jira/browse/JBIDE-4416
- the part #1 has been fixed: now if the template file is not found, error message is
shown.
- JUnit test has been added
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeCompositionTemplate.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeCompositionTemplate.java 2009-08-18
13:34:19 UTC (rev 17129)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeCompositionTemplate.java 2009-08-18
13:56:19 UTC (rev 17130)
@@ -12,7 +12,10 @@
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
+import org.eclipse.osgi.util.NLS;
+import org.jboss.tools.jsf.vpe.facelets.template.messages.Messages;
import org.jboss.tools.jsf.vpe.facelets.template.util.Facelets;
+import org.jboss.tools.jsf.vpe.facelets.util.FaceletsUtil;
import org.jboss.tools.vpe.editor.VpeVisualDomBuilder;
import org.jboss.tools.vpe.editor.context.VpePageContext;
import org.jboss.tools.vpe.editor.template.VpeCreationData;
@@ -28,32 +31,33 @@
public class VpeCompositionTemplate extends VpeDefineContainerTemplate {
+ public static final String MESSAGE_STYLE
+ = "color:red;font-style:italic;"; //$NON-NLS-1$
+ public static final String ANY_TAG_CAPTION_CLASS
+ = "__any__tag__caption"; //$NON-NLS-1$
+
public VpeCreationData create(VpePageContext pageContext, Node sourceNode,
nsIDOMDocument visualDocument){
Attr attr = ((Element)sourceNode).getAttributeNode(Facelets.ATTR_TEMPLATE);
- if (attr != null) {
- return super.createTemplate(attr.getNodeValue(), pageContext, sourceNode,
visualDocument);
- } else {
- nsIDOMElement composition = visualDocument.createElement(HTML.TAG_DIV);
- return new VpeCreationData(composition);
- }
+ return super.createTemplate(attr == null ? null : attr.getNodeValue(),
+ pageContext, sourceNode, visualDocument);
}
protected VpeCreationData createStub(String fileName, Node sourceElement, nsIDOMDocument
visualDocument) {
nsIDOMElement container = visualDocument.createElement(HTML.TAG_DIV);
- container.setAttribute("style", "border: 1px dashed #2A7F00");
//$NON-NLS-1$ //$NON-NLS-2$
+ container.setAttribute(HTML.ATTR_STYLE, "border: 1px dashed #2A7F00");
//$NON-NLS-1$
VpeVisualDomBuilder.markIncludeElement(container);
- nsIDOMElement title = visualDocument.createElement(HTML.TAG_DIV);
- nsIDOMElement tag = visualDocument.createElement(HTML.TAG_SPAN);
- tag.setAttribute("class", "__any__tag__caption"); //$NON-NLS-1$
//$NON-NLS-2$
- tag.appendChild(visualDocument.createTextNode(sourceElement.getNodeName()));
- title.appendChild(tag);
- if (fileName != null) {
- title.appendChild(visualDocument.createTextNode(fileName));
+ final String message;
+ if (fileName == null) {
+ message = Messages.TEMPLATE_NOT_SPECIFIED;
+ } else {
+ message = NLS.bind(Messages.TEMPLATE_NOT_FOUND, fileName);
}
- container.appendChild(title);
-
+
+ container.appendChild(FaceletsUtil.createErrorMessageElement(
+ visualDocument, sourceElement.getNodeName(), message));
+
return new VpeCreationData(container);
}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeDefineTemplate.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeDefineTemplate.java 2009-08-18
13:34:19 UTC (rev 17129)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/VpeDefineTemplate.java 2009-08-18
13:56:19 UTC (rev 17130)
@@ -10,6 +10,10 @@
******************************************************************************/
package org.jboss.tools.jsf.vpe.facelets.template;
+import org.eclipse.osgi.util.NLS;
+import org.jboss.tools.jsf.vpe.facelets.template.messages.Messages;
+import org.jboss.tools.jsf.vpe.facelets.template.util.Facelets;
+import org.jboss.tools.jsf.vpe.facelets.util.FaceletsUtil;
import org.jboss.tools.vpe.editor.context.VpePageContext;
import org.jboss.tools.vpe.editor.template.VpeAbstractTemplate;
import org.jboss.tools.vpe.editor.template.VpeCreationData;
@@ -57,19 +61,19 @@
private VpeCreationData createStub(Element sourceElement, nsIDOMDocument visualDocument)
{
nsIDOMElement container = visualDocument.createElement(HTML.TAG_DIV);
- container.setAttribute("style", "border: 1px solid gray");
//$NON-NLS-1$ //$NON-NLS-2$
+ container.setAttribute(HTML.ATTR_STYLE, "border: 1px solid gray");
//$NON-NLS-1$
- nsIDOMElement title = visualDocument.createElement(HTML.TAG_DIV);
- nsIDOMElement tag = visualDocument.createElement(HTML.TAG_SPAN);
- tag.setAttribute("class", "__any__tag__caption"); //$NON-NLS-1$
//$NON-NLS-2$
- tag.appendChild(visualDocument.createTextNode(sourceElement.getNodeName()));
- title.appendChild(tag);
- String name = sourceElement.getAttribute("name"); //$NON-NLS-1$
- if (name != null && name.length() > 0) {
- title.appendChild(visualDocument.createTextNode(name));
+ String name = sourceElement.getAttribute(Facelets.ATTR_NAME);
+ final String message;
+ if (name != null) {
+ message = NLS.bind(Messages.UNKNOWN_NAME, name);
+ } else {
+ message = Messages.NAME_NOT_SPECIFIED;
}
- container.appendChild(title);
-
+
+ container.appendChild(FaceletsUtil.createErrorMessageElement(
+ visualDocument, sourceElement.getNodeName(), message));
+
return new VpeCreationData(container);
}
}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/Messages.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/Messages.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/Messages.java 2009-08-18
13:56:19 UTC (rev 17130)
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * 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.jsf.vpe.facelets.template.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author yradtsevich
+ *
+ */
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME
+ =
"org.jboss.tools.jsf.vpe.facelets.template.messages.messages";//$NON-NLS-1$
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+ private Messages(){}
+
+ public static String TEMPLATE_NOT_SPECIFIED;
+ public static String TEMPLATE_NOT_FOUND;
+ public static String UNKNOWN_NAME;
+ public static String NAME_NOT_SPECIFIED;
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/messages.properties
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/messages.properties
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/template/messages/messages.properties 2009-08-18
13:56:19 UTC (rev 17130)
@@ -0,0 +1,4 @@
+TEMPLATE_NOT_SPECIFIED=Template file is not specified.
+TEMPLATE_NOT_FOUND=Template file is not found: "{0}"
+UNKNOWN_NAME=Unknown name: "{0}"
+NAME_NOT_SPECIFIED=Name is not specified.
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/util/FaceletsUtil.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/util/FaceletsUtil.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.vpe.facelets/src/org/jboss/tools/jsf/vpe/facelets/util/FaceletsUtil.java 2009-08-18
13:56:19 UTC (rev 17130)
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.jsf.vpe.facelets.util;
+
+import org.jboss.tools.vpe.editor.util.HTML;
+import org.mozilla.interfaces.nsIDOMDocument;
+import org.mozilla.interfaces.nsIDOMElement;
+
+/**
+ * Contains various utility methods used by facelets templates.
+ *
+ * @author yradtsevich
+ */
+public class FaceletsUtil {
+ private static final String ANY_TAG_CAPTION_CLASS
+ = "__any__tag__caption"; //$NON-NLS-1$
+ private static final String MESSAGE_STYLE
+ = "color:red;font-style:italic;"; //$NON-NLS-1$
+
+ /**
+ * Creates and returns a DIV element composed of name of JSP tag
+ * and the errorMessage.
+ * <P>
+ * Should be used to show messages in the VPE like:
+ * <pre>ui:composition Template is not found.</pre>
+ */
+ public static nsIDOMElement createErrorMessageElement(
+ nsIDOMDocument visualDocument,
+ String tagName, String errorMessage) {
+ nsIDOMElement element = visualDocument.createElement(HTML.TAG_DIV);
+
+ nsIDOMElement nameTag = visualDocument.createElement(HTML.TAG_SPAN);
+ nameTag.setAttribute(HTML.ATTR_CLASS, ANY_TAG_CAPTION_CLASS);
+ nameTag.appendChild(visualDocument.createTextNode(tagName));
+ element.appendChild(nameTag);
+
+ nsIDOMElement messageTag = visualDocument.createElement(HTML.TAG_SPAN);
+ messageTag.setAttribute(HTML.ATTR_CLASS, ANY_TAG_CAPTION_CLASS);
+ messageTag.setAttribute(HTML.ATTR_STYLE, MESSAGE_STYLE);
+ messageTag.appendChild(visualDocument.createTextNode(
+ " " + errorMessage));//$NON-NLS-1$
+ element.appendChild(messageTag);
+
+ return element;
+ }
+}
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml
(rev 0)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml 2009-08-18
13:56:19 UTC (rev 17130)
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core">
+
+<ui:composition template="/pages/components/notexistedfile.xhtml"
id="composition1">
+ <ui:define name="pageTitle">JSF 1.2 and Facelets under Tomcat. KickStart
Application</ui:define>
+</ui:composition>
+</html>
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml.xml
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml.xml
(rev 0)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/resources/faceletsTest/WebContent/pages/components/composition_errorMessage.xhtml.xml 2009-08-18
13:56:19 UTC (rev 17130)
@@ -0,0 +1,27 @@
+<tests>
+ <test id="composition1">
+ <DIV STYLE="border: 1px dashed rgb(42, 127, 0);">
+ <DIV>
+ <SPAN CLASS="__any__tag__caption">
+ ui:composition
+ </SPAN>
+ <SPAN CLASS="__any__tag__caption" STYLE="color: red; font-style:
italic;">
+ Template file is not found: "/pages/components/notexistedfile.xhtml"
+ </SPAN>
+ </DIV>
+ <DIV STYLE="border: 1px solid gray;">
+ <DIV>
+ <SPAN CLASS="__any__tag__caption">
+ ui:define
+ </SPAN>
+ <SPAN CLASS="__any__tag__caption" STYLE="color: red; font-style:
italic;">
+ Unknown name: "pageTitle"
+ </SPAN>
+ </DIV>
+ <SPAN CLASS="vpe-text">
+ JSF 1.2 and Facelets under Tomcat. KickStart Application
+ </SPAN>
+ </DIV>
+ </DIV>
+ </test>
+</tests>
\ No newline at end of file
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/src/org/jboss/tools/jsf/vpe/facelets/test/FaceletsComponentContentTest.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/src/org/jboss/tools/jsf/vpe/facelets/test/FaceletsComponentContentTest.java 2009-08-18
13:34:19 UTC (rev 17129)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.facelets.test/src/org/jboss/tools/jsf/vpe/facelets/test/FaceletsComponentContentTest.java 2009-08-18
13:56:19 UTC (rev 17130)
@@ -21,13 +21,16 @@
performContentTest("components/compositionWithoutTaglibs.xhtml");//$NON-NLS-1$
}
+ public void testCompositionErrorMessage() throws Throwable {
+ performContentTest("components/composition_errorMessage.xhtml");//$NON-NLS-1$
+ }
+
public void testCustomFaceletComponent() throws Throwable {
performContentTest("components/customFaceletComponent.xhtml");//$NON-NLS-1$
}
-
+
@Override
protected String getTestProjectName() {
return FaceletsAllTests.IMPORT_PROJECT_NAME;
}
-
}