Author: dgolovin
Date: 2009-10-23 19:13:52 -0400 (Fri, 23 Oct 2009)
New Revision: 18278
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.classpath
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.freemarker-ide.xml
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.project
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/edit.xhtml.ftl
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/editproperty.xhtml.ftl
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/test/
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/test/FreemarkerEditorTest.java
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/test/
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/test/FreemarkerPreferencePageTest.java
Modified:
trunk/freemarker/features/org.jboss.ide.eclipse.freemarker.test.feature/feature.xml
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/CompletionProcessor.java
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/Editor.java
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/preferences/PreferencePage.java
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/META-INF/MANIFEST.MF
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/build.properties
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/test/FreemarkerAllTests.java
Log:
fremarker JUNit tests update to increase coverage to:
Classes Methods Blocks Lines
57% (53/93) 38% (249/663) 38% (6322/16542) 38% (1441.4/3744)
Modified:
trunk/freemarker/features/org.jboss.ide.eclipse.freemarker.test.feature/feature.xml
===================================================================
---
trunk/freemarker/features/org.jboss.ide.eclipse.freemarker.test.feature/feature.xml 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/features/org.jboss.ide.eclipse.freemarker.test.feature/feature.xml 2009-10-23
23:13:52 UTC (rev 18278)
@@ -21,7 +21,6 @@
id="org.jboss.ide.eclipse.freemarker.test"
download-size="0"
install-size="0"
- version="0.0.0"
- unpack="false"/>
+ version="0.0.0"/>
</feature>
Modified:
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/CompletionProcessor.java
===================================================================
---
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/CompletionProcessor.java 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/CompletionProcessor.java 2009-10-23
23:13:52 UTC (rev 18278)
@@ -54,6 +54,7 @@
private Editor editor;
+ private static final ICompletionProposal[] NO_COMPLETIONS = new ICompletionProposal[0];
public CompletionProcessor (Editor editor) {
this.editor = editor;
@@ -123,14 +124,14 @@
}
}
else {
- return null;
+ return NO_COMPLETIONS;
}
}
}
}
}
catch (BadLocationException e) {
- return null;
+ return NO_COMPLETIONS;
}
// check for interpolations
try {
@@ -160,14 +161,14 @@
}
}
catch (BadLocationException e) {
- return null;
+ return NO_COMPLETIONS;
}
}
}
catch (Exception e) {
Plugin.log(e);
}
- return null;
+ return NO_COMPLETIONS;
}
protected TemplateContextType getContextType(ITextViewer viewer, IRegion region) {
Modified:
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/Editor.java
===================================================================
---
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/Editor.java 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/editor/Editor.java 2009-10-23
23:13:52 UTC (rev 18278)
@@ -35,6 +35,7 @@
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.ITextViewerExtension2;
import org.eclipse.jface.text.ITypedRegion;
import org.eclipse.jface.text.source.ISourceViewer;
@@ -181,6 +182,10 @@
return null;
}
+ public ITextViewer getTextViewer() {
+ return getSourceViewer();
+ }
+
public void addProblemMarker(String aMessage, int aLine) {
IFile file = ((IFileEditorInput)getEditorInput()).getFile();
try {
Modified:
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/preferences/PreferencePage.java
===================================================================
---
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/preferences/PreferencePage.java 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/plugins/org.jboss.ide.eclipse.freemarker/src/org/jboss/ide/eclipse/freemarker/preferences/PreferencePage.java 2009-10-23
23:13:52 UTC (rev 18278)
@@ -38,6 +38,8 @@
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
+ public static final String ID =
"org.jboss.ide.eclipse.freemarker.preferences.OutlinePreferencePage";
+
public PreferencePage() {
super(GRID);
setPreferenceStore(Plugin.getDefault().getPreferenceStore());
Modified:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/META-INF/MANIFEST.MF
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/META-INF/MANIFEST.MF 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/META-INF/MANIFEST.MF 2009-10-23
23:13:52 UTC (rev 18278)
@@ -7,6 +7,17 @@
Bundle-Vendor: JBoss by RedHat
Require-Bundle: org.eclipse.core.runtime,
org.junit,
- org.jboss.tools.tests;bundle-version="2.0.0"
+ org.jboss.tools.tests;bundle-version="2.0.0",
+ org.eclipse.jface;bundle-version="3.5.0",
+ org.jboss.ide.eclipse.freemarker;bundle-version="1.1.0",
+ org.eclipse.core.resources;bundle-version="3.5.1",
+ org.eclipse.ui;bundle-version="3.5.1",
+ org.eclipse.ui.workbench.texteditor;bundle-version="3.5.0",
+ org.eclipse.text;bundle-version="3.5.0",
+ org.eclipse.jface.text;bundle-version="3.5.1"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: freemarker-test.jar
+Export-Package: org.jboss.ide.eclipse.freemarker.editor.test,
+ org.jboss.ide.eclipse.freemarker.preferences.test,
+ org.jboss.ide.eclipse.freemarker.test
Modified: trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/build.properties
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/build.properties 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/build.properties 2009-10-23
23:13:52 UTC (rev 18278)
@@ -1,4 +1,5 @@
-source.. = src/
-output.. = bin/
bin.includes = META-INF/,\
- .
+ projects/,\
+ freemarker-test.jar
+source.freemarker-test.jar = src/
+jars.compile.order =
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.classpath
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.classpath
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.classpath 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Property changes on:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.classpath
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.freemarker-ide.xml
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.freemarker-ide.xml
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.freemarker-ide.xml 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,14 @@
+<config>
+ <context-values>
+ <resource path="edit.xhtml.ftl">
+ <value key="a" object-class="java.lang.String"/>
+ <value key="b" object-class="java.util.ArrayList"
item-class="java.lang.String"/>
+ </resource>
+ <resource path="editproperty.xhtml.ftl">
+ <value key="a" object-class="java.lang.String"/>
+ <value key="b" object-class="java.util.ArrayList"
item-class="java.lang.String"/>
+ </resource>
+ </context-values>
+ <macro-library>
+ </macro-library>
+</config>
\ No newline at end of file
Property changes on:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.freemarker-ide.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.project
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.project
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.project 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testEditor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Property changes on:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/.project
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/edit.xhtml.ftl
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/edit.xhtml.ftl
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/edit.xhtml.ftl 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,204 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<#include "../util/TypeInfo.ftl">
+<#assign entityName = pojo.shortName>
+<#assign componentName = entityName?uncap_first>
+<#assign homeName = componentName + "Home">
+<#assign masterPageName = entityName + "List">
+<#assign pageName = entityName>
+<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:s="http://jboss.com/products/seam/taglib"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:a="http://richfaces.org/a4j"
+
xmlns:rich="http://richfaces.org/rich"
+ template="layout/template.xhtml">
+
+<ui:define name="body">
+
+ <h:form id="${componentName}" styleClass="edit">
+
+ <rich:panel>
+ <f:facet name="header">${'#'}{${homeName}.managed ?
'Edit' : 'Add'} ${label(entityName)}</f:facet>
+<#foreach property in pojo.allPropertiesIterator>
+<#include "editproperty.xhtml.ftl">
+</#foreach>
+
+ <div style="clear:both">
+ <span class="required">*</span>
+ required fields
+ </div>
+
+ </rich:panel>
+
+ <div class="actionButtons">
+
+ <h:commandButton id="save"
+ value="Save"
+ action="${'#'}{${homeName}.persist}"
+ disabled="${'#'}{!${homeName}.wired}"
+ rendered="${'#'}{!${homeName}.managed}"/>
+
+ <h:commandButton id="update"
+ value="Save"
+ action="${'#'}{${homeName}.update}"
+ rendered="${'#'}{${homeName}.managed}"/>
+
+ <h:commandButton id="delete"
+ value="Delete"
+ action="${'#'}{${homeName}.remove}"
+ immediate="true"
+ rendered="${'#'}{${homeName}.managed}"/>
+
+ <s:button id="cancelEdit"
+ value="Cancel"
+ propagation="end"
+ view="/${pageName}.xhtml"
+ rendered="${'#'}{${homeName}.managed}"/>
+
+ <s:button id="cancelAdd"
+ value="Cancel"
+ propagation="end"
+ view="/${'#'}{empty ${componentName}From ?
'${masterPageName}' : ${componentName}From}.xhtml"
+ rendered="${'#'}{!${homeName}.managed}"/>
+
+ </div>
+ </h:form>
+<#assign hasAssociations=false>
+<#foreach property in pojo.allPropertiesIterator>
+<#if isToOne(property) || c2h.isOneToManyCollection(property)>
+<#assign hasAssociations=true>
+</#if>
+</#foreach>
+
+<#if hasAssociations>
+<rich:tabPanel switchType="ajax">
+</#if>
+<#foreach property in pojo.allPropertiesIterator>
+<#if isToOne(property)>
+<#assign parentPojo =
c2j.getPOJOClass(cfg.getClassMapping(property.value.referencedEntityName))>
+<#assign parentPageName = parentPojo.shortName>
+<#assign parentName = parentPojo.shortName?uncap_first>
+
+<#if property.optional>
+ <rich:tab label="${label(property.name)}">
+<#else>
+ <rich:tab label="${label(property.name)} *"
labelClass="required">
+</#if>
+ <div class="association" id="${property.name}Parent">
+
+ <h:outputText value="There is no ${property.name} associated with this
${componentName}."
+ rendered="${'#'}{${homeName}.instance.${property.name} ==
null}"/>
+
+ <rich:dataTable var="_${parentName}"
+
value="${'#'}{${homeName}.instance.${property.name}}"
+ rendered="${'#'}{${homeName}.instance.${property.name} !=
null}"
+ rowClasses="rvgRowOne,rvgRowTwo"
+ id="${property.name}Table">
+<#foreach parentProperty in parentPojo.allPropertiesIterator>
+<#if !c2h.isCollection(parentProperty) && !isToOne(parentProperty) &&
parentProperty != parentPojo.versionProperty!>
+<#if parentPojo.isComponent(parentProperty)>
+<#foreach componentProperty in parentProperty.value.propertyIterator>
+ <h:column>
+ <f:facet
name="header">${label(componentProperty.name)}</f:facet>
+ <@outputValue property=componentProperty
expression="${'#'}{_${parentName}.${parentProperty.name}.${componentProperty.name}}"
indent=16/>
+ </h:column>
+</#foreach>
+<#else>
+ <h:column>
+ <f:facet
name="header">${label(parentProperty.name)}</f:facet>
+ <@outputValue property=parentProperty
expression="${'#'}{_${parentName}.${parentProperty.name}}"
indent=16/>
+ </h:column>
+</#if>
+</#if>
+<#if isToOne(parentProperty)>
+<#assign grandparentPojo =
c2j.getPOJOClass(cfg.getClassMapping(parentProperty.value.referencedEntityName))>
+<#if grandparentPojo.isComponent(grandparentPojo.identifierProperty)>
+<#foreach componentProperty in
grandparentPojo.identifierProperty.value.propertyIterator>
+ <h:column>
+ <f:facet name="header">${label(parentProperty.name)}
${label(componentProperty.name)?uncap_first}</f:facet>
+ <@outputValue property=componentProperty
expression="${'#'}{_${parentName}.${parentProperty.name}.${grandparentPojo.identifierProperty.name}.${componentProperty.name}}"
indent=16/>
+ </h:column>
+</#foreach>
+<#else>
+ <h:column>
+ <f:facet name="header">${label(parentProperty.name)}
${label(grandparentPojo.identifierProperty.name)?uncap_first}</f:facet>
+ <@outputValue property=grandparentPojo.identifierProperty
expression="${'#'}{_${parentName}.${parentProperty.name}.${grandparentPojo.identifierProperty.name}}"
indent=16/>
+ </h:column>
+</#if>
+</#if>
+</#foreach>
+ </rich:dataTable>
+
+<#if parentPojo.shortName!=pojo.shortName>
+ <div class="actionButtons">
+ <s:button id="${'#'}{${homeName}.instance.${property.name} !=
null ? 'changeParent' : 'selectParent'}"
value="${'#'}{${homeName}.instance.${property.name} != null ?
'Change' : 'Select'} ${property.name}"
+ view="/${parentPageName}List.xhtml">
+ <f:param name="from" value="${pageName}Edit"/>
+ </s:button>
+ </div>
+
+</#if>
+ </div>
+ </rich:tab>
+</#if>
+<#if c2h.isOneToManyCollection(property)>
+
+ <rich:tab label="${label(property.name)}">
+ <h:form styleClass="association"
id="${property.name}Children">
+
+<#assign childPojo = c2j.getPOJOClass(property.value.element.associatedClass)>
+<#assign childPageName = childPojo.shortName>
+<#assign childEditPageName = childPojo.shortName + "Edit">
+<#assign childName = childPojo.shortName?uncap_first>
+ <h:outputText value="There are no ${property.name} associated with
this ${componentName}."
+ rendered="${'#'}{empty
${homeName}.${property.name}}"/>
+
+ <rich:dataTable
value="${'#'}{${homeName}.${property.name}}"
+ var="_${childName}"
+ rendered="${'#'}{not empty
${homeName}.${property.name}}"
+ rowClasses="rvgRowOne,rvgRowTwo"
+ id="${property.name}Table">
+<#foreach childProperty in childPojo.allPropertiesIterator>
+<#if !c2h.isCollection(childProperty) && !isToOne(childProperty) &&
childProperty != childPojo.versionProperty!>
+<#if childPojo.isComponent(childProperty)>
+<#foreach componentProperty in childProperty.value.propertyIterator>
+ <rich:column
sortBy="${'#'}{_${childName}.${childProperty.name}.${componentProperty.name}}">
+ <f:facet
name="header">${label(componentProperty.name)}</f:facet>
+ <@outputValue property=componentProperty
expression="${'#'}{_${childName}.${childProperty.name}.${componentProperty.name}}"
indent=20/>
+ </rich:column>
+</#foreach>
+<#else>
+ <rich:column
sortBy="${'#'}{_${childName}.${childProperty.name}}">
+ <f:facet
name="header">${label(childProperty.name)}</f:facet>
+ <@outputValue property=childProperty
expression="${'#'}{_${childName}.${childProperty.name}}" indent=20/>
+ </rich:column>
+</#if>
+</#if>
+</#foreach>
+ </rich:dataTable>
+
+ </h:form>
+
+ <f:subview rendered="${'#'}{${homeName}.managed}"
id="${property.name}">
+ <div class="actionButtons">
+ <s:button id="add${childName}"
+ value="Add ${childName}"
+ view="/${childEditPageName}.xhtml"
+ propagation="none">
+ <f:param
name="${componentName}${pojo.identifierProperty.name?cap_first}"
+
value="${'#'}{${homeName}.instance.${pojo.identifierProperty.name}}"/>
+ <f:param name="${childName}From"
value="${entityName}"/>
+ </s:button>
+ </div>
+ </f:subview>
+ </rich:tab>
+</#if>
+</#foreach>
+<#if hasAssociations>
+</rich:tabPanel>
+</#if>
+</ui:define>
+
+</ui:composition>
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/editproperty.xhtml.ftl
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/editproperty.xhtml.ftl
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/projects/testEditor/editproperty.xhtml.ftl 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,229 @@
+<#include "../util/TypeInfo.ftl">
+
+<#if !c2h.isCollection(property) && !isToOne(property) && property !=
pojo.versionProperty!>
+<#assign propertyIsId = property.equals(pojo.identifierProperty)>
+<#if !propertyIsId || property.value.identifierGeneratorStrategy ==
"assigned">
+<#if pojo.isComponent(property)>
+<#foreach componentProperty in property.value.propertyIterator>
+<#assign column = componentProperty.columnIterator.next()>
+
+ <s:decorate id="${componentProperty.name}Field"
template="layout/edit.xhtml">
+ <ui:define
name="label">${label(componentProperty.name)}</ui:define>
+<#if isDate(componentProperty)>
+ <rich:calendar id="${componentProperty.name}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}"
datePattern="MM/dd/yyyy" />
+<#elseif isTime(componentProperty)>
+ <h:inputText id="${componentProperty.name}"
+ size="5"
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}">
+ <s:convertDateTime type="time"/>
+ <a:support event="onblur"
reRender="${componentProperty.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+<#elseif isTimestamp(componentProperty)>
+ <rich:calendar id="${componentProperty.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}"
datePattern="MM/dd/yyyy hh:mm a" />
+<#elseif isBigDecimal(componentProperty)>
+ <h:inputText id="${componentProperty.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}"
+ size="${column.precision+7}">
+ <a:support event="onblur"
reRender="${componentProperty.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+<#elseif isBigInteger(componentProperty)>
+ <h:inputText id="${componentProperty.name}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}"
+ size="${column.precision+6}">
+ <a:support event="onblur"
reRender="${componentProperty.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+<#elseif isBoolean(componentProperty)>
+ <h:selectBooleanCheckbox id="${componentProperty.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+<#if propertyIsId>
+
disabled="${'#'}{${homeName}.managed}"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}"/>
+<#elseif isString(componentProperty)>
+<#if column.length gt 160>
+<#if column.length gt 800>
+<#assign rows = 10>
+<#else>
+<#assign rows = (column.length/80)?int>
+</#if>
+ <h:inputTextarea id="${componentProperty.name}"
+ cols="80"
+ rows="${rows}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}"/>
+<#else>
+<#if column.length gt 100>
+<#assign size = 100>
+<#else>
+<#assign size = column.length>
+</#if>
+ <h:inputText id="${componentProperty.name}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+ size="${size}"
+ maxlength="${column.length}"
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}">
+ <a:support event="onblur"
reRender="${componentProperty.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+</#if>
+<#else>
+ <h:inputText id="${componentProperty.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}.${componentProperty.name}}">
+ <a:support event="onblur"
reRender="${componentProperty.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+</#if>
+ </s:decorate>
+</#foreach>
+<#else>
+<#assign column = property.columnIterator.next()>
+<#assign property = property.value.typeName>
+
+ <s:decorate id="${property.name}Field"
template="layout/edit.xhtml">
+ <ui:define
name="label">${label(property.name)}</ui:define>
+<#if isDate(property)>
+ <rich:calendar id="${property.name}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}"
datePattern="MM/dd/yyyy" />
+<#elseif isTime(property)>
+ <h:inputText id="${property.name}"
+ size="5"
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}">
+ <s:convertDateTime type="time"/>
+ <a:support event="onblur"
reRender="${property.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+<#elseif isTimestamp(property)>
+ <rich:calendar id="${property.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}"
datePattern="MM/dd/yyyy hh:mm a"/>
+<#elseif isBigDecimal(property)>
+ <h:inputText id="${property.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}"
+ size="${column.precision+7}">
+ <a:support event="onblur"
reRender="${property.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+<#elseif isBigInteger(property)>
+ <h:inputText id="${property.name}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}"
+ size="${column.precision+6}">
+ <a:support event="onblur"
reRender="${property.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+<#elseif isBoolean(property)>
+ <h:selectBooleanCheckbox id="${property.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+<#if propertyIsId>
+
disabled="${'#'}{${homeName}.managed}"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}"/>
+<#elseif isString(property)>
+<#if column.length gt 160>
+<#if column.length gt 800>
+<#assign rows = 10>
+<#else>
+<#assign rows = (column.length/80)?int>
+</#if>
+ <h:inputTextarea id="${property.name}"
+ cols="80"
+ rows="${rows}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}"/>
+<#else>
+<#if column.length gt 100>
+<#assign size = 100>
+<#else>
+<#assign size = column.length>
+</#if>
+ <h:inputText id="${property.name}"
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+<#if !column.nullable>
+ required="true"
+</#if>
+ size="${size}"
+ maxlength="${column.length}"
+
value="${'#'}{${homeName}.instance.${property.name}}">
+ <a:support event="onblur"
reRender="${property.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+</#if>
+<#else>
+ <h:inputText id="${property.name}"
+<#if !column.nullable>
+ required="true"
+</#if>
+<#if propertyIsId>
+ disabled="${'#'}{${homeName}.managed}"
+</#if>
+
value="${'#'}{${homeName}.instance.${property.name}}">
+ <a:support event="onblur"
reRender="${property.name}Field" bypassUpdates="true"
ajaxSingle="true"/>
+ </h:inputText>
+</#if>
+ </s:decorate>
+</#if>
+</#if>
+</#if>
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/test/FreemarkerEditorTest.java
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/test/FreemarkerEditorTest.java
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/test/FreemarkerEditorTest.java 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,50 @@
+package org.jboss.ide.eclipse.freemarker.editor.test;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.text.IFindReplaceTarget;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.ui.IEditorPart;
+import org.jboss.ide.eclipse.freemarker.editor.CompletionProcessor;
+import org.jboss.ide.eclipse.freemarker.editor.FreemarkerMultiPageEditor;
+import org.jboss.ide.eclipse.freemarker.test.Activator;
+import org.jboss.tools.test.util.ResourcesUtils;
+import org.jboss.tools.test.util.WorkbenchUtils;
+
+public class FreemarkerEditorTest extends TestCase {
+
+
+
+ private static final String EDITPROPERTY_XHTML_FTL =
"editproperty.xhtml.ftl";
+ private static final String TEST_EDITOR_PROJECT = "testEditor";
+
+ protected void setUp() throws Exception {
+ ResourcesUtils.importProject(Activator.PLUGIN_ID,"projects/"+TEST_EDITOR_PROJECT);
+ }
+
+ protected void tearDown() throws Exception {
+ ResourcesUtils.deleteProject(TEST_EDITOR_PROJECT);
+ }
+
+ public void testFreemarkerEditorIsOpened() {
+ IEditorPart part = WorkbenchUtils.openEditor(TEST_EDITOR_PROJECT + IPath.SEPARATOR +
EDITPROPERTY_XHTML_FTL);
+ assertTrue(part instanceof FreemarkerMultiPageEditor);
+ FreemarkerMultiPageEditor editor = (FreemarkerMultiPageEditor)part;
+ }
+
+ public void testFreemarkerContentAssistIsShowed() {
+ IEditorPart part = WorkbenchUtils.openEditor(TEST_EDITOR_PROJECT + IPath.SEPARATOR +
EDITPROPERTY_XHTML_FTL);
+ assertTrue(part instanceof FreemarkerMultiPageEditor);
+ FreemarkerMultiPageEditor editor = (FreemarkerMultiPageEditor)part;
+ CompletionProcessor proc = new CompletionProcessor(editor.getEditor());
+ IFindReplaceTarget find =
(IFindReplaceTarget)editor.getAdapter(IFindReplaceTarget.class);
+ int pos = find.findAndSelect(0, "<#", true, false, false);
+ ICompletionProposal[] proposals =
proc.computeCompletionProposals(editor.getEditor().getTextViewer(),pos+2);
+ assertTrue(proposals.length>0);
+
+ pos = find.findAndSelect(0, "label(componentProperty.name)", true, false,
false);
+ proposals = proc.computeCompletionProposals(editor.getEditor().getTextViewer(),pos);
+ assertTrue(proposals.length>0);
+ }
+}
Property changes on:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/editor/test/FreemarkerEditorTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/test/FreemarkerPreferencePageTest.java
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/test/FreemarkerPreferencePageTest.java
(rev 0)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/test/FreemarkerPreferencePageTest.java 2009-10-23
23:13:52 UTC (rev 18278)
@@ -0,0 +1,48 @@
+package org.jboss.ide.eclipse.freemarker.preferences.test;
+
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.jboss.ide.eclipse.freemarker.preferences.PreferencePage;
+import org.jboss.tools.test.util.WorkbenchUtils;
+
+import junit.framework.TestCase;
+/**
+ * TODO Get rid of copy paste code
+ *
+ * @author eskimo
+ *
+ */
+public class FreemarkerPreferencePageTest extends TestCase {
+
+ public void testFreemarkerPreferencePageShow() {
+ PreferenceDialog prefDialog =
+ WorkbenchUtils.createPreferenceDialog(
+ PreferencePage.ID);
+
+ try {
+ prefDialog.setBlockOnOpen(false);
+ prefDialog.open();
+
+ Object selectedPage = prefDialog.getSelectedPage();
+ assertTrue("Selected page is not an instance of PreferencePage",
selectedPage instanceof PreferencePage); //$NON-NLS-1$
+ } finally {
+ prefDialog.close();
+ }
+ }
+
+ public void testFreemarkerPreferencePagePerformOk() {
+ PreferenceDialog prefDialog =
+ WorkbenchUtils.createPreferenceDialog(
+ PreferencePage.ID);
+
+ try {
+ prefDialog.setBlockOnOpen(false);
+ prefDialog.open();
+
+ PreferencePage selectedPage = (PreferencePage)prefDialog.getSelectedPage();
+ selectedPage.performOk();
+ } finally {
+ prefDialog.close();
+ }
+ }
+
+}
Property changes on:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/preferences/test/FreemarkerPreferencePageTest.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Modified:
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/test/FreemarkerAllTests.java
===================================================================
---
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/test/FreemarkerAllTests.java 2009-10-23
22:17:41 UTC (rev 18277)
+++
trunk/freemarker/tests/org.jboss.ide.eclipse.freemarker.test/src/org/jboss/ide/eclipse/freemarker/test/FreemarkerAllTests.java 2009-10-23
23:13:52 UTC (rev 18278)
@@ -4,6 +4,8 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.jboss.ide.eclipse.freemarker.editor.test.FreemarkerEditorTest;
+import org.jboss.ide.eclipse.freemarker.preferences.test.FreemarkerPreferencePageTest;
import org.jboss.tools.tests.AbstractPluginsLoadTest;
public class FreemarkerAllTests extends TestCase {
@@ -12,6 +14,8 @@
{
TestSuite suite = new TestSuite(FreemarkerAllTests.class.getName());
suite.addTestSuite(FreemarkerPluginsLoadTest.class);
+ suite.addTestSuite(FreemarkerPreferencePageTest.class);
+ suite.addTestSuite(FreemarkerEditorTest.class);
return suite;
}
@@ -20,7 +24,7 @@
public FreemarkerPluginsLoadTest() {}
- public void testBirtPluginsAreResolvedAndActivated() {
+ public void testFreemarkerPluginsAreResolvedAndActivated() {
testBundlesAreLoadedFor("org.jboss.ide.eclipse.freemarker.feature");
}
}