515404: Provide a way to get tables from Papyrus or Sirius
Change-Id: Ib432eeff0fad79320aba98765eb6914e330ba2dc
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=515404
Signed-off-by: Mohamed Ali BACH TOBJI <mohamed-ali.bachtobji@atos.net>
Signed-off-by: Antonio Campesino <antonio.campesino.robles@ericsson.com>
diff --git a/features/org.eclipse.gendoc.feature/feature.xml b/features/org.eclipse.gendoc.feature/feature.xml
index 9b5cf90..07c04e1 100644
--- a/features/org.eclipse.gendoc.feature/feature.xml
+++ b/features/org.eclipse.gendoc.feature/feature.xml
@@ -371,4 +371,10 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.gendoc.table"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
</feature>
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/META-INF/MANIFEST.MF
index a0f760d..66f6cb0 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/META-INF/MANIFEST.MF
@@ -18,7 +18,8 @@
org.eclipse.emf.edit,
org.eclipse.gendoc.tags.handlers,
org.eclipse.gendoc.tags,
- org.eclipse.gendoc.documents
+ org.eclipse.gendoc.documents,
+ org.eclipse.gendoc.table
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/pom.xml b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/pom.xml
index 1eb5092..6dc474c 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/pom.xml
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/pom.xml
@@ -37,6 +37,7 @@
</acceleoProject>
<packagesToRegister>
<packageToRegister>org.eclipse.emf.ecore.EcorePackage</packageToRegister>
+ <packageToRegister>org.eclipse.gendoc.table.TablePackage</packageToRegister>
</packagesToRegister>
</configuration>
</plugin>
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/CommonService.java b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/CommonService.java
index ce999b4..a0c34c5 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/CommonService.java
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/CommonService.java
@@ -13,7 +13,8 @@
* - Add format service
* Antonio Campesino (Ericsson) - Bug 477381 - [GenDoc] cleanAndFormat produces
* xml-encoded characters.
- *
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net fix bug #515404 :
+ add new method getTableId() to get unique id for a table
*****************************************************************************/
package org.eclipse.gendoc.bundle.acceleo.commons.files;
@@ -44,6 +45,7 @@
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
import org.eclipse.gendoc.documents.IAdditionalResourceService;
import org.eclipse.gendoc.documents.IDocumentService;
+import org.eclipse.gendoc.documents.ITableService;
import org.eclipse.gendoc.services.GendocServices;
import org.eclipse.gendoc.services.IGendocDiagnostician;
import org.eclipse.gendoc.services.IRegistryService;
@@ -52,6 +54,8 @@
import org.eclipse.gendoc.tags.handlers.IEMFModelLoaderService;
import org.osgi.framework.Bundle;
+import org.eclipse.gendoc.table.Table;
+
public class CommonService {
@@ -228,7 +232,21 @@
}
return id;
}
-
+
+ /**
+ * Returns a unique table id
+ *
+ * @param table
+ * @return
+ */
+ public static String getTableId(EObject table) {
+ if (table instanceof Table){
+ IDocumentService documentService = GendocServices.getDefault().getService(IDocumentService.class);
+ return documentService.getTableService().getTableId((Table) table);
+ }
+ return null;
+ }
+
/**
* Get the resource containing 'object' and load the resource with same URI
* except for fileExtension, replaced by extensionReplacement
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/commons.mtl b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/commons.mtl
index 7806092..17afa84 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/commons.mtl
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.commons/src/org/eclipse/gendoc/bundle/acceleo/commons/files/commons.mtl
@@ -8,8 +8,9 @@
Contributors:
Anne Haugommard (Atos Origin) anne.haugommard@atosorigin.com - Initial API and implementation
+ Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net fix bug #515404 : add new method getTableId() to get unique id for a table
/]
-[module commons('http://www.eclipse.org/emf/2002/Ecore')/]
+[module commons('http://www.eclipse.org/emf/2002/Ecore','http://www.eclipse.org/gendoc/1.0/table')/]
[comment - Replace special characters inside the given String <, >, &, ', " and replace them by corresponding XML codes/]
[query public clean(arg0 : String) : String
@@ -40,6 +41,10 @@
[query public getId(arg0 : OclAny) : String
= invoke('org.eclipse.gendoc.bundle.acceleo.commons.files.CommonService', 'getId(org.eclipse.emf.ecore.EObject)', Sequence{arg0}) /]
+[comment - returns a unique ID for the element table in parameter/]
+[query public getTableId(arg0 : OclAny) : String
+ = invoke('org.eclipse.gendoc.bundle.acceleo.commons.files.CommonService', 'getTableId(org.eclipse.emf.ecore.EObject)', Sequence{arg0}) /]
+
[comment - load (objet : OclAny, extensionReplacement : String) : String
for a Package p contained in the file located at file://c:/test/file.uml
the call : p.load('notation') will load the file located at file://c:/test/file.notation /]
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF
index 583a8d1..568231f 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF
@@ -23,7 +23,15 @@
org.eclipse.papyrus.uml.tools,
org.eclipse.papyrus.infra.core.log,
org.eclipse.papyrus.infra.services.resourceloading,
- org.eclipse.gendoc.bundle.acceleo.commons
+ org.eclipse.gendoc.bundle.acceleo.commons,
+ org.eclipse.papyrus.infra.nattable,
+ org.eclipse.gendoc.documents,
+ org.eclipse.gendoc.table,
+ org.eclipse.nebula.widgets.nattable.core,
+ org.eclipse.papyrus.infra.nattable.model,
+ org.eclipse.papyrus.infra.emf,
+ org.eclipse.papyrus.infra.services.labelprovider,
+ ca.odell.glazedlists
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/build.acceleo b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/build.acceleo
index 5d0ad38..48a111c 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/build.acceleo
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/build.acceleo
@@ -18,7 +18,7 @@
<acceleoCompiler
sourceFolder="${target.folder}"
outputFolder="${target.folder}"
- dependencies="${target.folder}/../../org.eclipse.gendoc.bundle.acceleo.gmf;${target.folder}/../../org.eclipse.gendoc.script.acceleo;${target.folder}/../../org.eclipse.gendoc.m2t;${target.folder}/../../org.eclipse.gendoc.services;${target.folder}/../../org.eclipse.gendoc.document.parser;${target.folder}/../../org.eclipse.gendoc.tags.handlers;${target.folder}/../../org.eclipse.gendoc.documents;${target.folder}/../../org.eclipse.gendoc.tags.parsers;${target.folder}/../../org.eclipse.gendoc.tags;${target.folder}/../../org.eclipse.gendoc.process;"
+ dependencies="${target.folder}/../../org.eclipse.gendoc.bundle.acceleo.gmf;${target.folder}/../../org.eclipse.gendoc.script.acceleo;${target.folder}/../../org.eclipse.gendoc.m2t;${target.folder}/../../org.eclipse.gendoc.services;${target.folder}/../../org.eclipse.gendoc.document.parser;${target.folder}/../../org.eclipse.gendoc.tags.handlers;${target.folder}/../../org.eclipse.gendoc.documents;${target.folder}/../../org.eclipse.gendoc.tags.parsers;${target.folder}/../../org.eclipse.gendoc.tags;${target.folder}/../../org.eclipse.gendoc.process;${target.folder}/../../org.eclipse.gendoc.model;"
binaryResource="false"
packagesToRegister="">
</acceleoCompiler>
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml
index 0c0a831..d683e77 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml
@@ -36,6 +36,9 @@
<packagesToRegister>
<packageToRegister>org.eclipse.emf.ecore.EcorePackage</packageToRegister>
<packageToRegister>org.eclipse.gmf.runtime.notation.NotationPackage</packageToRegister>
+ <packageToRegister>org.eclipse.papyrus.infra.nattable.model.nattable.NattablePackage</packageToRegister>
+ <packageToRegister>org.eclipse.gendoc.table.TablePackage</packageToRegister>
+ <packageToRegister>org.eclipse.uml2.uml.UMLPackage</packageToRegister>
</packagesToRegister>
</configuration>
</plugin>
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl
index 62f5438..b696f70 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl
@@ -5,9 +5,10 @@
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:
+ Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net fix bug #515404 : Papyrus table generation
/]
-[module papyrus('http://www.eclipse.org/gmf/runtime/1.0.2/notation')/]
+[module papyrus('http://www.eclipse.org/gmf/runtime/1.0.2/notation','http://www.eclipse.org/papyrus/nattable/model','http://www.eclipse.org/gendoc/1.0/table')/]
[comment - get the diagrams of an object /]
[query public getPapyrusDiagrams(arg0 : ecore::EObject) : Sequence(Diagram)
@@ -24,4 +25,9 @@
[query public replaceLinksByNameOrLabel(arg0 : String, arg1 : ecore::EObject) : String
= invoke('org.eclipse.gendoc.bundle.acceleo.papyrus.service.PapyrusServices', 'replaceLinksByNameOrLabel(java.lang.String, org.eclipse.emf.ecore.EObject)', Sequence{arg0, arg1}) /]
+
+[query public getPapyrusTables (arg0 : ecore::EObject) : Sequence(table::Table)
+= invoke('org.eclipse.gendoc.bundle.acceleo.papyrus.service.PapyrusServices', 'getPapyrusTables(org.eclipse.emf.ecore.EObject)', Sequence{arg0}) /]
+
+
[comment - virtual order methods must be implemented if the module is integrated to papyrus/]
\ No newline at end of file
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java
index e2a44de..8a0b0d8 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java
@@ -10,12 +10,15 @@
* Contributors:
* Alexia Allanic (Atos Origin) alexia.allanic@atosorigin.com - Initial API and implementation
* Anne Haugommard (Atos) anne.haugommard@atos.net - Remove references to Papyrus Documentation services
- *
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - fix bug #515404 : add getPapyrusTables method
+ * Antonio Campesino Robles (Ericsson) - Support for Tree tables.
*****************************************************************************/
package org.eclipse.gendoc.bundle.acceleo.papyrus.service;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
@@ -32,9 +35,15 @@
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EModelElement;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
+import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.gendoc.bundle.acceleo.commons.files.CommonService;
import org.eclipse.gendoc.bundle.acceleo.gmf.service.GMFServices;
import org.eclipse.gendoc.bundle.acceleo.papyrus.Activator;
@@ -42,12 +51,38 @@
import org.eclipse.gendoc.services.IGendocDiagnostician;
import org.eclipse.gendoc.services.ILogger;
import org.eclipse.gendoc.services.exception.ModelNotFoundException;
+import org.eclipse.gendoc.services.exception.ServiceException;
import org.eclipse.gendoc.tags.handlers.IEMFModelLoaderService;
import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
+import org.eclipse.nebula.widgets.nattable.layer.AbstractLayer;
+import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
+import org.eclipse.nebula.widgets.nattable.layer.ILayer;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.layer.cell.TranslatedLayerCell;
+import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForEObject;
+import org.eclipse.papyrus.infra.nattable.dataprovider.BodyDataProvider;
+import org.eclipse.papyrus.infra.nattable.manager.table.ITableAxisElementProvider;
+import org.eclipse.papyrus.infra.nattable.manager.table.ITreeNattableModelManager;
+import org.eclipse.papyrus.infra.nattable.manager.table.NattableModelManager;
+import org.eclipse.papyrus.infra.nattable.selection.ObjectsSelectionExtractor;
+import org.eclipse.papyrus.infra.nattable.utils.Constants;
+import org.eclipse.papyrus.infra.nattable.utils.LabelProviderCellContextElementWrapper;
+import org.eclipse.papyrus.infra.nattable.utils.NattableConfigAttributes;
+import org.eclipse.papyrus.infra.nattable.utils.NattableModelManagerFactory;
+import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.gendoc.table.Table;
+import org.eclipse.gendoc.table.TableFactory;
+import org.eclipse.gendoc.table.TableHeader;
+
public class PapyrusServices extends GMFServices {
private static final String ASSOCIATED_RESOURCES_SOURCE = "http://www.topcased.org/resources";
@@ -236,5 +271,156 @@
}
return uris;
}
+
+
+
+ /**
+ * Get a collection of papyrus tables
+ * @param modelElement
+ * @return
+ * @throws ServiceException
+ * @throws org.eclipse.papyrus.infra.core.services.ServiceException
+ */
+ public Collection<Table> getPapyrusTables(EObject modelElement) throws ServiceException, org.eclipse.papyrus.infra.core.services.ServiceException {
+ Collection<Table> result = null;
+
+ URI uri = modelElement.eResource().getURI();
+ Resource diResource = getDiResouce(modelElement, uri.trimFileExtension().appendFileExtension("notation"));
+ EditingDomain domain = TransactionUtil.getEditingDomain(diResource.getResourceSet());
+ if (domain == null) {
+ domain = TransactionalEditingDomainImpl.FactoryImpl.INSTANCE.createEditingDomain(diResource.getResourceSet());
+ }
+
+
+ for (Iterator<EObject> i = EcoreUtil.getAllProperContents(diResource, true); i.hasNext();) {
+ EObject eobject = i.next();
+ if (eobject instanceof org.eclipse.papyrus.infra.nattable.model.nattable.Table) {
+
+ org.eclipse.papyrus.infra.nattable.model.nattable.Table table = (org.eclipse.papyrus.infra.nattable.model.nattable.Table) eobject;
+ if (table.getOwner() != null && table.getOwner().equals(modelElement)) {
+ if(result == null)
+ {
+ result = new LinkedList<org.eclipse.gendoc.table.Table>();
+
+ }
+ result.add(getGendocTable(table));
+ }
+
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Transform a Papyrus Table to a GendocTable
+ * @param table Papyrus Nattable table
+ * @return the corresponding Gendoc table
+ * @throws ServiceException LabelProviderService not accessible
+ * @throws org.eclipse.papyrus.infra.core.services.ServiceException
+ */
+ private Table getGendocTable(org.eclipse.papyrus.infra.nattable.model.nattable.Table table) throws ServiceException, org.eclipse.papyrus.infra.core.services.ServiceException {
+ Table gendocTable = TableFactory.eINSTANCE.createTable();
+ // Set Papyrus table name
+ gendocTable.setName(table.getName());
+ // Set Papyrus table type
+ gendocTable.setType(table.getTableConfiguration().getType());
+ // Initialize useful services accessors
+ final NattableModelManager nattableModelManager = (NattableModelManager) NattableModelManagerFactory.INSTANCE
+ .createNatTableModelManager(table, new ObjectsSelectionExtractor());
+ ITableAxisElementProvider axisElementProvider = nattableModelManager.getTableAxisElementProvider();
+ List<Object> horizontalHeader = axisElementProvider.getColumnElementsList();
+ LabelProviderService labelProviderService = ServiceUtilsForEObject.getInstance().getServiceRegistry(table.getContext()).getService(LabelProviderService.class);
+ ConfigRegistry configRegistry = new ConfigRegistry();
+ configRegistry.registerConfigAttribute(NattableConfigAttributes.NATTABLE_MODEL_MANAGER_CONFIG_ATTRIBUTE, nattableModelManager, DisplayMode.NORMAL, NattableConfigAttributes.NATTABLE_MODEL_MANAGER_ID);
+ configRegistry.registerConfigAttribute(NattableConfigAttributes.LABEL_PROVIDER_SERVICE_CONFIG_ATTRIBUTE, labelProviderService, DisplayMode.NORMAL, NattableConfigAttributes.LABEL_PROVIDER_SERVICE_ID);
+ LabelProviderService serv = configRegistry.getConfigAttribute(NattableConfigAttributes.LABEL_PROVIDER_SERVICE_CONFIG_ATTRIBUTE, DisplayMode.NORMAL, NattableConfigAttributes.LABEL_PROVIDER_SERVICE_ID);
+
+ // extracting data from axis
+ TableHeader header = TableFactory.eINSTANCE.createTableHeader();
+ for (Object axis : horizontalHeader) {
+ org.eclipse.gendoc.table.Cell cell = TableFactory.eINSTANCE.createCell();
+ cell.setLabel( getColumnLabel(nattableModelManager, configRegistry, serv, axis));
+ header.getCells().add(cell);
+ }
+ gendocTable.setTableheader(header);
+
+ // extracting data from body cells
+
+ //FIXME remove references to ILayer, ILayerCell
+ ILayer dataLayer = new DataLayer(new BodyDataProvider(nattableModelManager));
+ ((AbstractLayer) dataLayer).setConfigLabelAccumulator(new ColumnOverrideLabelAccumulator(dataLayer));
+ ((AbstractLayer) dataLayer).setRegionName(GridRegion.BODY);
+ ILayerCell layer = new TranslatedLayerCell(null, dataLayer,0, 0, 0, 0);
+ for (int rowPosition = 0; rowPosition < nattableModelManager.getRowCount(); rowPosition++) {
+ boolean isEmpty = (nattableModelManager instanceof ITreeNattableModelManager);
+ org.eclipse.gendoc.table.Row row = TableFactory.eINSTANCE.createRow();
+ for (int columnPosition = 0; columnPosition < nattableModelManager.getColumnCount(); columnPosition++) {
+ org.eclipse.gendoc.table.Cell cell = TableFactory.eINSTANCE.createCell();
+ Object value = nattableModelManager.getDataValue(columnPosition, rowPosition);
+ LabelProviderCellContextElementWrapper contextElement = new LabelProviderCellContextElementWrapper();
+ contextElement.setObject(value);
+ contextElement.setConfigRegistry(configRegistry);
+ ILabelProvider bodylabelProvider = serv.getLabelProvider(Constants.TABLE_LABEL_PROVIDER_CONTEXT, contextElement);
+ contextElement.setCell(layer);
+ String label = bodylabelProvider.getText(value);
+ cell.setLabel(label);
+ isEmpty = isEmpty && label.isEmpty();
+ row.getCells().add(cell);
+ if (nattableModelManager instanceof ITreeNattableModelManager) {
+ ((ITreeNattableModelManager)nattableModelManager).getTreeList().setExpanded(rowPosition, true);
+ }
+ }
+ if (!isEmpty)
+ gendocTable.getRows().add(row);
+ }
+ return gendocTable;
+ }
+
+ /**
+ * Get a label of Papyrus table axis
+ * @param nattableModelManager
+ * @param configRegistry
+ * @param serv
+ * @param axis
+ * @return
+ */
+ private String getColumnLabel(final NattableModelManager nattableModelManager, ConfigRegistry configRegistry,
+ LabelProviderService serv, Object axis) {
+ LabelProviderCellContextElementWrapper contextElement = new LabelProviderCellContextElementWrapper();
+ contextElement.setObject(axis);
+ contextElement.setConfigRegistry(configRegistry);
+
+ //FIXME remove references to ILayer, ILayerCell
+ ILayer dataLayer = new DataLayer(new BodyDataProvider(nattableModelManager));
+ ((AbstractLayer) dataLayer).setConfigLabelAccumulator(new ColumnOverrideLabelAccumulator(dataLayer));
+ ((AbstractLayer) dataLayer).setRegionName(GridRegion.COLUMN_HEADER);
+ ILayerCell layer = new TranslatedLayerCell(null, dataLayer,0, 0, 0, 0);
+ contextElement.setCell(layer);
+ ILabelProvider headerlabelProvider = serv.getLabelProvider(Constants.HEADER_LABEL_PROVIDER_CONTEXT, contextElement);
+ return headerlabelProvider.getText(contextElement);
+ }
+
+ /**
+ * @param modelElement
+ * @param notationFile
+ * @return
+ */
+ private Resource getDiResouce(EObject modelElement, URI notationFile) {
+ Resource diResource = null;
+ if (modelElement.eResource().getURI().equals(notationFile)) {
+ diResource = modelElement.eResource();
+ } else {
+ try {
+ diResource = modelElement.eResource().getResourceSet().getResource(notationFile, true);
+ } catch (WrappedException ex) {
+ IGendocDiagnostician diag = GendocServices.getDefault().getService(IGendocDiagnostician.class);
+ diag.addDiagnostic(new BasicDiagnostic(Diagnostic.ERROR, Activator.PLUGIN_ID, 0,
+ String.format("Resource %s not found", notationFile.toString()), new Object[] { modelElement }));
+ ex.printStackTrace();
+ }
+
+ }
+ return diResource;
+ }
}
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF
index 7b933ad..38b28c8 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF
@@ -18,7 +18,10 @@
org.eclipse.gendoc.process,
org.eclipse.gendoc.tags.handlers,
org.eclipse.sirius.diagram;bundle-version="2.0.4",
- org.eclipse.gendoc.bundle.acceleo.commons;bundle-version="0.6.0"
+ org.eclipse.gendoc.bundle.acceleo.commons;bundle-version="0.6.0",
+ org.eclipse.sirius.table;bundle-version="4.1.3",
+ org.eclipse.gendoc.documents,
+ org.eclipse.gendoc.table
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/pom.xml b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/pom.xml
index 817090e..ee51c57 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/pom.xml
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/pom.xml
@@ -39,6 +39,7 @@
<packageToRegister>org.eclipse.emf.ecore.EcorePackage</packageToRegister>
<packageToRegister>org.eclipse.gmf.runtime.notation.NotationPackage</packageToRegister>
<packageToRegister>org.eclipse.sirius.diagram.DiagramPackage</packageToRegister>
+ <packageToRegister>org.eclipse.gendoc.table.TablePackage</packageToRegister>
</packagesToRegister>
</configuration>
</plugin>
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/mtl/sirius.mtl b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/mtl/sirius.mtl
index f3429b5..e95908d 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/mtl/sirius.mtl
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/mtl/sirius.mtl
@@ -5,9 +5,10 @@
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:
+ Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net fix bug #515404 : Sirius table generation
/]
-[module sirius('http://www.eclipse.org/gmf/runtime/1.0.2/notation', 'http://www.eclipse.org/sirius/diagram/1.1.0')/]
+[module sirius('http://www.eclipse.org/gmf/runtime/1.0.2/notation', 'http://www.eclipse.org/sirius/diagram/1.1.0','http://www.eclipse.org/gendoc/1.0/table')/]
[comment - get the diagrams of an object /]
[query public getSiriusDiagrams(arg0 : ecore::EObject) : Sequence(Diagram)
@@ -17,3 +18,7 @@
[query public getSiriusDiagramName(di : Diagram) : String
= di.eContainer().eContainer().oclAsType(diagram::DSemanticDiagram).name /]
+
+
+[query public getSiriusTables(arg0 : ecore::EObject) : Sequence(table::Table)
+ = invoke('org.eclipse.gendoc.bundle.acceleo.sirius.service.SiriusServices', 'getSiriusTables(org.eclipse.emf.ecore.EObject)', Sequence{arg0})/]
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/service/SiriusServices.java b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/service/SiriusServices.java
index 201e25f..00eeac5 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/service/SiriusServices.java
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/src/org/eclipse/gendoc/bundle/acceleo/sirius/service/SiriusServices.java
@@ -13,8 +13,15 @@
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.sirius.business.api.session.CustomDataConstants;
import org.eclipse.sirius.diagram.DSemanticDiagram;
+import org.eclipse.sirius.table.metamodel.table.DTable;
+import org.eclipse.sirius.table.tools.internal.export.csv.TableCsvHelper;
import org.eclipse.sirius.viewpoint.description.AnnotationEntry;
+import org.eclipse.gendoc.table.Cell;
+import org.eclipse.gendoc.table.Row;
+import org.eclipse.gendoc.table.Table;
+import org.eclipse.gendoc.table.TableFactory;
+import org.eclipse.gendoc.table.TableHeader;
public class SiriusServices {
@@ -49,4 +56,62 @@
}
return result;
}
+
+ /**
+ * Get sirius tables under element object
+ * @param element
+ * @return
+ */
+ public Collection<org.eclipse.gendoc.table.Table> getSiriusTables(EObject element) {
+ // TO IMPROVE ? reuse existing sirius services ?
+ CommonService.load(element, "aird");
+ ResourceSet set = null;
+ if (element.eResource() != null && element.eResource().getResourceSet() != null){
+ set = element.eResource().getResourceSet();
+ }
+ if (set == null){
+ return null;
+ }
+ ECrossReferenceAdapter cross = ECrossReferenceAdapter.getCrossReferenceAdapter(set);
+ if (cross == null){
+ cross = new ECrossReferenceAdapter();
+ set.eAdapters().add(cross);
+ }
+
+ Collection<Setting> inverses = cross.getInverseReferences(element, true);
+ Collection<org.eclipse.gendoc.table.Table> results = new LinkedList<org.eclipse.gendoc.table.Table>();
+ for (Setting s : inverses){
+ if (s.getEObject() instanceof DTable) {
+
+ DTable sem = (DTable) s.getEObject();
+ Table result = TableFactory.eINSTANCE.createTable();
+ result.setName(sem.getName());
+ Iterable<Iterable<String>> tableDescriptors = TableCsvHelper.getTableDescriptor(sem);
+ int index=0;
+ for (Iterable<java.lang.String> line : tableDescriptors) {
+ if (index==0){
+ TableHeader header = TableFactory.eINSTANCE.createTableHeader();
+ for (String cellValue : line) {
+ Cell cell = TableFactory.eINSTANCE.createCell();
+ cell.setLabel(cellValue);
+ header.getCells().add(cell);
+ }
+ result.setTableheader(header);
+ } else {
+
+ Row row = TableFactory.eINSTANCE.createRow();
+ for (String cellValue : line) {
+ Cell cell = TableFactory.eINSTANCE.createCell();
+ cell.setLabel(cellValue);
+ row.getCells().add(cell);
+ }
+ result.getRows().add(row);
+ }
+ index++;
+ }
+ results.add(result);
+ }
+ }
+ return results;
+ }
}
diff --git a/plugins/org.eclipse.gendoc.documents/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.documents/META-INF/MANIFEST.MF
index 4239aa5..3d67e89 100644
--- a/plugins/org.eclipse.gendoc.documents/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.documents/META-INF/MANIFEST.MF
@@ -11,6 +11,7 @@
org.eclipse.gendoc.tags.parsers,
org.eclipse.gendoc.services,
org.eclipse.gendoc.tags,
- org.apache.xmlgraphics
+ org.apache.xmlgraphics,
+ org.eclipse.gendoc.table
Export-Package: org.eclipse.gendoc.documents
Bundle-ClassPath: .
diff --git a/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/AbstractTableService.java b/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/AbstractTableService.java
new file mode 100644
index 0000000..6c24976
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/AbstractTableService.java
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ * Copyright (c) 2017 Atos.
+ *
+ *
+ * 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:
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.gendoc.documents;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.gendoc.documents.impl.IDGenerator;
+import org.eclipse.gendoc.services.AbstractService;
+
+import org.eclipse.gendoc.table.Table;
+
+public abstract class AbstractTableService extends AbstractService implements ITableService{
+
+ /**
+ *
+ * This table is dedicated to save table instances
+ * Table Map
+ */
+ private final Map<String, Table> tableMap = new HashMap<String,Table>();
+
+ public String getTableId(Table table) {
+ String key = IDGenerator.nextID();
+ tableMap.put(key, table);
+ return key;
+ }
+
+ public Table getTable(String tableId){
+ return tableMap.get(tableId);
+ }
+}
diff --git a/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/IDocumentService.java b/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/IDocumentService.java
index 070544b..2a50bed 100644
--- a/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/IDocumentService.java
+++ b/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/IDocumentService.java
@@ -103,6 +103,12 @@
String getTableLabel();
+
+
+ String getRowLabel();
+
+ String getCellLabel();
+
IAdditionalResourceService getAdditionalResourceService();
/**
@@ -136,4 +142,6 @@
* @return
*/
public String format(String input);
+
+ ITableService getTableService();
}
diff --git a/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/ITableService.java b/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/ITableService.java
new file mode 100644
index 0000000..a016edd
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.documents/src/org/eclipse/gendoc/documents/ITableService.java
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * Copyright (c) 2017 Atos.
+ *
+ *
+ * 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:
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.gendoc.documents;
+
+import org.eclipse.gendoc.services.IService;
+import org.eclipse.gendoc.services.exception.InvalidContentException;
+import org.eclipse.gendoc.tags.ITag;
+import org.w3c.dom.Node;
+
+import org.eclipse.gendoc.table.Table;
+
+public interface ITableService extends IService {
+
+
+ /**
+ * Returns the generated table
+ * @param tag
+ * @param documentService
+ * @param returnValue
+ * @param tableModel
+ * @param tableNode
+ * @return
+ * @throws InvalidContentException
+ */
+ String manageTable(ITag tag, IDocumentService documentService, StringBuffer returnValue, Object tableModel,
+ Node tableNode) throws InvalidContentException;
+
+ /**
+ * Returns a unique Id for the table parameter
+ * @param e
+ * @return
+ */
+ String getTableId(Table e);
+
+
+ /**
+ * Returns the table whose id is given as parameter
+ * @param tableId
+ * @return
+ */
+ Table getTable(String tableId);
+
+}
diff --git a/plugins/org.eclipse.gendoc.services.docx/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.services.docx/META-INF/MANIFEST.MF
index f69de2d..72c86f2 100644
--- a/plugins/org.eclipse.gendoc.services.docx/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.services.docx/META-INF/MANIFEST.MF
@@ -12,9 +12,11 @@
org.eclipse.gendoc.tags,
org.eclipse.gendoc.tags.handlers,
org.eclipse.gendoc.documents.metadata,
- org.eclipse.gendoc.ui
+ org.eclipse.gendoc.ui,
+ org.eclipse.gendoc.table
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.gendoc.services.docx
Eclipse-RegisterBuddy: org.eclipse.gendoc.services
-Import-Package: org.eclipse.emf.common.util
+Import-Package: org.eclipse.emf.common.util,
+ org.eclipse.draw2d.graph
diff --git a/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXDocumentService.java b/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXDocumentService.java
index 6251310..37aeee5 100644
--- a/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXDocumentService.java
+++ b/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXDocumentService.java
@@ -39,6 +39,7 @@
import org.eclipse.gendoc.document.parser.documents.docx.DocxNamespaceContext;
import org.eclipse.gendoc.documents.IAdditionalResourceService;
import org.eclipse.gendoc.documents.IMimeHtmlService;
+import org.eclipse.gendoc.documents.ITableService;
import org.eclipse.gendoc.documents.XMLDocumentService;
import org.eclipse.gendoc.documents.metadata.IDocumentMetadataService;
import org.eclipse.gendoc.services.exception.DocumentServiceException;
@@ -65,11 +66,14 @@
/** The Constant TRANSFORMER_FACTORY create a XML transformation . */
private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
+ private ITableService tableService;
+
public DOCXDocumentService()
{
super();
additionalResourceService = new DOCXAdditionalResourceService();
mimehtmlservice = new DOCXMimeHtmlService();
+ tableService = new DOCXTableService();
}
public DOCXDocumentService(Document document)
@@ -77,6 +81,7 @@
super(document);
additionalResourceService = new DOCXAdditionalResourceService();
mimehtmlservice = new DOCXMimeHtmlService();
+ tableService = new DOCXTableService();
}
public String getListLabel()
@@ -108,6 +113,20 @@
{
return "w:tr".equals(label);
}
+
+
+
+ public String getRowLabel() {
+
+ return "w:tr";
+ }
+
+ public String getCellLabel()
+ {
+ return "w:tc";
+ }
+
+
public boolean isCell(String label)
{
@@ -495,5 +514,14 @@
}
private Map<String, String> mapping;
- }
+ }
+
+
+
+ @Override
+ public ITableService getTableService() {
+ return tableService;
+ }
+
+
}
diff --git a/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXTableService.java b/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXTableService.java
new file mode 100644
index 0000000..4e973c9
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.services.docx/src/org/eclipse/gendoc/services/docx/DOCXTableService.java
@@ -0,0 +1,179 @@
+/*****************************************************************************
+ * Copyright (c) 2017 Atos.
+ *
+ *
+ * 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:
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.gendoc.services.docx;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gendoc.documents.AbstractTableService;
+import org.eclipse.gendoc.documents.IDocumentService;
+import org.eclipse.gendoc.services.exception.InvalidContentException;
+import org.eclipse.gendoc.tags.ITag;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.eclipse.gendoc.table.Cell;
+import org.eclipse.gendoc.table.Row;
+import org.eclipse.gendoc.table.Table;
+
+public class DOCXTableService extends AbstractTableService {
+
+ /*
+ *
+ * @see
+ * org.eclipse.gendoc.documents.ITableService#manageTable(org.eclipse.gendoc
+ * .tags.ITag, org.eclipse.gendoc.documents.IDocumentService,
+ * java.lang.StringBuffer, java.lang.Object, org.w3c.dom.Node)
+ */
+ public String manageTable(ITag tag, IDocumentService documentService, StringBuffer returnValue, Object tableModel,
+ Node tableNode) throws InvalidContentException {
+ Node mainTable = tableNode.getFirstChild();
+ if (documentService.isTable(mainTable.getNodeName())) {
+ if (tableModel instanceof Table) {
+
+ // extract width of the table to generate
+ String wdth = getChildNode("w:gridCol", getChildNode("w:tblGrid", mainTable)).getAttributes()
+ .getNamedItem("w:w").getNodeValue();
+ Node rowNode = getChildNode(documentService.getRowLabel(), mainTable);
+ String rowLabel = documentService.getRowLabel();
+ /**
+ * FIXME find a better way to get the row label index
+ */
+ Pattern rowPattern = Pattern.compile("<" + rowLabel + "[^<>]*>.*</" + rowLabel + ">");
+ Matcher rowm = rowPattern.matcher(returnValue);
+ int index_row_start = 0;
+ int index_row_end = 0;
+ if (rowm.find()) {
+ index_row_start = rowm.start();
+ index_row_end = returnValue.lastIndexOf("</" + rowLabel + ">");
+ String row = returnValue.substring(index_row_start, index_row_end + rowLabel.length() + 3);
+ String colLabel = documentService.getCellLabel();
+ int index_col_start = row.lastIndexOf("<" + colLabel + ">");
+ int index_col_end = row.lastIndexOf("</" + colLabel + ">");
+ Node colNode = getChildNode(documentService.getCellLabel(), rowNode);
+ int nbCol = ((Table) tableModel).getColCount();
+ int colWidth = Math.round(Integer.parseInt(wdth) / nbCol);
+ getChildNode("w:tcW", getChildNode("w:tcPr", colNode)).getAttributes().getNamedItem("w:w")
+ .setNodeValue(String.valueOf(colWidth));
+ StringBuffer colNodetxt = new StringBuffer(documentService.asText(colNode));
+ String txtLabel = "w:p";
+ String txtstyleLabel = "w:rPr";
+ Pattern txtPattern = Pattern.compile("<" + txtLabel + "[^<>]*>.*</" + txtLabel + ">");
+ Pattern txtstylePattern = Pattern
+ .compile("<" + txtstyleLabel + "[^<>]*>.*</" + txtstyleLabel + ">");
+ Matcher txtm = txtPattern.matcher(colNodetxt);
+ Matcher txtstylem = txtstylePattern.matcher(colNodetxt);
+ if (txtm.find()) {
+ String style = "";
+ if (txtstylem.find()) {
+ style = colNodetxt.substring(txtstylem.start(),
+ txtstylem.end() + txtstyleLabel.length() + 3);
+ }
+
+ return generateTable(returnValue, tableModel, rowLabel, index_row_start, index_row_end, row,
+ colLabel, index_col_start, index_col_end, colNodetxt, txtm, style, txtLabel);
+ }
+ }
+ }
+
+ }
+ return null;
+ }
+
+ /**
+ * Get a node from the parent node given as parameter
+ *
+ * @param label
+ * of the node to fetch
+ * @param parentnode
+ * @return
+ */
+ private Node getChildNode(String label, Node parentnode) {
+
+ NodeList rowChildNodes = parentnode.getChildNodes();
+ for (int i = 0; i < rowChildNodes.getLength(); i++) {
+ Node current = rowChildNodes.item(i);
+ if (current.getNodeName() == label) {
+ return current;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Generates the table
+ *
+ * @param returnValue
+ * @param tableModel
+ * @param rowLabel
+ * @param index_row_start
+ * @param index_row_end
+ * @param row
+ * @param colLabel
+ * @param index_col_start
+ * @param index_col_end
+ * @param colNodetxt
+ * @param txtm
+ * @param rows
+ * @param style
+ * @param txtLabel
+ * @return
+ */
+ private String generateTable(StringBuffer returnValue, Object tableModel, String rowLabel, int index_row_start,
+ int index_row_end, String row, String colLabel, int index_col_start, int index_col_end,
+ StringBuffer colNodetxt, Matcher txtm, String style, String txtLabel) {
+ String rows = "";
+ String cells = "";
+ // generate table header
+ StringBuffer newRow = new StringBuffer(row);
+ cells = generateCells(((Table) tableModel).getTableheader().getCells(), colNodetxt, txtm, style, txtLabel);
+ newRow.replace(index_col_start, index_col_end + colLabel.length() + 3, cells);
+ rows += newRow.toString();
+ // generate table body
+ for (Row r : ((Table) tableModel).getRows()) {
+ newRow = new StringBuffer(row);
+ cells = generateCells(r.getCells(), colNodetxt, txtm, style, txtLabel);
+ newRow.replace(index_col_start, index_col_end + colLabel.length() + 3, cells);
+ rows += newRow.toString();
+ }
+ return returnValue.replace(index_row_start, index_row_end + rowLabel.length() + 3, rows).toString();
+ }
+
+ /**
+ * Generates a row
+ *
+ * @param modelCells
+ * @param colNodetxt
+ * @param txtm
+ * @param style
+ * @param txtLabel
+ * @param cols
+ * @return
+ */
+ private String generateCells(EList<Cell> modelCells, StringBuffer colNodetxt, Matcher txtm, String style,
+ String txtLabel) {
+ String cols = "";
+ for (Cell cell : modelCells) {
+ StringBuffer newCol;
+ int txtindex = txtm.end() - txtLabel.length() - 3;
+ newCol = new StringBuffer(colNodetxt.toString());
+ newCol.insert(txtindex, "<w:r>" + style + "<w:t>" + cell.getLabel() + "</w:t></w:r>");
+ cols += newCol.toString();
+
+ }
+ return cols;
+ }
+
+}
diff --git a/plugins/org.eclipse.gendoc.services.odt/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.services.odt/META-INF/MANIFEST.MF
index 0a40261..e4747ca 100644
--- a/plugins/org.eclipse.gendoc.services.odt/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.services.odt/META-INF/MANIFEST.MF
@@ -11,8 +11,9 @@
org.eclipse.gendoc.documents,
org.eclipse.gendoc.services,
org.eclipse.gendoc.tags,
+ org.eclipse.gendoc.ui,
org.eclipse.gendoc.tags.handlers,
- org.eclipse.gendoc.ui
+ org.eclipse.gendoc.table
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.gendoc.services.odt
diff --git a/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTDocumentService.java b/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTDocumentService.java
index 6579ec3..accf1ac 100644
--- a/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTDocumentService.java
+++ b/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTDocumentService.java
@@ -38,6 +38,7 @@
import org.eclipse.gendoc.document.parser.documents.odt.ODTDocument;
import org.eclipse.gendoc.document.parser.documents.odt.ODTNamespaceContext;
import org.eclipse.gendoc.documents.IAdditionalResourceService;
+import org.eclipse.gendoc.documents.ITableService;
import org.eclipse.gendoc.documents.XMLDocumentService;
import org.eclipse.gendoc.services.exception.DocumentServiceException;
import org.eclipse.gendoc.services.exception.InvalidContentException;
@@ -64,17 +65,19 @@
private final String TAG_TABLE = "table:table";
private String serviceId;
-
+ private ITableService tableService;
public ODTDocumentService()
{
super();
additionalResourceService = new ODTAdditionalResourceService();
+ tableService = new ODTTableService();
}
public ODTDocumentService(Document document)
{
super(document);
additionalResourceService = new ODTAdditionalResourceService();
+ tableService = new ODTTableService();
}
public boolean isList(String label)
@@ -469,5 +472,27 @@
.replace(TABULATION,TAB)
.replace("\t",TAB);
}
-
+
+ @Override
+ public String getRowLabel() {
+ return "table:table-row";
+ }
+
+ @Override
+ public String getCellLabel() {
+
+ return "table:table-cell";
+ }
+
+
+
+
+ @Override
+ public ITableService getTableService() {
+
+ return tableService;
+ }
+
+
+
}
diff --git a/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTTableService.java b/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTTableService.java
new file mode 100644
index 0000000..045d4a3
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.services.odt/src/org/eclipse/gendoc/services/odt/ODTTableService.java
@@ -0,0 +1,153 @@
+/*****************************************************************************
+ * Copyright (c) 2017 Atos.
+ *
+ *
+ * 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:
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.gendoc.services.odt;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gendoc.documents.AbstractTableService;
+import org.eclipse.gendoc.documents.IDocumentService;
+import org.eclipse.gendoc.services.exception.InvalidContentException;
+import org.eclipse.gendoc.tags.ITag;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.eclipse.gendoc.table.Cell;
+import org.eclipse.gendoc.table.Row;
+import org.eclipse.gendoc.table.Table;
+
+public class ODTTableService extends AbstractTableService {
+
+ @Override
+ public String manageTable(ITag tag, IDocumentService documentService, StringBuffer returnValue, Object tableModel,
+ Node tableNode) throws InvalidContentException {
+
+ Node mainTable = tableNode.getFirstChild();
+ if (documentService.isTable(mainTable.getNodeName())) {
+ if (tableModel instanceof Table) {
+
+ int nbCol = ((Table) tableModel).getColCount();
+ String colLabel = "table:table-column";
+ int index_col_start = returnValue.indexOf("<" + colLabel);
+ returnValue.insert(index_col_start + colLabel.length() + 1,
+ " table:number-columns-repeated=\"" + nbCol + "\"");
+ Node rowNode = getChildNode(documentService.getRowLabel(), mainTable);
+ String rowLabel = documentService.getRowLabel();
+
+ Pattern rowPattern = Pattern.compile("<" + rowLabel + "[^<>]*>.*</" + rowLabel + ">");
+ Matcher rowm = rowPattern.matcher(returnValue);
+ int index_row_start = 0;
+ int index_row_end = 0;
+ if (rowm.find()) {
+ index_row_start = rowm.start();
+ index_row_end = returnValue.lastIndexOf("</" + rowLabel + ">");
+
+ String row = returnValue.substring(index_row_start, index_row_end + rowLabel.length() + 3);
+
+ String cellLabel = documentService.getCellLabel();
+ int index_cell_start = row.indexOf("<" + cellLabel);
+ int index_cell_end = row.lastIndexOf("</" + cellLabel + ">");
+
+ Node cellNode = getChildNode(documentService.getCellLabel(), rowNode);
+ if (cellNode != null) {
+ StringBuffer colNodetxt = new StringBuffer(documentService.asText(cellNode));
+ String txtLabel = "text:p";
+ Pattern txtPattern = Pattern.compile("<" + txtLabel + "[^<>]*>.*</" + txtLabel + ">");
+ Matcher txtm = txtPattern.matcher(colNodetxt);
+ if (txtm.find()) {
+ String style = "";
+ return generateTable(returnValue, tableModel, rowLabel, index_row_start, index_row_end, row,
+ cellLabel, index_cell_start, index_cell_end, colNodetxt, txtm, style, txtLabel);
+ }
+ }
+ }
+ }
+
+ }
+ return null;
+ }
+
+ private Node getChildNode(String label, Node node) {
+
+ NodeList rowChildNodes = node.getChildNodes();
+ for (int i = 0; i < rowChildNodes.getLength(); i++) {
+ Node current = rowChildNodes.item(i);
+ if (current.getNodeName() == label) {
+ return current;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @param returnValue
+ * @param tableModel
+ * @param rowLabel
+ * @param index_row_start
+ * @param index_row_end
+ * @param row
+ * @param colLabel
+ * @param index_col_start
+ * @param index_col_end
+ * @param colNodetxt
+ * @param txtm
+ * @param rows
+ * @param style
+ * @param txtLabel
+ * @return
+ */
+ private String generateTable(StringBuffer returnValue, Object tableModel, String rowLabel, int index_row_start,
+ int index_row_end, String row, String colLabel, int index_col_start, int index_col_end,
+ StringBuffer colNodetxt, Matcher txtm, String style, String txtLabel) {
+ String rows = "";
+ String cells = "";
+ // generating table header
+ StringBuffer newRow = new StringBuffer(row);
+ cells = generateCells(((Table) tableModel).getTableheader().getCells(), colNodetxt, txtm, style, txtLabel);
+ newRow.replace(index_col_start, index_col_end + colLabel.length() + 3, cells);
+ rows += newRow.toString();
+ // generating table body
+ for (Row r : ((Table) tableModel).getRows()) {
+ newRow = new StringBuffer(row);
+ cells = generateCells(r.getCells(), colNodetxt, txtm, style, txtLabel);
+ newRow.replace(index_col_start, index_col_end + colLabel.length() + 3, cells);
+ rows += newRow.toString();
+ }
+ return returnValue.replace(index_row_start, index_row_end + rowLabel.length() + 3, rows).toString();
+ }
+
+ /**
+ * @param modelCells
+ * @param colNodetxt
+ * @param txtm
+ * @param style
+ * @param txtLabel
+ * @param cols
+ * @return
+ */
+ private String generateCells(EList<Cell> modelCells, StringBuffer colNodetxt, Matcher txtm, String style,
+ String txtLabel) {
+ String cols = "";
+ for (Cell cell : modelCells) {
+ StringBuffer newCol;
+ int txtindex = txtm.end() - txtLabel.length() - 3;
+ newCol = new StringBuffer(colNodetxt.toString());
+ newCol.insert(txtindex, cell.getLabel());
+ cols += newCol.toString();
+ }
+ return cols;
+ }
+
+}
diff --git a/plugins/org.eclipse.gendoc.services.pptx/src/org/eclipse/gendoc/services/pptx/PPTXDocumentService.java b/plugins/org.eclipse.gendoc.services.pptx/src/org/eclipse/gendoc/services/pptx/PPTXDocumentService.java
index 35e8e44..199d6dc 100644
--- a/plugins/org.eclipse.gendoc.services.pptx/src/org/eclipse/gendoc/services/pptx/PPTXDocumentService.java
+++ b/plugins/org.eclipse.gendoc.services.pptx/src/org/eclipse/gendoc/services/pptx/PPTXDocumentService.java
@@ -38,6 +38,7 @@
import org.eclipse.gendoc.document.parser.pptx.PPTXNamespaceContext;
import org.eclipse.gendoc.documents.IAdditionalResourceService;
import org.eclipse.gendoc.documents.IDocumentService;
+import org.eclipse.gendoc.documents.ITableService;
import org.eclipse.gendoc.documents.XMLDocumentService;
import org.eclipse.gendoc.services.exception.DocumentServiceException;
import org.eclipse.gendoc.services.exception.InvalidContentException;
@@ -331,4 +332,22 @@
return null;
}
+ @Override
+ public String getRowLabel() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getCellLabel() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ITableService getTableService() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
diff --git a/plugins/org.eclipse.gendoc.services.xlsx/src/org/eclipse/gendoc/services/xlsx/XLSXDocumentService.java b/plugins/org.eclipse.gendoc.services.xlsx/src/org/eclipse/gendoc/services/xlsx/XLSXDocumentService.java
index a1bc9a6..52da8ea 100644
--- a/plugins/org.eclipse.gendoc.services.xlsx/src/org/eclipse/gendoc/services/xlsx/XLSXDocumentService.java
+++ b/plugins/org.eclipse.gendoc.services.xlsx/src/org/eclipse/gendoc/services/xlsx/XLSXDocumentService.java
@@ -40,6 +40,7 @@
import org.eclipse.gendoc.document.parser.xlsx.XLSXParser;
import org.eclipse.gendoc.documents.IAdditionalResourceService;
import org.eclipse.gendoc.documents.IDocumentService;
+import org.eclipse.gendoc.documents.ITableService;
import org.eclipse.gendoc.documents.XMLDocumentService;
import org.eclipse.gendoc.services.exception.DocumentServiceException;
import org.eclipse.gendoc.services.exception.InvalidContentException;
@@ -338,4 +339,23 @@
return null;
}
+ @Override
+ public String getRowLabel() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getCellLabel() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ITableService getTableService() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
}
diff --git a/plugins/org.eclipse.gendoc.table/.classpath b/plugins/org.eclipse.gendoc.table/.classpath
new file mode 100644
index 0000000..deb6736
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gendoc.table/.gitignore b/plugins/org.eclipse.gendoc.table/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/org.eclipse.gendoc.table/.project b/plugins/org.eclipse.gendoc.table/.project
new file mode 100644
index 0000000..4e9b7a4
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gendoc.table</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gendoc.table/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gendoc.table/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.eclipse.gendoc.table/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.table/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a04eb62
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gendoc.table;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package:
+ org.eclipse.gendoc.table,
+ org.eclipse.gendoc.table.impl,
+ org.eclipse.gendoc.table.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.gendoc.table/build.properties b/plugins/org.eclipse.gendoc.table/build.properties
new file mode 100644
index 0000000..4465407
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.eclipse.gendoc.table/model/gendoc.aird b/plugins/org.eclipse.gendoc.table/model/gendoc.aird
new file mode 100644
index 0000000..a1f4610
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/model/gendoc.aird
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description" xmi:id="_AxnNADobEeerop7vJRGxDA" selectedViews="_A4iUYDobEeerop7vJRGxDA" version="11.1.0.201608251200">
+ <semanticResources>gendoc.ecore</semanticResources>
+ <semanticResources>gendoc.genmodel</semanticResources>
+ <ownedViews xmi:type="viewpoint:DView" xmi:id="_A4iUYDobEeerop7vJRGxDA">
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.eclipse.gendoc.table/model/gendoc.ecore b/plugins/org.eclipse.gendoc.table/model/gendoc.ecore
new file mode 100644
index 0000000..ece6f5f
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/model/gendoc.ecore
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="gendoc" nsURI="http://www.eclipse.org/gendoc/1.0" nsPrefix="gendoc">
+ <eSubpackages name="table" nsURI="http://www.eclipse.org/gendoc/1.0/table" nsPrefix="table">
+ <eClassifiers xsi:type="ecore:EClass" name="Table">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rows" upperBound="-1"
+ eType="#//table/Row"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableheader" eType="#//table/TableHeader"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Row">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cells" upperBound="-1"
+ eType="#//table/Cell"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Cell">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TableHeader" eSuperTypes="#//table/Row"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.gendoc.table/model/gendoc.genmodel b/plugins/org.eclipse.gendoc.table/model/gendoc.genmodel
new file mode 100644
index 0000000..635b272
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/model/gendoc.genmodel
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.gendoc.model/src" modelPluginID="org.eclipse.gendoc.model"
+ modelName="Gendoc" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>gendoc.ecore</foreignModel>
+ <genPackages prefix="Gendoc" basePackage="org.eclipse" disposableProviderFactory="true"
+ ecorePackage="gendoc.ecore#/">
+ <nestedGenPackages prefix="Table" disposableProviderFactory="true" ecorePackage="gendoc.ecore#//table">
+ <genClasses ecoreClass="gendoc.ecore#//table/Table">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gendoc.ecore#//table/Table/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gendoc.ecore#//table/Table/type"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference gendoc.ecore#//table/Table/rows"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference gendoc.ecore#//table/Table/tableheader"/>
+ </genClasses>
+ <genClasses ecoreClass="gendoc.ecore#//table/Row">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gendoc.ecore#//table/Row/object"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference gendoc.ecore#//table/Row/cells"/>
+ </genClasses>
+ <genClasses ecoreClass="gendoc.ecore#//table/Cell">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gendoc.ecore#//table/Cell/object"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gendoc.ecore#//table/Cell/label"/>
+ </genClasses>
+ <genClasses ecoreClass="gendoc.ecore#//table/TableHeader"/>
+ </nestedGenPackages>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.gendoc.table/plugin.properties b/plugins/org.eclipse.gendoc.table/plugin.properties
new file mode 100644
index 0000000..a1b35f7
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Gendoc Model
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.gendoc.table/plugin.xml b/plugins/org.eclipse.gendoc.table/plugin.xml
new file mode 100644
index 0000000..e54d39d
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated gendoc -->
+ <package
+ uri="http://www.eclipse.org/gendoc/1.0/table"
+ class="org.eclipse.gendoc.table.TablePackage"
+ genModel="model/gendoc.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.gendoc.table/pom.xml b/plugins/org.eclipse.gendoc.table/pom.xml
new file mode 100644
index 0000000..121fcf4
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.gendoc</groupId>
+ <artifactId>parent</artifactId>
+ <relativePath>../../pom.xml</relativePath>
+ <version>0.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.gendoc.table</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Cell.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Cell.java
new file mode 100644
index 0000000..8642118
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Cell.java
@@ -0,0 +1,78 @@
+/**
+ */
+package org.eclipse.gendoc.table;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.gendoc.table.Cell#getObject <em>Object</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.Cell#getLabel <em>Label</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.gendoc.table.TablePackage#getCell()
+ * @model
+ * @generated
+ */
+public interface Cell extends EObject {
+ /**
+ * Returns the value of the '<em><b>Object</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Object</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Object</em>' attribute.
+ * @see #setObject(Object)
+ * @see org.eclipse.gendoc.table.TablePackage#getCell_Object()
+ * @model
+ * @generated
+ */
+ Object getObject();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gendoc.table.Cell#getObject <em>Object</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Object</em>' attribute.
+ * @see #getObject()
+ * @generated
+ */
+ void setObject(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Label</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Label</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Label</em>' attribute.
+ * @see #setLabel(String)
+ * @see org.eclipse.gendoc.table.TablePackage#getCell_Label()
+ * @model default=""
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gendoc.table.Cell#getLabel <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Label</em>' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+} // Cell
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Row.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Row.java
new file mode 100644
index 0000000..d638404
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Row.java
@@ -0,0 +1,69 @@
+/**
+ */
+package org.eclipse.gendoc.table;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Row</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.gendoc.table.Row#getObject <em>Object</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.Row#getCells <em>Cells</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.gendoc.table.TablePackage#getRow()
+ * @model
+ * @generated
+ */
+public interface Row extends EObject {
+ /**
+ * Returns the value of the '<em><b>Object</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Object</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Object</em>' attribute.
+ * @see #setObject(Object)
+ * @see org.eclipse.gendoc.table.TablePackage#getRow_Object()
+ * @model
+ * @generated
+ */
+ Object getObject();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gendoc.table.Row#getObject <em>Object</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Object</em>' attribute.
+ * @see #getObject()
+ * @generated
+ */
+ void setObject(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Cells</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.gendoc.table.Cell}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cells</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cells</em>' reference list.
+ * @see org.eclipse.gendoc.table.TablePackage#getRow_Cells()
+ * @model
+ * @generated
+ */
+ EList<Cell> getCells();
+
+} // Row
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Table.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Table.java
new file mode 100644
index 0000000..141c20c
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/Table.java
@@ -0,0 +1,134 @@
+/**
+ */
+package org.eclipse.gendoc.table;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.gendoc.table.Table#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.Table#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.Table#getRows <em>Rows</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.Table#getTableheader <em>Tableheader</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.gendoc.table.TablePackage#getTable()
+ * @model
+ * @generated
+ */
+public interface Table extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.gendoc.table.TablePackage#getTable_Name()
+ * @model default=""
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gendoc.table.Table#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see #setType(String)
+ * @see org.eclipse.gendoc.table.TablePackage#getTable_Type()
+ * @model default=""
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gendoc.table.Table#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see #getType()
+ * @generated
+ */
+ void setType(String value);
+
+ /**
+ * Returns the value of the '<em><b>Rows</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.gendoc.table.Row}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rows</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rows</em>' reference list.
+ * @see org.eclipse.gendoc.table.TablePackage#getTable_Rows()
+ * @model
+ * @generated
+ */
+ EList<Row> getRows();
+
+ /**
+ * Returns the value of the '<em><b>Tableheader</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Tableheader</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Tableheader</em>' reference.
+ * @see #setTableheader(TableHeader)
+ * @see org.eclipse.gendoc.table.TablePackage#getTable_Tableheader()
+ * @model
+ * @generated
+ */
+ TableHeader getTableheader();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gendoc.table.Table#getTableheader <em>Tableheader</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Tableheader</em>' reference.
+ * @see #getTableheader()
+ * @generated
+ */
+ void setTableheader(TableHeader value);
+
+
+ /**
+ * @generated NOT
+ */
+
+ int getColCount();
+
+
+
+} // Table
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TableFactory.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TableFactory.java
new file mode 100644
index 0000000..f02a062
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TableFactory.java
@@ -0,0 +1,69 @@
+/**
+ */
+package org.eclipse.gendoc.table;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.TablePackage
+ * @generated
+ */
+public interface TableFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ TableFactory eINSTANCE = org.eclipse.gendoc.table.impl.TableFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Table</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Table</em>'.
+ * @generated
+ */
+ Table createTable();
+
+ /**
+ * Returns a new object of class '<em>Row</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Row</em>'.
+ * @generated
+ */
+ Row createRow();
+
+ /**
+ * Returns a new object of class '<em>Cell</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Cell</em>'.
+ * @generated
+ */
+ Cell createCell();
+
+ /**
+ * Returns a new object of class '<em>Header</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Header</em>'.
+ * @generated
+ */
+ TableHeader createTableHeader();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ TablePackage getTablePackage();
+
+} //TableFactory
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TableHeader.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TableHeader.java
new file mode 100644
index 0000000..1be93f8
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TableHeader.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.gendoc.table;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Header</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.gendoc.table.TablePackage#getTableHeader()
+ * @model
+ * @generated
+ */
+public interface TableHeader extends Row {
+} // TableHeader
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TablePackage.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TablePackage.java
new file mode 100644
index 0000000..849895a
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/TablePackage.java
@@ -0,0 +1,519 @@
+/**
+ */
+package org.eclipse.gendoc.table;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.TableFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface TablePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "table";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/gendoc/1.0/table";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "table";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ TablePackage eINSTANCE = org.eclipse.gendoc.table.impl.TablePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gendoc.table.impl.TableImpl <em>Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.TableImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getTable()
+ * @generated
+ */
+ int TABLE = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE__TYPE = 1;
+
+ /**
+ * The feature id for the '<em><b>Rows</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE__ROWS = 2;
+
+ /**
+ * The feature id for the '<em><b>Tableheader</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE__TABLEHEADER = 3;
+
+ /**
+ * The number of structural features of the '<em>Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gendoc.table.impl.RowImpl <em>Row</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.RowImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getRow()
+ * @generated
+ */
+ int ROW = 1;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROW__OBJECT = 0;
+
+ /**
+ * The feature id for the '<em><b>Cells</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROW__CELLS = 1;
+
+ /**
+ * The number of structural features of the '<em>Row</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROW_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Row</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROW_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gendoc.table.impl.CellImpl <em>Cell</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.CellImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getCell()
+ * @generated
+ */
+ int CELL = 2;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CELL__OBJECT = 0;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CELL__LABEL = 1;
+
+ /**
+ * The number of structural features of the '<em>Cell</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CELL_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Cell</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CELL_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gendoc.table.impl.TableHeaderImpl <em>Header</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.TableHeaderImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getTableHeader()
+ * @generated
+ */
+ int TABLE_HEADER = 3;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_HEADER__OBJECT = ROW__OBJECT;
+
+ /**
+ * The feature id for the '<em><b>Cells</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_HEADER__CELLS = ROW__CELLS;
+
+ /**
+ * The number of structural features of the '<em>Header</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_HEADER_FEATURE_COUNT = ROW_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Header</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_HEADER_OPERATION_COUNT = ROW_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gendoc.table.Table <em>Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Table</em>'.
+ * @see org.eclipse.gendoc.table.Table
+ * @generated
+ */
+ EClass getTable();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gendoc.table.Table#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.gendoc.table.Table#getName()
+ * @see #getTable()
+ * @generated
+ */
+ EAttribute getTable_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gendoc.table.Table#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.gendoc.table.Table#getType()
+ * @see #getTable()
+ * @generated
+ */
+ EAttribute getTable_Type();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.gendoc.table.Table#getRows <em>Rows</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Rows</em>'.
+ * @see org.eclipse.gendoc.table.Table#getRows()
+ * @see #getTable()
+ * @generated
+ */
+ EReference getTable_Rows();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.gendoc.table.Table#getTableheader <em>Tableheader</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Tableheader</em>'.
+ * @see org.eclipse.gendoc.table.Table#getTableheader()
+ * @see #getTable()
+ * @generated
+ */
+ EReference getTable_Tableheader();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gendoc.table.Row <em>Row</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Row</em>'.
+ * @see org.eclipse.gendoc.table.Row
+ * @generated
+ */
+ EClass getRow();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gendoc.table.Row#getObject <em>Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Object</em>'.
+ * @see org.eclipse.gendoc.table.Row#getObject()
+ * @see #getRow()
+ * @generated
+ */
+ EAttribute getRow_Object();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.gendoc.table.Row#getCells <em>Cells</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Cells</em>'.
+ * @see org.eclipse.gendoc.table.Row#getCells()
+ * @see #getRow()
+ * @generated
+ */
+ EReference getRow_Cells();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gendoc.table.Cell <em>Cell</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Cell</em>'.
+ * @see org.eclipse.gendoc.table.Cell
+ * @generated
+ */
+ EClass getCell();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gendoc.table.Cell#getObject <em>Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Object</em>'.
+ * @see org.eclipse.gendoc.table.Cell#getObject()
+ * @see #getCell()
+ * @generated
+ */
+ EAttribute getCell_Object();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gendoc.table.Cell#getLabel <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Label</em>'.
+ * @see org.eclipse.gendoc.table.Cell#getLabel()
+ * @see #getCell()
+ * @generated
+ */
+ EAttribute getCell_Label();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gendoc.table.TableHeader <em>Header</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Header</em>'.
+ * @see org.eclipse.gendoc.table.TableHeader
+ * @generated
+ */
+ EClass getTableHeader();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ TableFactory getTableFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.gendoc.table.impl.TableImpl <em>Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.TableImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getTable()
+ * @generated
+ */
+ EClass TABLE = eINSTANCE.getTable();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TABLE__NAME = eINSTANCE.getTable_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TABLE__TYPE = eINSTANCE.getTable_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Rows</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TABLE__ROWS = eINSTANCE.getTable_Rows();
+
+ /**
+ * The meta object literal for the '<em><b>Tableheader</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TABLE__TABLEHEADER = eINSTANCE.getTable_Tableheader();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.gendoc.table.impl.RowImpl <em>Row</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.RowImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getRow()
+ * @generated
+ */
+ EClass ROW = eINSTANCE.getRow();
+
+ /**
+ * The meta object literal for the '<em><b>Object</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ROW__OBJECT = eINSTANCE.getRow_Object();
+
+ /**
+ * The meta object literal for the '<em><b>Cells</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROW__CELLS = eINSTANCE.getRow_Cells();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.gendoc.table.impl.CellImpl <em>Cell</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.CellImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getCell()
+ * @generated
+ */
+ EClass CELL = eINSTANCE.getCell();
+
+ /**
+ * The meta object literal for the '<em><b>Object</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CELL__OBJECT = eINSTANCE.getCell_Object();
+
+ /**
+ * The meta object literal for the '<em><b>Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CELL__LABEL = eINSTANCE.getCell_Label();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.gendoc.table.impl.TableHeaderImpl <em>Header</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.impl.TableHeaderImpl
+ * @see org.eclipse.gendoc.table.impl.TablePackageImpl#getTableHeader()
+ * @generated
+ */
+ EClass TABLE_HEADER = eINSTANCE.getTableHeader();
+
+ }
+
+} //TablePackage
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/CellImpl.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/CellImpl.java
new file mode 100644
index 0000000..f93bd5c
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/CellImpl.java
@@ -0,0 +1,217 @@
+/**
+ */
+package org.eclipse.gendoc.table.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.gendoc.table.Cell;
+import org.eclipse.gendoc.table.TablePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cell</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.gendoc.table.impl.CellImpl#getObject <em>Object</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.impl.CellImpl#getLabel <em>Label</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CellImpl extends MinimalEObjectImpl.Container implements Cell {
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String LABEL_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected String label = LABEL_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CellImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return TablePackage.Literals.CELL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TablePackage.CELL__OBJECT, oldObject, object));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLabel(String newLabel) {
+ String oldLabel = label;
+ label = newLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TablePackage.CELL__LABEL, oldLabel, label));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case TablePackage.CELL__OBJECT:
+ return getObject();
+ case TablePackage.CELL__LABEL:
+ return getLabel();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case TablePackage.CELL__OBJECT:
+ setObject(newValue);
+ return;
+ case TablePackage.CELL__LABEL:
+ setLabel((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case TablePackage.CELL__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ case TablePackage.CELL__LABEL:
+ setLabel(LABEL_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case TablePackage.CELL__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT.equals(object);
+ case TablePackage.CELL__LABEL:
+ return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (object: ");
+ result.append(object);
+ result.append(", label: ");
+ result.append(label);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CellImpl
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/RowImpl.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/RowImpl.java
new file mode 100644
index 0000000..409c8cc
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/RowImpl.java
@@ -0,0 +1,205 @@
+/**
+ */
+package org.eclipse.gendoc.table.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.gendoc.table.Cell;
+import org.eclipse.gendoc.table.Row;
+import org.eclipse.gendoc.table.TablePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Row</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.gendoc.table.impl.RowImpl#getObject <em>Object</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.impl.RowImpl#getCells <em>Cells</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RowImpl extends MinimalEObjectImpl.Container implements Row {
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getCells() <em>Cells</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCells()
+ * @generated
+ * @ordered
+ */
+ protected EList<Cell> cells;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RowImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return TablePackage.Literals.ROW;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TablePackage.ROW__OBJECT, oldObject, object));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Cell> getCells() {
+ if (cells == null) {
+ cells = new EObjectResolvingEList<Cell>(Cell.class, this, TablePackage.ROW__CELLS);
+ }
+ return cells;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case TablePackage.ROW__OBJECT:
+ return getObject();
+ case TablePackage.ROW__CELLS:
+ return getCells();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case TablePackage.ROW__OBJECT:
+ setObject(newValue);
+ return;
+ case TablePackage.ROW__CELLS:
+ getCells().clear();
+ getCells().addAll((Collection<? extends Cell>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case TablePackage.ROW__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ case TablePackage.ROW__CELLS:
+ getCells().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case TablePackage.ROW__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT.equals(object);
+ case TablePackage.ROW__CELLS:
+ return cells != null && !cells.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (object: ");
+ result.append(object);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RowImpl
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableFactoryImpl.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableFactoryImpl.java
new file mode 100644
index 0000000..71df54d
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableFactoryImpl.java
@@ -0,0 +1,128 @@
+/**
+ */
+package org.eclipse.gendoc.table.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.gendoc.table.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TableFactoryImpl extends EFactoryImpl implements TableFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TableFactory init() {
+ try {
+ TableFactory theTableFactory = (TableFactory)EPackage.Registry.INSTANCE.getEFactory(TablePackage.eNS_URI);
+ if (theTableFactory != null) {
+ return theTableFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new TableFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case TablePackage.TABLE: return createTable();
+ case TablePackage.ROW: return createRow();
+ case TablePackage.CELL: return createCell();
+ case TablePackage.TABLE_HEADER: return createTableHeader();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Table createTable() {
+ TableImpl table = new TableImpl();
+ return table;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Row createRow() {
+ RowImpl row = new RowImpl();
+ return row;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Cell createCell() {
+ CellImpl cell = new CellImpl();
+ return cell;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableHeader createTableHeader() {
+ TableHeaderImpl tableHeader = new TableHeaderImpl();
+ return tableHeader;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TablePackage getTablePackage() {
+ return (TablePackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static TablePackage getPackage() {
+ return TablePackage.eINSTANCE;
+ }
+
+} //TableFactoryImpl
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableHeaderImpl.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableHeaderImpl.java
new file mode 100644
index 0000000..8929407
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableHeaderImpl.java
@@ -0,0 +1,37 @@
+/**
+ */
+package org.eclipse.gendoc.table.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.gendoc.table.TableHeader;
+import org.eclipse.gendoc.table.TablePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Header</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TableHeaderImpl extends RowImpl implements TableHeader {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TableHeaderImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return TablePackage.Literals.TABLE_HEADER;
+ }
+
+} //TableHeaderImpl
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableImpl.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableImpl.java
new file mode 100644
index 0000000..7bf24dd
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TableImpl.java
@@ -0,0 +1,334 @@
+/**
+ */
+package org.eclipse.gendoc.table.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.gendoc.table.Row;
+import org.eclipse.gendoc.table.Table;
+import org.eclipse.gendoc.table.TableHeader;
+import org.eclipse.gendoc.table.TablePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.gendoc.table.impl.TableImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.impl.TableImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.impl.TableImpl#getRows <em>Rows</em>}</li>
+ * <li>{@link org.eclipse.gendoc.table.impl.TableImpl#getTableheader <em>Tableheader</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableImpl extends MinimalEObjectImpl.Container implements Table {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final String TYPE_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected String type = TYPE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getRows() <em>Rows</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRows()
+ * @generated
+ * @ordered
+ */
+ protected EList<Row> rows;
+
+ /**
+ * The cached value of the '{@link #getTableheader() <em>Tableheader</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableheader()
+ * @generated
+ * @ordered
+ */
+ protected TableHeader tableheader;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return TablePackage.Literals.TABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TablePackage.TABLE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(String newType) {
+ String oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TablePackage.TABLE__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Row> getRows() {
+ if (rows == null) {
+ rows = new EObjectResolvingEList<Row>(Row.class, this, TablePackage.TABLE__ROWS);
+ }
+ return rows;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableHeader getTableheader() {
+ if (tableheader != null && tableheader.eIsProxy()) {
+ InternalEObject oldTableheader = (InternalEObject)tableheader;
+ tableheader = (TableHeader)eResolveProxy(oldTableheader);
+ if (tableheader != oldTableheader) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, TablePackage.TABLE__TABLEHEADER, oldTableheader, tableheader));
+ }
+ }
+ return tableheader;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableHeader basicGetTableheader() {
+ return tableheader;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTableheader(TableHeader newTableheader) {
+ TableHeader oldTableheader = tableheader;
+ tableheader = newTableheader;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TablePackage.TABLE__TABLEHEADER, oldTableheader, tableheader));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case TablePackage.TABLE__NAME:
+ return getName();
+ case TablePackage.TABLE__TYPE:
+ return getType();
+ case TablePackage.TABLE__ROWS:
+ return getRows();
+ case TablePackage.TABLE__TABLEHEADER:
+ if (resolve) return getTableheader();
+ return basicGetTableheader();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case TablePackage.TABLE__NAME:
+ setName((String)newValue);
+ return;
+ case TablePackage.TABLE__TYPE:
+ setType((String)newValue);
+ return;
+ case TablePackage.TABLE__ROWS:
+ getRows().clear();
+ getRows().addAll((Collection<? extends Row>)newValue);
+ return;
+ case TablePackage.TABLE__TABLEHEADER:
+ setTableheader((TableHeader)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case TablePackage.TABLE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case TablePackage.TABLE__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ case TablePackage.TABLE__ROWS:
+ getRows().clear();
+ return;
+ case TablePackage.TABLE__TABLEHEADER:
+ setTableheader((TableHeader)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case TablePackage.TABLE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case TablePackage.TABLE__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ case TablePackage.TABLE__ROWS:
+ return rows != null && !rows.isEmpty();
+ case TablePackage.TABLE__TABLEHEADER:
+ return tableheader != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", type: ");
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+
+ /**
+ * @generated NOT
+ */
+
+ @Override
+ public int getColCount() {
+ if (this.tableheader!=null){
+ return this.tableheader.getCells().size();
+ }
+ return 0;
+ }
+
+} //TableImpl
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TablePackageImpl.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TablePackageImpl.java
new file mode 100644
index 0000000..61d117a
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/impl/TablePackageImpl.java
@@ -0,0 +1,319 @@
+/**
+ */
+package org.eclipse.gendoc.table.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.gendoc.table.Cell;
+import org.eclipse.gendoc.table.Row;
+import org.eclipse.gendoc.table.Table;
+import org.eclipse.gendoc.table.TableFactory;
+import org.eclipse.gendoc.table.TableHeader;
+import org.eclipse.gendoc.table.TablePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TablePackageImpl extends EPackageImpl implements TablePackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass tableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass rowEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cellEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass tableHeaderEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.gendoc.table.TablePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private TablePackageImpl() {
+ super(eNS_URI, TableFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link TablePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static TablePackage init() {
+ if (isInited) return (TablePackage)EPackage.Registry.INSTANCE.getEPackage(TablePackage.eNS_URI);
+
+ // Obtain or create and register package
+ TablePackageImpl theTablePackage = (TablePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof TablePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new TablePackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theTablePackage.createPackageContents();
+
+ // Initialize created meta-data
+ theTablePackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theTablePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(TablePackage.eNS_URI, theTablePackage);
+ return theTablePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTable() {
+ return tableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTable_Name() {
+ return (EAttribute)tableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTable_Type() {
+ return (EAttribute)tableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTable_Rows() {
+ return (EReference)tableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTable_Tableheader() {
+ return (EReference)tableEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRow() {
+ return rowEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRow_Object() {
+ return (EAttribute)rowEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRow_Cells() {
+ return (EReference)rowEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCell() {
+ return cellEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCell_Object() {
+ return (EAttribute)cellEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCell_Label() {
+ return (EAttribute)cellEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTableHeader() {
+ return tableHeaderEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableFactory getTableFactory() {
+ return (TableFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ tableEClass = createEClass(TABLE);
+ createEAttribute(tableEClass, TABLE__NAME);
+ createEAttribute(tableEClass, TABLE__TYPE);
+ createEReference(tableEClass, TABLE__ROWS);
+ createEReference(tableEClass, TABLE__TABLEHEADER);
+
+ rowEClass = createEClass(ROW);
+ createEAttribute(rowEClass, ROW__OBJECT);
+ createEReference(rowEClass, ROW__CELLS);
+
+ cellEClass = createEClass(CELL);
+ createEAttribute(cellEClass, CELL__OBJECT);
+ createEAttribute(cellEClass, CELL__LABEL);
+
+ tableHeaderEClass = createEClass(TABLE_HEADER);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ tableHeaderEClass.getESuperTypes().add(this.getRow());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(tableEClass, Table.class, "Table", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTable_Name(), ecorePackage.getEString(), "name", "", 0, 1, Table.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getTable_Type(), ecorePackage.getEString(), "type", "", 0, 1, Table.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTable_Rows(), this.getRow(), null, "rows", null, 0, -1, Table.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTable_Tableheader(), this.getTableHeader(), null, "tableheader", null, 0, 1, Table.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(rowEClass, Row.class, "Row", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRow_Object(), ecorePackage.getEJavaObject(), "object", null, 0, 1, Row.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRow_Cells(), this.getCell(), null, "cells", null, 0, -1, Row.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(cellEClass, Cell.class, "Cell", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCell_Object(), ecorePackage.getEJavaObject(), "object", null, 0, 1, Cell.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCell_Label(), ecorePackage.getEString(), "label", "", 0, 1, Cell.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(tableHeaderEClass, TableHeader.class, "TableHeader", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //TablePackageImpl
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/util/TableAdapterFactory.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/util/TableAdapterFactory.java
new file mode 100644
index 0000000..4a57e2d
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/util/TableAdapterFactory.java
@@ -0,0 +1,174 @@
+/**
+ */
+package org.eclipse.gendoc.table.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.gendoc.table.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.TablePackage
+ * @generated
+ */
+public class TableAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static TablePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = TablePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TableSwitch<Adapter> modelSwitch =
+ new TableSwitch<Adapter>() {
+ @Override
+ public Adapter caseTable(Table object) {
+ return createTableAdapter();
+ }
+ @Override
+ public Adapter caseRow(Row object) {
+ return createRowAdapter();
+ }
+ @Override
+ public Adapter caseCell(Cell object) {
+ return createCellAdapter();
+ }
+ @Override
+ public Adapter caseTableHeader(TableHeader object) {
+ return createTableHeaderAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gendoc.table.Table <em>Table</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gendoc.table.Table
+ * @generated
+ */
+ public Adapter createTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gendoc.table.Row <em>Row</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gendoc.table.Row
+ * @generated
+ */
+ public Adapter createRowAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gendoc.table.Cell <em>Cell</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gendoc.table.Cell
+ * @generated
+ */
+ public Adapter createCellAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gendoc.table.TableHeader <em>Header</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gendoc.table.TableHeader
+ * @generated
+ */
+ public Adapter createTableHeaderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //TableAdapterFactory
diff --git a/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/util/TableSwitch.java b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/util/TableSwitch.java
new file mode 100644
index 0000000..d4aaee1
--- /dev/null
+++ b/plugins/org.eclipse.gendoc.table/src/org/eclipse/gendoc/table/util/TableSwitch.java
@@ -0,0 +1,174 @@
+/**
+ */
+package org.eclipse.gendoc.table.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.gendoc.table.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gendoc.table.TablePackage
+ * @generated
+ */
+public class TableSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static TablePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TableSwitch() {
+ if (modelPackage == null) {
+ modelPackage = TablePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case TablePackage.TABLE: {
+ Table table = (Table)theEObject;
+ T result = caseTable(table);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case TablePackage.ROW: {
+ Row row = (Row)theEObject;
+ T result = caseRow(row);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case TablePackage.CELL: {
+ Cell cell = (Cell)theEObject;
+ T result = caseCell(cell);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case TablePackage.TABLE_HEADER: {
+ TableHeader tableHeader = (TableHeader)theEObject;
+ T result = caseTableHeader(tableHeader);
+ if (result == null) result = caseRow(tableHeader);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Table</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTable(Table object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Row</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Row</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRow(Row object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Cell</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Cell</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCell(Cell object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Header</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Header</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTableHeader(TableHeader object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //TableSwitch
diff --git a/plugins/org.eclipse.gendoc.tags.handlers/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.tags.handlers/META-INF/MANIFEST.MF
index 04dc468..f6e2fdf 100644
--- a/plugins/org.eclipse.gendoc.tags.handlers/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.tags.handlers/META-INF/MANIFEST.MF
@@ -14,7 +14,10 @@
org.eclipse.gendoc.tags,
org.eclipse.gendoc.tags.parsers,
org.eclipse.core.resources,
- org.eclipse.ui
+ org.eclipse.ui,
+ org.eclipse.ui.workbench,
+ org.eclipse.emf.ecore,
+ org.eclipse.gendoc.table
Export-Package: org.eclipse.gendoc.tags.handlers,
org.eclipse.gendoc.tags.handlers.impl,
org.eclipse.gendoc.tags.handlers.impl.config,
diff --git a/plugins/org.eclipse.gendoc.tags.handlers/bin/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties b/plugins/org.eclipse.gendoc.tags.handlers/bin/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties
index a5e2868..76e4daf 100644
--- a/plugins/org.eclipse.gendoc.tags.handlers/bin/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties
+++ b/plugins/org.eclipse.gendoc.tags.handlers/bin/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties
@@ -37,6 +37,7 @@
LIST=list
TABLE=table
+TABLE_OBJECT=object
DROP=drop
diff --git a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.java b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.java
index 9c94e44..3086f66 100644
--- a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.java
+++ b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.java
@@ -9,7 +9,7 @@
*
* Contributors:
* Kris Robertson (Atos Origin) kris.robertson@atosorigin.com - Initial API and implementation
- *
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - fix bug #515404: create new attribute (object) for table tag
*****************************************************************************/
package org.eclipse.gendoc.tags.handlers.impl;
@@ -88,7 +88,7 @@
// table
public static String TABLE;
-
+ public static String TABLE_OBJECT;
// drop
public static String DROP;
diff --git a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties
index a5e2868..76e4daf 100644
--- a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties
+++ b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/RegisteredTags.properties
@@ -37,6 +37,7 @@
LIST=list
TABLE=table
+TABLE_OBJECT=object
DROP=drop
diff --git a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/scripts/TableTagHandler.java b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/scripts/TableTagHandler.java
index 22a0fb3..fbecbff 100644
--- a/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/scripts/TableTagHandler.java
+++ b/plugins/org.eclipse.gendoc.tags.handlers/src/org/eclipse/gendoc/tags/handlers/impl/scripts/TableTagHandler.java
@@ -9,7 +9,7 @@
*
* Contributors:
* Kris Robertson (Atos Origin) kris.robertson@atosorigin.com - Initial API and implementation
- *
+ * Mohamed Ali Bach Tobji (Atos) mohamed-ali.bachtobji@atos.net - fix bug #515404: generate tables automatically
*****************************************************************************/
package org.eclipse.gendoc.tags.handlers.impl.scripts;
@@ -18,15 +18,19 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.gendoc.documents.IDocumentService;
+import org.eclipse.gendoc.documents.ITableService;
import org.eclipse.gendoc.services.GendocServices;
import org.eclipse.gendoc.services.ILogger;
import org.eclipse.gendoc.services.exception.GenDocException;
import org.eclipse.gendoc.services.exception.InvalidContentException;
import org.eclipse.gendoc.tags.ITag;
import org.eclipse.gendoc.tags.handlers.AbstractPrePostTagHandler;
+import org.eclipse.gendoc.tags.handlers.impl.RegisteredTags;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import org.eclipse.gendoc.table.Table;
+
/**
* Handler for <table> tags.
*
@@ -62,6 +66,25 @@
}
else
{
+ if (tag.getAttributes().containsKey("object")) {
+
+ Object tableModel = getTableModel(tag, documentService);
+ int indexStart = m.start();
+ int indexEnd = returnValue.lastIndexOf("</" + tableLabel + ">");
+ // Add the length of the tag label </TAG_LABEL> (3 => '<' + '/'
+ // + '>')
+ indexEnd += tableLabel.length() + 3;
+ // Extract the string that contains only the table nodes
+ String tableText = returnValue.substring(indexStart, indexEnd);
+ // Transform the text as XML nodes
+ String nodes = "<document>" + tableText + "</document>";
+ nodes = documentService.addNamingSpaces(nodes, "document");
+ Node tableNode = documentService.asNode(nodes).getFirstChild();
+ ITableService tableService = documentService.getTableService();
+ return tableService.manageTable(tag, documentService, returnValue, tableModel, tableNode);
+
+
+ } else {
int indexStart = m.start();
int indexEnd = returnValue.lastIndexOf("</" + tableLabel + ">");
// Add the length of the tag label </TAG_LABEL> (3 => '<' + '/' + '>')
@@ -72,9 +95,31 @@
String singleTable = this.concatTables(documentService, tableText);
// Replace the tables by the created table
returnValue.replace(indexStart, indexEnd, singleTable);
+ }
}
return returnValue.toString();
}
+
+
+ /**
+ * Get table model
+ * @param tag
+ * @param documentService
+ * @return
+ */
+ private Object getTableModel(ITag tag, IDocumentService documentService) {
+
+ Table tableModel = null;
+ if (tag != null && tag.getAttributes() != null) {
+ String tableId = tag.getAttributes().get(RegisteredTags.TABLE_OBJECT);
+ ITableService tableService = documentService.getTableService();
+ if (tableService != null) {
+ tableModel = tableService.getTable(tableId);
+ }
+ }
+ return tableModel;
+ }
+
/**
* Create a single table from all the tables in the given string => Find the first table and then insert all the row
@@ -127,5 +172,7 @@
}
return documentService.asText(mainTable);
}
+
+
}
diff --git a/pom.xml b/pom.xml
index d5e643e..7c6e29c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,6 +33,7 @@
<module>plugins/org.eclipse.gendoc.services.odt</module>
<module>plugins/org.eclipse.gendoc.services.pptx</module>
<module>plugins/org.eclipse.gendoc.services.xlsx</module>
+ <module>plugins/org.eclipse.gendoc.table</module>
<module>plugins/org.eclipse.gendoc.tags</module>
<module>plugins/org.eclipse.gendoc.tags.handlers</module>
<module>plugins/org.eclipse.gendoc.tags.html</module>