diff options
Diffstat (limited to 'org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec')
21 files changed, 252 insertions, 87 deletions
diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/AbstractTypeSpecTest.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/AbstractTypeSpecTest.java new file mode 100644 index 0000000000..09801cd046 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/AbstractTypeSpecTest.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are 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 + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import java.util.HashSet; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.scout.commons.ITypeWithClassId; +import org.eclipse.scout.commons.exception.ProcessingException; +import org.eclipse.scout.commons.logger.IScoutLogger; +import org.eclipse.scout.commons.logger.ScoutLogManager; +import org.eclipse.scout.commons.runtime.BundleBrowser; +import org.eclipse.scout.rt.spec.client.gen.TypeSpecGenerator; +import org.eclipse.scout.rt.spec.client.gen.extract.SpecialDescriptionExtractor; +import org.eclipse.scout.rt.spec.client.internal.Activator; +import org.eclipse.scout.rt.spec.client.out.IDocSection; +import org.junit.Test; +import org.osgi.framework.Bundle; + +/** + * Abstract spec test for creating a spec file with a table describing types (eg. form fields, columns, ...) + * <p> + * A type appears on the list if these criteria are met:<br> + * - The type is a subtype or the same type as the supertype provided in the constructor.<br> + * - A doc text with the key "[types classid]_name" is defined + * <p> + * The resulting table consists of the two columns:<br> + * - Name: filled with doc text with the key "[types classid]_name"<br> + * - Description: filled with doc text with the key "[types classid]_description" + */ +public abstract class AbstractTypeSpecTest extends AbstractSpecGen { + private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractTypeSpecTest.class); + private Class<?> m_supertype; + private String m_id; + private String m_title; + + public AbstractTypeSpecTest(String id, String title, Class<? extends ITypeWithClassId> supertype) { + m_id = id; + m_title = title; + m_supertype = supertype; + } + + @Test + public void generateFieldTypeSpec() throws ProcessingException { + + Class[] fieldTypes = getAllClasses(); + IDocSection doc = generate(fieldTypes); + write(doc, m_id, new String[]{}); + } + + protected Class[] getAllClasses() throws ProcessingException { + HashSet<Class> discoveredClasses = new HashSet<Class>(); + for (Bundle bundle : Activator.getDefault().getBundle().getBundleContext().getBundles()) { + // Skip fragments, because classes from fragments are read when browsing the host bundle + if (Platform.isFragment(bundle)) { + continue; + } + String[] classNames; + BundleBrowser bundleBrowser = new BundleBrowser(bundle.getSymbolicName(), bundle.getSymbolicName()); + classNames = bundleBrowser.getClasses(false, true); + Class c = null; + for (String className : classNames) { + try { + c = bundle.loadClass(className); + } + catch (Throwable t) { + // nop: we are only interested in loadable classes + } + if (acceptClass(c)) { + discoveredClasses.add(c); + } + } + } + + Class[] fieldTypes = discoveredClasses.toArray(new Class[discoveredClasses.size()]); + return fieldTypes; + } + + protected boolean acceptClass(Class c) { + if (c == null || !m_supertype.isAssignableFrom(c)) { + return false; + } + String typeDescription = new SpecialDescriptionExtractor(null, "_name").getText(c); + return typeDescription != null; + } + + protected IDocSection generate(Class[] fieldTypes) { + TypeSpecGenerator g = new TypeSpecGenerator(getConfiguration(), m_id, m_title); + return g.getDocSection(fieldTypes); + } + +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/ColumnTypesSpecTest.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/ColumnTypesSpecTest.java new file mode 100644 index 0000000000..53b39fdd72 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/ColumnTypesSpecTest.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSI CRM Software License v1.0 + * which accompanies this distribution as bsi-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import org.eclipse.scout.rt.client.ui.basic.table.columns.IColumn; +import org.eclipse.scout.rt.shared.TEXTS; + +/** + * Concrete implementation of {@link AbstractTypeSpecTest} for columns + */ +public class ColumnTypesSpecTest extends AbstractTypeSpecTest { + + public ColumnTypesSpecTest() { + super("org.eclipse.scout.rt.spec.columntypes", TEXTS.get("org.eclipse.scout.rt.spec.columntypes"), IColumn.class); + } +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypeSpecGen.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypeSpecGen.java deleted file mode 100644 index fd0fae70f9..0000000000 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypeSpecGen.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 BSI Business Systems Integration AG. - * All rights reserved. This program and the accompanying materials - * are 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 - * - * Contributors: - * BSI Business Systems Integration AG - initial API and implementation - ******************************************************************************/ -package org.eclipse.scout.rt.spec.client; - -import org.eclipse.scout.commons.exception.ProcessingException; -import org.eclipse.scout.rt.client.ui.basic.table.ITable; -import org.eclipse.scout.rt.client.ui.desktop.outline.pages.IPageWithTable; -import org.eclipse.scout.rt.client.ui.form.fields.datefield.AbstractDateField; -import org.eclipse.scout.rt.client.ui.form.fields.stringfield.AbstractStringField; -import org.eclipse.scout.rt.spec.client.gen.TypeSpecGenerator; -import org.eclipse.scout.rt.spec.client.out.IDocSection; - -/** - * - */ -public abstract class FieldTypeSpecGen extends AbstractSpecGen { - - public void printAllFields() throws ProcessingException { - - Class[] fieldTypes = new Class[]{AbstractStringField.class, AbstractDateField.class}; - IDocSection doc = generate(fieldTypes); - write(doc, "SpecTypes", new String[]{}); - } - - protected IDocSection generate(Class[] fieldTypes) { - TypeSpecGenerator g = new TypeSpecGenerator(getConfiguration()); - return g.getDocSection(fieldTypes); - } - - /** - * @return - */ - public abstract IPageWithTable<? extends ITable> createAndStartTablePage() throws ProcessingException; - -} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypesSpecTest.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypesSpecTest.java new file mode 100644 index 0000000000..212cd12014 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/FieldTypesSpecTest.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSI CRM Software License v1.0 + * which accompanies this distribution as bsi-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client; + +import org.eclipse.scout.rt.client.ui.form.fields.IFormField; +import org.eclipse.scout.rt.shared.TEXTS; + +/** + * Concrete implementation of {@link AbstractTypeSpecTest} for form fields + */ +public class FieldTypesSpecTest extends AbstractTypeSpecTest { + + public FieldTypesSpecTest() { + super("org.eclipse.scout.rt.spec.fieldtypes", TEXTS.get("org.eclipse.scout.rt.spec.fieldtypes"), IFormField.class); + } +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java index 7d9416a428..e98a38121a 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/SpecPostProcessor.java @@ -14,15 +14,22 @@ import java.io.File; import java.util.HashMap; import org.eclipse.scout.commons.exception.ProcessingException; +import org.eclipse.scout.commons.logger.IScoutLogger; +import org.eclipse.scout.commons.logger.ScoutLogManager; import org.eclipse.scout.rt.spec.client.out.mediawiki.MediawikiAnchorCollector; /** * A post processor for replacing link tags to point to the generated files. */ public class SpecPostProcessor extends AbstractSpecGen implements ISpecProcessor { + private static IScoutLogger LOG = ScoutLogManager.getLogger(SpecPostProcessor.class); @Override public void process() throws ProcessingException { + if (!getFileConfig().getMediawikiDir().exists()) { + LOG.warn("MediawikiDir does not exists! (" + getFileConfig().getMediawikiDir().getPath() + ")"); + return; + } for (File wiki : getFileConfig().getMediawikiDir().listFiles()) { replaceLinks(wiki); File html = convertToHTML(wiki); diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java index 48d08f7b08..52c47a8734 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/SpecFileConfig.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.IProduct; import org.eclipse.core.runtime.Platform; import org.eclipse.scout.commons.exception.ProcessingException; import org.eclipse.scout.commons.logger.IScoutLogger; @@ -36,7 +37,7 @@ public class SpecFileConfig { private static final String MEDIAWIKI_DIR_NAME = "mediawiki"; private static final String LINKS_FILE_NAME = "links.properties"; - private String[] m_additionalSourcePlugins; + private String[] m_additionalSourcePlugins = new String[0]; private Bundle m_bundle; /** @@ -44,7 +45,11 @@ public class SpecFileConfig { * when running this Eclipse instance. */ public SpecFileConfig() { - m_bundle = Platform.getProduct().getDefiningBundle(); + IProduct product = Platform.getProduct(); + // TODO ASA Nullcheck is only needed for tests. --> Create a product for tests and remove nullcheck. + if (product != null) { + m_bundle = product.getDefiningBundle(); + } } /** diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java index eb87b558f8..ae3d8fd743 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultEntityConfig.java @@ -31,14 +31,13 @@ public class DefaultEntityConfig<T extends ITypeWithClassId> implements IDocEnti */ @Override public List<IDocFilter<T>> getFilters() { - // TODO ASA rename - List<IDocFilter<T>> columnFilters = new ArrayList<IDocFilter<T>>(); - columnFilters.add(new DefaultDocFilter<T>()); - return columnFilters; + List<IDocFilter<T>> filters = new ArrayList<IDocFilter<T>>(); + filters.add(new DefaultDocFilter<T>()); + return filters; } @Override - public List<IDocTextExtractor<T>> getTexts() { + public List<IDocTextExtractor<T>> getPropertyTextExtractors() { ArrayList<IDocTextExtractor<T>> p = new ArrayList<IDocTextExtractor<T>>(); p.add(new TypeExtractor<T>()); p.add(new DescriptionExtractor<T>()); @@ -46,12 +45,12 @@ public class DefaultEntityConfig<T extends ITypeWithClassId> implements IDocEnti } @Override - public IDocTextExtractor<T> getId() { + public IDocTextExtractor<T> getIdExtractor() { return new TypeExtractor<T>(); } @Override - public IDocTextExtractor<T> getTitle() { + public IDocTextExtractor<T> getTitleExtractor() { return new SimpleTypeTextExtractor<T>(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java index ce11bb41d3..16f16d30cd 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultFormConfig.java @@ -25,7 +25,7 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.FormTitleExtractor; public class DefaultFormConfig extends DefaultEntityConfig<IForm> { @Override - public List<IDocTextExtractor<IForm>> getTexts() { + public List<IDocTextExtractor<IForm>> getPropertyTextExtractors() { List<IDocTextExtractor<IForm>> propertyTemplate = new ArrayList<IDocTextExtractor<IForm>>(); propertyTemplate.add(new FormTitleExtractor()); propertyTemplate.add(new DescriptionExtractor<IForm>()); @@ -34,7 +34,7 @@ public class DefaultFormConfig extends DefaultEntityConfig<IForm> { } @Override - public IDocTextExtractor<IForm> getTitle() { + public IDocTextExtractor<IForm> getTitleExtractor() { return new FormTitleExtractor(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java index 088dfc1fad..f9f9ff8de5 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultSmartFieldConfig.java @@ -23,12 +23,12 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.field.TableFieldTypeWit public class DefaultSmartFieldConfig extends DefaultEntityConfig<ISmartField<?>> { @Override - public List<IDocTextExtractor<ISmartField<?>>> getTexts() { + public List<IDocTextExtractor<ISmartField<?>>> getPropertyTextExtractors() { return new ArrayList<IDocTextExtractor<ISmartField<?>>>(); } @Override - public IDocTextExtractor<ISmartField<?>> getTitle() { + public IDocTextExtractor<ISmartField<?>> getTitleExtractor() { return new TableFieldTypeWithLabelExtractor<ISmartField<?>>(); } } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java index e3050626a9..d86aaf4b86 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTableFieldConfig.java @@ -24,12 +24,12 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.field.TableFieldTypeWit public class DefaultTableFieldConfig extends DefaultEntityConfig<ITableField<? extends ITable>> { @Override - public List<IDocTextExtractor<ITableField<? extends ITable>>> getTexts() { + public List<IDocTextExtractor<ITableField<? extends ITable>>> getPropertyTextExtractors() { return new ArrayList<IDocTextExtractor<ITableField<? extends ITable>>>(); } @Override - public IDocTextExtractor<ITableField<? extends ITable>> getTitle() { + public IDocTextExtractor<ITableField<? extends ITable>> getTitleExtractor() { return new TableFieldTypeWithLabelExtractor<ITableField<? extends ITable>>(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java index 7b79cfa2ec..c5a71cdc17 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTablePageConfig.java @@ -21,7 +21,7 @@ import org.eclipse.scout.rt.spec.client.gen.extract.form.page.TablePageExtractor public class DefaultTablePageConfig extends DefaultEntityConfig<IPageWithTable<? extends ITable>> { @Override - public IDocTextExtractor<IPageWithTable<? extends ITable>> getTitle() { + public IDocTextExtractor<IPageWithTable<? extends ITable>> getTitleExtractor() { return new TablePageExtractor<IPageWithTable<? extends ITable>>(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java index 164d84f260..9f5c46036d 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/DefaultTypesConfig.java @@ -16,29 +16,31 @@ import java.util.List; import org.eclipse.scout.rt.shared.TEXTS; import org.eclipse.scout.rt.spec.client.gen.extract.IDocTextExtractor; +import org.eclipse.scout.rt.spec.client.gen.extract.SpecialDescriptionExtractor; import org.eclipse.scout.rt.spec.client.gen.filter.IDocFilter; /** - * + * Default configuration for {@link Class} */ public class DefaultTypesConfig implements IDocEntityListConfig<Class> { @Override public List<IDocTextExtractor<Class>> getTextExtractors() { ArrayList<IDocTextExtractor<Class>> extractors = new ArrayList<IDocTextExtractor<Class>>(); - // TODO ASA create type extractors + + extractors.add(new SpecialDescriptionExtractor(TEXTS.get("org.eclipse.scout.rt.spec.type"), "_name")); + extractors.add(new SpecialDescriptionExtractor(TEXTS.get("org.eclipse.scout.rt.spec.doc"), "_description")); return extractors; } @Override public List<IDocFilter<Class>> getFilters() { - // TODO ASA filter for types? return Collections.emptyList(); } @Override public String getTitle() { - return TEXTS.get("org.eclipse.scout.rt.spec.types"); + return null; } } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java index 44c567a99d..5593371cf9 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/config/entity/IDocEntityConfig.java @@ -28,7 +28,7 @@ public interface IDocEntityConfig<T> { * * @return a list of properties that should be generated. */ - List<IDocTextExtractor<T>> getTexts(); + List<IDocTextExtractor<T>> getPropertyTextExtractors(); /** * Configuration for filtering <code>T</code>. Only the objects accepted by all filters are generated. @@ -42,13 +42,13 @@ public interface IDocEntityConfig<T> { * * @return {@link IDocTextExtractor} */ - IDocTextExtractor<T> getId(); + IDocTextExtractor<T> getIdExtractor(); /** * Configuration describing an extractor for the title of the entity * * @return {@link IDocTextExtractor} */ - IDocTextExtractor<T> getTitle(); + IDocTextExtractor<T> getTitleExtractor(); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java index 3e53a4e505..52b6fd6966 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/DocGenUtility.java @@ -84,7 +84,7 @@ public final class DocGenUtility { * @return {@link IDocTable} */ public static <T> IDocTable createDocTable(T entity, IDocEntityConfig<T> config) { - List<IDocTextExtractor<T>> textExtractors = config.getTexts(); + List<IDocTextExtractor<T>> textExtractors = config.getPropertyTextExtractors(); List<String[]> rows = new ArrayList<String[]>(); String[] texts = DocGenUtility.getTexts(entity, textExtractors); if (texts != null && texts.length > 0) { diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java index 6567b641b7..a1cdadbd34 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/FormSpecGenerator.java @@ -44,8 +44,8 @@ public class FormSpecGenerator { IDocSection[] subSections = getSubSections(form, visitors); IDocTable formSpec = DocGenUtility.createDocTable(form, formConfig); - String id = formConfig.getId().getText(form); - String title = formConfig.getTitle().getText(form); + String id = formConfig.getIdExtractor().getText(form); + String title = formConfig.getTitleExtractor().getText(form); return new SectionWithTable(id, title, formSpec, subSections); } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java index 3bd5d5d228..2cf4846042 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/PageSpecGenerator.java @@ -31,8 +31,8 @@ public class PageSpecGenerator { public IDocSection getDocSection(IPageWithTable<? extends ITable> page) { IDocEntityConfig<IPageWithTable<? extends ITable>> tablePageConfig = m_config.getTablePageConfig(); - String id = tablePageConfig.getId().getText(page); - String title = tablePageConfig.getTitle().getText(page); + String id = tablePageConfig.getIdExtractor().getText(page); + String title = tablePageConfig.getTitleExtractor().getText(page); IColumn<?>[] columns = page.getTable().getColumns(); IMenu[] menus = page.getTable().getMenus(); diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java index 4d608dcc24..fe18d2e5d9 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/SmartFieldVisitor.java @@ -46,8 +46,8 @@ public class SmartFieldVisitor implements IDocFormFieldVisitor { * */ private IDocSection createDocSection(ISmartField<?> field) { - String id = m_config.getSmartFieldConfig().getId().getText(field); - String title = m_config.getSmartFieldConfig().getTitle().getText(field); + String id = m_config.getSmartFieldConfig().getIdExtractor().getText(field); + String title = m_config.getSmartFieldConfig().getTitleExtractor().getText(field); IDocTable docTable = DocGenUtility.createDocTable(field, m_config.getSmartFieldConfig()); IDocSection menuSection = DocGenUtility.createDocSection(field.getMenus(), m_config.getMenuConfig()); if (menuSection != null) { diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java index 2945ca4f56..13cb98b3b7 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TableFieldVisitor.java @@ -42,8 +42,8 @@ public class TableFieldVisitor implements IDocFormFieldVisitor { } private IDocSection createDocSection(ITableField<?> field) { - String id = m_config.getTableFieldConfig().getId().getText(field); - String title = m_config.getTableFieldConfig().getTitle().getText(field); + String id = m_config.getTableFieldConfig().getIdExtractor().getText(field); + String title = m_config.getTableFieldConfig().getTitleExtractor().getText(field); IDocSection menuSection = DocGenUtility.createDocSection(field.getTable().getMenus(), m_config.getMenuConfig()); IDocSection columnsSection = DocGenUtility.createDocSection(field.getTable().getColumns(), m_config.getColumnConfig()); return new SectionWithTable(id, title, menuSection, columnsSection); diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java index a5ceb31e11..520a7a485b 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/TypeSpecGenerator.java @@ -10,24 +10,25 @@ ******************************************************************************/ package org.eclipse.scout.rt.spec.client.gen; -import org.eclipse.scout.rt.shared.TEXTS; import org.eclipse.scout.rt.spec.client.config.IDocConfig; import org.eclipse.scout.rt.spec.client.out.IDocSection; import org.eclipse.scout.rt.spec.client.out.SectionWithTable; +import org.eclipse.scout.rt.spec.client.out.mediawiki.MediawikiUtility; -/** - * Creates Specification data for a page - */ public class TypeSpecGenerator { private final IDocConfig m_config; + private String m_id; + private String m_title; - public TypeSpecGenerator(IDocConfig config) { + public TypeSpecGenerator(IDocConfig config, String id, String title) { m_config = config; + m_id = id; + m_title = title; } - public IDocSection getDocSection(Class[] fieldTypes) { - - IDocSection typeSection = DocGenUtility.createDocSection(fieldTypes, m_config.getTypesConfig()); - return new SectionWithTable("org.eclipse.scout.rt.spec.types", TEXTS.get("org.eclipse.scout.rt.spec.types"), typeSection); + public IDocSection getDocSection(Class[] types) { + String titleWithAnchor = MediawikiUtility.transformToWiki(m_title + "{{" + m_id + "}}"); + IDocSection typeSection = DocGenUtility.createDocSection(types, m_config.getTypesConfig()); + return new SectionWithTable(m_id, titleWithAnchor, typeSection); } } diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractor.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractor.java new file mode 100644 index 0000000000..d12c1cdfc8 --- /dev/null +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/extract/SpecialDescriptionExtractor.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are 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 + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.spec.client.gen.extract; + +import org.eclipse.scout.commons.ConfigurationUtility; +import org.eclipse.scout.rt.shared.TEXTS; + +/** + * An {@link IDocTextExtractor} with the fully qualified class name as text. + */ +public class SpecialDescriptionExtractor extends AbstractNamedTextExtractor<Class> implements IDocTextExtractor<Class> { + + private String m_keySuffix; + + /** + * @param string + */ + public SpecialDescriptionExtractor(String name, String keySuffix) { + super(name); + m_keySuffix = keySuffix; + } + + /** + * @return fully qualified class name. + */ + @Override + public String getText(Class clazz) { + String doc = TEXTS.get(ConfigurationUtility.getAnnotatedClassIdWithFallback(clazz) + m_keySuffix); + // TODO ASA fix this hack: name.contains("{undefined text") + if (doc.startsWith("{undefined text")) { + return null; + } + return doc; + } + +} diff --git a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java index 382525cf8c..cae3d54e8c 100644 --- a/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java +++ b/org.eclipse.scout.rt.spec.client/src/org/eclipse/scout/rt/spec/client/gen/filter/DefaultDocFilter.java @@ -17,9 +17,13 @@ import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox; import org.eclipse.scout.rt.spec.client.gen.extract.DescriptionExtractor; /** - * A default doc filter that implements the following rules which can optionally be overridden with the annotation - * {@link Doc#filter()}:<br> - * TODO ASA docu: default filtering rules + * A default doc filter that implements the following rules: + * <p> + * <li>If a filter annotation ({@link Doc#filter()}) is present for the element filtering is applied according the + * annotation. + * <li>For GroupBoxes with no filter annotation and neither label nor description defined: {@link Filtering#TRANSPARENT} + * is applied. + * <li>For all other elements: {@link Filtering#ACCEPT} is applied. */ public class DefaultDocFilter<T> implements IDocFilter<T> { |