Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas FAUVERGUE2016-02-02 15:12:53 +0000
committerGerrit Code Review @ Eclipse.org2016-03-02 09:42:07 +0000
commit387194dfad69c05dae22afe2548109b267091ea1 (patch)
treefaf27c568332944b044fb9a055a9042f2eb96133
parentfc1206c9139afc7b04687278347d65dc7da2b6d6 (diff)
downloadorg.eclipse.papyrus-387194dfad69c05dae22afe2548109b267091ea1.tar.gz
org.eclipse.papyrus-387194dfad69c05dae22afe2548109b267091ea1.tar.xz
org.eclipse.papyrus-387194dfad69c05dae22afe2548109b267091ea1.zip
Bug 486096 - [Table] Papyrus must integrate the fill action developed by
NatTable https://bugs.eclipse.org/bugs/show_bug.cgi?id=486096 Manage the fill handle in papyrus with: - Integer copy, increment and decrement - String copy, increment prefix, decrement prefix, increment suffix, and decrement suffix Add the JUnit tests. Change-Id: I15ca6efc7d75c03f8d31b0adddad538590c3ab87 Signed-off-by: Nicolas FAUVERGUE <nicolas.fauvergue@all4tec.net>
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/META-INF/MANIFEST.MF1
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/action/PapyrusFillHandleDragMode.java217
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommand.java89
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommandHandler.java397
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/config/PapyrusFillHandleConfiguration.java108
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/utils/PapyrusFillHandleUtils.java122
-rwxr-xr-xplugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/AbstractNattableWidgetManager.java79
-rwxr-xr-xplugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/TreeNattableModelManager.java6
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/Messages.java18
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/messages.properties7
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.di2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.notation83
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.uml102
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_Initial.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultCopy.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.di2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.notation2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.uml73
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.di2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.notation80
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.uml49
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_Initial.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultCopy.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.di2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.notation80
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.uml49
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_Initial.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultCopy.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.di2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.notation80
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.uml49
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_Initial.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultCopy.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.di2
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.notation80
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.uml49
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_Initial.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultCopy.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementDown.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementUp.txt51
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/AbstractFillHandleTest.java439
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleInteger_V1_V3_V1_Test.java128
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.java121
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.java128
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.java128
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.java128
-rw-r--r--tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/tests/AllTests.java12
66 files changed, 4403 insertions, 46 deletions
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/META-INF/MANIFEST.MF b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/META-INF/MANIFEST.MF
index cde8cbf00f0..8bad0bec86f 100644
--- a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/META-INF/MANIFEST.MF
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/META-INF/MANIFEST.MF
@@ -14,6 +14,7 @@ Export-Package: org.eclipse.papyrus.infra.nattable,
org.eclipse.papyrus.infra.nattable.dialog,
org.eclipse.papyrus.infra.nattable.display.converter,
org.eclipse.papyrus.infra.nattable.export,
+ org.eclipse.papyrus.infra.nattable.fillhandle.command,
org.eclipse.papyrus.infra.nattable.filter,
org.eclipse.papyrus.infra.nattable.filter.configuration,
org.eclipse.papyrus.infra.nattable.filter.validator,
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/action/PapyrusFillHandleDragMode.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/action/PapyrusFillHandleDragMode.java
new file mode 100644
index 00000000000..9ece24e2d81
--- /dev/null
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/action/PapyrusFillHandleDragMode.java
@@ -0,0 +1,217 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.nattable.fillhandle.action;
+
+import java.util.Date;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.copy.InternalCellClipboard;
+import org.eclipse.nebula.widgets.nattable.fillhandle.action.FillHandleDragMode;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommand;
+import org.eclipse.papyrus.infra.nattable.fillhandle.utils.PapyrusFillHandleUtils;
+import org.eclipse.papyrus.infra.nattable.messages.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * The fill handler drag mode for papyrus to manage the menu and to allow the string series.
+ */
+public class PapyrusFillHandleDragMode extends FillHandleDragMode {
+
+ /**
+ * Boolean to determinate if a double series menu must be displayed (to increment/decrement prefix or suffix string)
+ */
+ protected boolean createDoubleSeriesMenu = false;
+
+ /**
+ * Constructor.
+ *
+ * @param selectionLayer
+ * The {@link SelectionLayer} needed to determine the fill handle
+ * region and perform the update command.
+ * @param clipboard
+ * The internal clipboard that carries the cells for the copy
+ * &amp; paste operation triggered by using the fill handle.
+ */
+ public PapyrusFillHandleDragMode(final SelectionLayer selectionLayer, final InternalCellClipboard clipboard) {
+ super(selectionLayer, clipboard);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.action.FillHandleDragMode#openMenu(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected void openMenu(final NatTable natTable) {
+ // lazily create the menu
+ if (null != this.menu && !this.menu.isDisposed()) {
+ this.menu.dispose();
+ this.menu = null;
+ }
+
+ this.menu = new Menu(natTable);
+ MenuItem copyItem = new MenuItem(this.menu, SWT.PUSH);
+ copyItem.setText(Messages.PapyrusFillHandleDragMode_CopyCommandName);
+ setPasteSelectionListener(copyItem, natTable, FillHandleOperation.COPY, false, false);
+
+ // Calculate the menu item names
+ String firstSeriesMenuName = null;
+ String secondSeriesMenuName = null;
+
+ if (createDoubleSeriesMenu) {
+ firstSeriesMenuName = Messages.PapyrusFillHandleDragMode_IncrementPrefixCommandName;
+ secondSeriesMenuName = Messages.PapyrusFillHandleDragMode_DecrementPrefixCommandName;
+ } else {
+ firstSeriesMenuName = Messages.PapyrusFillHandleDragMode_IncrementCommandName;
+ secondSeriesMenuName = Messages.PapyrusFillHandleDragMode_DecrementCommandName;
+ }
+
+ // Create the series item menu
+ MenuItem incrementItem = new MenuItem(this.menu, SWT.PUSH);
+ incrementItem.setText(firstSeriesMenuName);
+ setPasteSelectionListener(incrementItem, natTable, FillHandleOperation.SERIES, true, true);
+
+ MenuItem decrementItem = new MenuItem(this.menu, SWT.PUSH);
+ decrementItem.setText(secondSeriesMenuName);
+ setPasteSelectionListener(decrementItem, natTable, FillHandleOperation.SERIES, false, true);
+
+ if (createDoubleSeriesMenu) {
+ MenuItem incrementSuffixItem = new MenuItem(this.menu, SWT.PUSH);
+ incrementSuffixItem.setText(Messages.PapyrusFillHandleDragMode_IncrementSuffixCommandName);
+ setPasteSelectionListener(incrementSuffixItem, natTable, FillHandleOperation.SERIES, true, false);
+
+ MenuItem decrementSuffixItem = new MenuItem(this.menu, SWT.PUSH);
+ decrementSuffixItem.setText(Messages.PapyrusFillHandleDragMode_DecrementSuffixCommandName);
+ setPasteSelectionListener(decrementSuffixItem, natTable, FillHandleOperation.SERIES, false, false);
+ }
+
+ // add the dispose listener for disposing the menu
+ natTable.addDisposeListener(new DisposeListener() {
+
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ PapyrusFillHandleDragMode.this.menu.dispose();
+ }
+ });
+
+ this.menu.setVisible(true);
+ }
+
+ /**
+ * Set the selection listener for the menu item.
+ *
+ * @param menuItem
+ * The menu item for the selection listener.
+ * @param natTable
+ * The current nattable.
+ * @param operation
+ * The {@link FillHandleOperation} that should be triggered.
+ * @param isIncrement
+ * Boolean to determinate if this an increment action.
+ * @param isPrefix
+ * Boolean to determinate if this is a prefix or suffix modification for string series.
+ */
+ protected void setPasteSelectionListener(final MenuItem menuItem, final NatTable natTable, final FillHandleOperation operation, final boolean isIncrement, final boolean isPrefix) {
+ menuItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ natTable.doCommand(
+ new PapyrusFillHandlePasteCommand(
+ operation,
+ PapyrusFillHandleDragMode.this.direction,
+ natTable.getConfigRegistry(),
+ isIncrement,
+ isPrefix));
+ reset(natTable);
+ }
+ });
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.action.FillHandleDragMode#showMenu(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected boolean showMenu(final NatTable natTable) {
+ boolean result = false;
+
+ createDoubleSeriesMenu = false;
+ String templateString = null;
+
+ if (null != this.clipboard && null != this.clipboard.getCopiedCells()) {
+ final ILayerCell[][] copiedCells = this.clipboard.getCopiedCells();
+
+ result = true;
+ Class<?> type = null;
+
+ for (int cellsIndex = 0; cellsIndex < copiedCells.length && result; cellsIndex++) {
+ final ILayerCell[] cells = copiedCells[cellsIndex];
+ for (int cellIndex = 0; cellIndex < cells.length && result; cellIndex++) {
+ final ILayerCell cell = cells[cellIndex];
+ if (null == cell.getDataValue()) {
+ result = false;
+ } else if (null == type) {
+ type = cell.getDataValue().getClass();
+ if (String.class.isAssignableFrom(type)) {
+ final String stringValue = (String) cell.getDataValue();
+ final String currentTemplateString = PapyrusFillHandleUtils.getTemplateString(stringValue);
+
+ templateString = currentTemplateString;
+
+ final String number = stringValue.replace(currentTemplateString, "");
+
+ // Calculate if the 'increment' and 'decrement' menu must be displayed
+ // and calculate if the double series menu must be displayed
+ // (increment the beginning of the ending of a string)
+ if (!number.isEmpty()) {
+ final boolean isBeginningByNumber = PapyrusFillHandleUtils.isBeginningByNumber(stringValue, templateString);
+ final boolean isEndingByNumber = PapyrusFillHandleUtils.isEndingBNumber(stringValue, templateString);
+
+ createDoubleSeriesMenu = isBeginningByNumber && isEndingByNumber;
+ } else {
+ result = false;
+ }
+ } else if (!Number.class.isAssignableFrom(type)
+ && !Date.class.isAssignableFrom(type)) {
+ result = false;
+ }
+ } else {
+ if (type != cell.getDataValue().getClass()) {
+ result = false;
+ } else if (String.class.isAssignableFrom(type)) {
+ final String stringValue = (String) cell.getDataValue();
+ final String currentTemplateString = PapyrusFillHandleUtils.getTemplateString(stringValue);
+ final String number = stringValue.replace(currentTemplateString, "");
+
+ result = templateString.equals(currentTemplateString) && !number.isEmpty();
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+}
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommand.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommand.java
new file mode 100644
index 00000000000..6df0b565b5f
--- /dev/null
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommand.java
@@ -0,0 +1,89 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.nattable.fillhandle.command;
+
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+
+/**
+ * The papyrus fill handle paste command which allow to manage the increment or decrement action and the prefi or suffix for the string series.
+ */
+public class PapyrusFillHandlePasteCommand extends FillHandlePasteCommand {
+
+ /**
+ * Boolean to determinate if this an increment action.
+ */
+ protected boolean isIncrement;
+
+ /**
+ * Boolean to determinate if this is a prefix or suffix modification for string series.
+ */
+ protected boolean isPrefix;
+
+ /**
+ * Create a FillHandlePasteCommand that triggers a copy operation.
+ *
+ * @param configRegistry
+ * The {@link IConfigRegistry} needed to dynamically read
+ * configurations on command handling, e.g. editable state.
+ */
+ public PapyrusFillHandlePasteCommand(final IConfigRegistry configRegistry) {
+ this(FillHandleOperation.COPY, null, configRegistry, false, true);
+ }
+
+ /**
+ * Create a FillHandlePasteCommand.
+ *
+ * @param operation
+ * The {@link FillHandleOperation} that should be triggered.
+ * @param direction
+ * The direction in which the fill handle was dragged. Necessary
+ * for the series operation to calculate the values.
+ * @param configRegistry
+ * The {@link IConfigRegistry} needed to dynamically read
+ * configurations on command handling, e.g. editable state.
+ * @param isIncrement
+ * Boolean to determinate if this an increment action.
+ * @param isPrefix
+ * Boolean to determinate if this is a prefix or suffix modification for string series.
+ */
+ public PapyrusFillHandlePasteCommand(
+ final FillHandleOperation operation, final MoveDirectionEnum direction, final IConfigRegistry configRegistry, final boolean isIncrement, final boolean isPrefix) {
+ super(operation, direction, configRegistry);
+ this.isIncrement = isIncrement;
+ this.isPrefix = isPrefix;
+ }
+
+ /**
+ * Return <code>true</code> if this is an increment, <code>false</code> otherwise.
+ *
+ * @return the isIncrement
+ */
+ public boolean isIncrement() {
+ return isIncrement;
+ }
+
+ /**
+ * Return <code>true</code> if this is a prefix series, <code>false</code> otherwise.
+ *
+ * @return the isIncrement
+ */
+ public boolean isPrefix() {
+ return isPrefix;
+ }
+
+
+
+}
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommandHandler.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommandHandler.java
new file mode 100644
index 00000000000..23911a8f8b4
--- /dev/null
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/command/PapyrusFillHandlePasteCommandHandler.java
@@ -0,0 +1,397 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.nattable.fillhandle.command;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.coordinate.PositionCoordinate;
+import org.eclipse.nebula.widgets.nattable.copy.InternalCellClipboard;
+import org.eclipse.nebula.widgets.nattable.edit.command.EditUtils;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler;
+import org.eclipse.nebula.widgets.nattable.layer.ILayer;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.nattable.fillhandle.utils.PapyrusFillHandleUtils;
+import org.eclipse.papyrus.infra.nattable.manager.cell.CellManagerFactory;
+import org.eclipse.papyrus.infra.nattable.manager.table.INattableModelManager;
+import org.eclipse.papyrus.infra.nattable.utils.AxisUtils;
+import org.eclipse.papyrus.infra.nattable.utils.TableEditingDomainUtils;
+
+/**
+ * The papyrus command handler for the fill handle paste. This allows to manage the string series and the row and column difference calculation.
+ */
+public class PapyrusFillHandlePasteCommandHandler extends FillHandlePasteCommandHandler {
+
+ /**
+ * The current nattable model manager.
+ */
+ protected INattableModelManager tableManager;
+
+ /**
+ * The command to manage.
+ */
+ protected FillHandlePasteCommand command;
+
+ /**
+ * Constructor.
+ *
+ * @param selectionLayer
+ * The {@link SelectionLayer} needed to determine the fill handle
+ * region and perform the update command.
+ * @param clipboard
+ * The internal clipboard that carries the cells for the copy
+ * &amp; paste operation triggered by using the fill handle.
+ */
+ public PapyrusFillHandlePasteCommandHandler(final SelectionLayer selectionLayer, final InternalCellClipboard clipboard, final INattableModelManager tableManager) {
+ super(selectionLayer, clipboard);
+ this.tableManager = tableManager;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler#doCommand(org.eclipse.nebula.widgets.nattable.layer.ILayer, org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand)
+ */
+ @Override
+ public boolean doCommand(final ILayer targetLayer, final FillHandlePasteCommand command) {
+ TransactionalEditingDomain domain = TableEditingDomainUtils.getTableContextEditingDomain(tableManager.getTable());
+ final AbstractTransactionalCommand transactionalCommand = new AbstractTransactionalCommand(domain, null, null) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ final boolean result = PapyrusFillHandlePasteCommandHandler.super.doCommand(targetLayer, command);
+ return CommandResult.newOKCommandResult(Boolean.valueOf(result));
+ }
+ };
+ domain.getCommandStack().execute(new GMFtoEMFCommandWrapper(transactionalCommand));
+ return ((Boolean) transactionalCommand.getCommandResult().getReturnValue()).booleanValue();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler#getPasteValue(org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell, org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand, int, int)
+ */
+ @Override
+ protected Object getPasteValue(final ILayerCell cell, final FillHandlePasteCommand command, final int toColumn, final int toRow) {
+ Object result = null;
+
+ this.command = command;
+
+ if (command instanceof PapyrusFillHandlePasteCommand) {
+ final Object value = cell.getDataValue();
+
+ if (value instanceof String && FillHandleOperation.SERIES.equals(command.operation)) {
+ final String stringValue = (String) value;
+ result = stringValue;
+ String templateString = PapyrusFillHandleUtils.getTemplateString(stringValue);
+
+ boolean isBeginningByNumber = PapyrusFillHandleUtils.isBeginningByNumber(stringValue, templateString);
+ boolean isEndingByNumber = PapyrusFillHandleUtils.isEndingBNumber(stringValue, templateString);
+
+ if (isBeginningByNumber && isEndingByNumber) {
+ isBeginningByNumber = ((PapyrusFillHandlePasteCommand) command).isPrefix();
+ isEndingByNumber = !isBeginningByNumber;
+ if (isBeginningByNumber) {
+ templateString = PapyrusFillHandleUtils.getTemplateWithoutBeginningNumber(stringValue);
+ } else {
+ templateString = PapyrusFillHandleUtils.getTemplateWithoutEndingNumber(stringValue);
+ }
+ }
+
+ final String number = stringValue.replace(templateString, ""); //$NON-NLS-1$
+
+ if (!number.isEmpty()) {
+ final int intValue = Integer.parseInt(number);
+
+ Object diff = 0;
+ if (MoveDirectionEnum.LEFT == command.direction || MoveDirectionEnum.RIGHT == command.direction) {
+ diff = calculateVerticalStringDiff(templateString, cell, toColumn);
+ } else if (MoveDirectionEnum.UP == command.direction || MoveDirectionEnum.DOWN == command.direction) {
+ diff = calculateHorizontalStringDiff(templateString, cell, toRow);
+ }
+
+ // if we can not determine a common diff value we perform a copy
+ if (null != diff) {
+ int newValue = 0;
+ if (((PapyrusFillHandlePasteCommand) command).isIncrement()) {
+ newValue = intValue + ((Integer) diff);
+ } else {
+ newValue = intValue - ((Integer) diff);
+ }
+
+ if (isBeginningByNumber) {
+ result = newValue + templateString;
+ } else if (isEndingByNumber) {
+ result = templateString + newValue;
+ }
+ }
+ }
+ }
+ }
+ boolean isEditable = EditUtils.isCellEditable(
+ this.selectionLayer,
+ command.configRegistry,
+ new PositionCoordinate(this.selectionLayer,
+ cell.getColumnIndex(),
+ cell.getRowIndex()));
+ return !isEditable || null != result ? result : super.getPasteValue(cell, command, toColumn, toRow);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler#calculateHorizontalDiff(org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell, int, org.eclipse.nebula.widgets.nattable.config.IConfigRegistry)
+ */
+ @Override
+ protected Number calculateHorizontalDiff(final ILayerCell cell, final int toRow, final IConfigRegistry configRegistry) {
+ Number diff = super.calculateHorizontalDiff(cell, toRow, configRegistry);
+
+ if (command instanceof PapyrusFillHandlePasteCommand) {
+ if ((MoveDirectionEnum.UP == command.direction && !((PapyrusFillHandlePasteCommand) command).isIncrement())
+ || (MoveDirectionEnum.DOWN == command.direction && !((PapyrusFillHandlePasteCommand) command).isIncrement())) {
+ if (diff instanceof Byte) {
+ diff = 0 - diff.byteValue();
+ } else if (diff instanceof Short) {
+ diff = 0 - diff.shortValue();
+ } else if (diff instanceof Integer) {
+ diff = 0 - diff.intValue();
+ } else if (diff instanceof Long) {
+ diff = 0 - diff.longValue();
+ } else if (diff instanceof Float) {
+ diff = 0 - diff.floatValue();
+ } else if (diff instanceof Double) {
+ diff = 0 - diff.doubleValue();
+ } else if (diff instanceof BigInteger) {
+ diff = BigInteger.ZERO.subtract((BigInteger) diff);
+ } else if (diff instanceof BigDecimal) {
+ diff = BigDecimal.ZERO.subtract((BigDecimal) diff);
+ }
+ }
+ }
+
+ return diff;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler#calculateVerticalDiff(org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell, int, org.eclipse.nebula.widgets.nattable.config.IConfigRegistry)
+ */
+ @Override
+ protected Number calculateVerticalDiff(final ILayerCell cell, final int toColumn, final IConfigRegistry configRegistry) {
+ Number diff = super.calculateVerticalDiff(cell, toColumn, configRegistry);
+
+ if (command instanceof PapyrusFillHandlePasteCommand) {
+ if ((MoveDirectionEnum.LEFT == command.direction && !((PapyrusFillHandlePasteCommand) command).isIncrement())
+ || (MoveDirectionEnum.RIGHT == command.direction && !((PapyrusFillHandlePasteCommand) command).isIncrement())) {
+ if (diff instanceof Byte) {
+ diff = 0 - diff.byteValue();
+ } else if (diff instanceof Short) {
+ diff = 0 - diff.shortValue();
+ } else if (diff instanceof Integer) {
+ diff = 0 - diff.intValue();
+ } else if (diff instanceof Long) {
+ diff = 0 - diff.longValue();
+ } else if (diff instanceof Float) {
+ diff = 0 - diff.floatValue();
+ } else if (diff instanceof Double) {
+ diff = 0 - diff.doubleValue();
+ } else if (diff instanceof BigInteger) {
+ diff = BigInteger.ZERO.subtract((BigInteger) diff);
+ } else if (diff instanceof BigDecimal) {
+ diff = BigDecimal.ZERO.subtract((BigDecimal) diff);
+ }
+ }
+ }
+
+ return diff;
+ }
+
+ /**
+ * Calculate the vertical difference for string cells.
+ *
+ * @param templateString
+ * the template string.
+ * @param cell
+ * The cell to modify.
+ * @param toColumn
+ * The initial column index.
+ * @return The integer value difference.
+ */
+ protected Number calculateVerticalStringDiff(final String templateString, final ILayerCell cell, final int toColumn) {
+
+ final ILayerCell[][] cells = this.clipboard.getCopiedCells();
+ final int columnDiff = getColumnDiff(cell, toColumn);
+ final int rowArrayIndex = cell.getRowIndex() - this.clipboard.getCopiedCells()[0][0].getRowIndex();
+ if (1 == cells[rowArrayIndex].length) {
+ return columnDiff;
+ } else {
+ final Integer diff = calculateStringDiff(cells[rowArrayIndex][1], cells[rowArrayIndex][0], templateString);
+ if (null == diff) {
+ return null;
+ }
+ Integer temp = diff;
+ for (int i = 1; i < cells.length; i++) {
+ temp = calculateStringDiff(cells[rowArrayIndex][i], cells[rowArrayIndex][i - 1], templateString);
+ if (null == temp || !temp.equals(diff)) {
+ return null;
+ }
+ }
+ return diff * columnDiff;
+ }
+ }
+
+ /**
+ * Calculate the horizontal difference for string cells.
+ *
+ * @param templateString
+ * the template string.
+ * @param cell
+ * The cell to modify.
+ * @param toRow
+ * The initial row index.
+ * @return The integer value difference.
+ */
+ protected Number calculateHorizontalStringDiff(final String templateString, final ILayerCell cell, final int toRow) {
+
+ ILayerCell[][] cells = this.clipboard.getCopiedCells();
+ int rowDiff = getRowDiff(cell, toRow);
+ if (cells.length == 1) {
+ return rowDiff;
+ } else {
+ int columnArrayIndex = cell.getColumnIndex() - this.clipboard.getCopiedCells()[0][0].getColumnIndex();
+ Integer diff = calculateStringDiff(cells[1][columnArrayIndex], cells[0][columnArrayIndex], templateString);
+ if (diff == null) {
+ return null;
+ }
+ Integer temp = diff;
+ for (int i = 1; i < cells.length; i++) {
+ temp = calculateStringDiff(cells[i][columnArrayIndex], cells[i - 1][columnArrayIndex], templateString);
+ if (temp == null || !temp.equals(diff)) {
+ return null;
+ }
+ }
+ return diff * rowDiff;
+ }
+ }
+
+ /**
+ * This allows to calculate the string difference (without the template string).
+ *
+ * @param c1
+ * The first cell.
+ * @param c2
+ * The second cell.
+ * @param templateString
+ * The template string to remove from first and second cells.
+ * @return The integer difference;
+ */
+ protected Integer calculateStringDiff(final ILayerCell c1, final ILayerCell c2, final String templateString) {
+ Integer diff = null;
+ if (null != c1.getDataValue() && null != c2.getDataValue()
+ && (c1.getDataValue() instanceof String) && (c2.getDataValue() instanceof String)
+ && ((String) c1.getDataValue()).contains(templateString) && ((String) c2.getDataValue()).contains(templateString)) {
+ try {
+ diff = new Integer(Integer.parseInt(((String) c1.getDataValue()).replace(templateString, "")) - Integer.parseInt(((String) c2.getDataValue()).replace(templateString, ""))); //$NON-NLS-1$ //$NON-NLS-2$
+ } catch (Exception e) {
+ // continue
+ }
+ }
+ return diff;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler#getRowDiff(org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell, int)
+ */
+ @Override
+ protected int getRowDiff(final ILayerCell currentCell, final int toRow) {
+ int rowDiff = 0;
+
+ int lower = 0;
+ int upper = 0;
+
+ if (toRow > currentCell.getRowIndex()) {
+ lower = currentCell.getRowIndex();
+ upper = toRow;
+ } else {
+ lower = toRow;
+ upper = currentCell.getRowIndex();
+ }
+
+ for (int index = lower; index < upper; index++) {
+
+ final Object rowElement = AxisUtils.getRepresentedElement(tableManager.getRowElement(index));
+ final Object columnElement = AxisUtils.getRepresentedElement(tableManager.getColumnElement(currentCell.getColumnIndex()));
+
+ final boolean isEditable = CellManagerFactory.INSTANCE.isCellEditable(columnElement, rowElement);
+
+ if (isEditable) {
+ rowDiff++;
+ }
+ }
+
+ return rowDiff;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommandHandler#getColumnDiff(org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell, int)
+ */
+ @Override
+ protected int getColumnDiff(final ILayerCell currentCell, final int toColumn) {
+ int columnDiff = 0;
+
+ int lower = 0;
+ int upper = 0;
+
+ if (toColumn > currentCell.getColumnIndex()) {
+ lower = currentCell.getColumnIndex();
+ upper = toColumn;
+ } else {
+ lower = toColumn;
+ upper = currentCell.getColumnIndex();
+ }
+
+ for (int index = lower; index < upper; index++) {
+
+ final Object rowElement = AxisUtils.getRepresentedElement(tableManager.getRowElement(currentCell.getRowIndex()));
+ final Object columnElement = AxisUtils.getRepresentedElement(tableManager.getColumnElement(index));
+
+ final boolean isEditable = CellManagerFactory.INSTANCE.isCellEditable(columnElement, rowElement);
+
+ if (isEditable) {
+ columnDiff++;
+ }
+ }
+
+ return columnDiff;
+ }
+
+}
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/config/PapyrusFillHandleConfiguration.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/config/PapyrusFillHandleConfiguration.java
new file mode 100644
index 00000000000..18fa8d27510
--- /dev/null
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/config/PapyrusFillHandleConfiguration.java
@@ -0,0 +1,108 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.nattable.fillhandle.config;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.copy.command.InternalCopyDataCommandHandler;
+import org.eclipse.nebula.widgets.nattable.fillhandle.FillHandleLayerPainter;
+import org.eclipse.nebula.widgets.nattable.fillhandle.action.FillHandleCursorAction;
+import org.eclipse.nebula.widgets.nattable.fillhandle.config.FillHandleConfiguration;
+import org.eclipse.nebula.widgets.nattable.fillhandle.event.FillHandleEventMatcher;
+import org.eclipse.nebula.widgets.nattable.fillhandle.event.FillHandleMarkupListener;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.nebula.widgets.nattable.ui.action.ClearCursorAction;
+import org.eclipse.nebula.widgets.nattable.ui.action.NoOpMouseAction;
+import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
+import org.eclipse.nebula.widgets.nattable.ui.matcher.MouseEventMatcher;
+import org.eclipse.papyrus.infra.nattable.fillhandle.action.PapyrusFillHandleDragMode;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommandHandler;
+import org.eclipse.papyrus.infra.nattable.manager.table.INattableModelManager;
+
+/**
+ * The papyrus configuration for the fill handler.
+ */
+public class PapyrusFillHandleConfiguration extends FillHandleConfiguration {
+
+ /**
+ * The current nattable model manager.
+ */
+ protected INattableModelManager tableManager;
+
+ /**
+ * Constructor.
+ *
+ * @param selectionLayer The selection layer.
+ * @param tableManager The current nattable model manager.
+ */
+ public PapyrusFillHandleConfiguration(final SelectionLayer selectionLayer, final INattableModelManager tableManager) {
+ super(selectionLayer);
+ this.tableManager = tableManager;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.config.FillHandleConfiguration#configureTypedLayer(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ public void configureTypedLayer(final NatTable natTable) {
+ // initialization works here because configureLayer() is executed before
+ // configureUiBindings()
+ this.clipboard = natTable.getInternalCellClipboard();
+
+ this.painter = new FillHandleLayerPainter();
+ this.selectionLayer.setLayerPainter(this.painter);
+
+ this.selectionLayer.addLayerListener(new FillHandleMarkupListener(this.selectionLayer));
+
+ final InternalCopyDataCommandHandler handler = new InternalCopyDataCommandHandler(this.selectionLayer, this.clipboard);
+ handler.setCopyFormattedText(true);
+ this.selectionLayer.registerCommandHandler(
+ handler);
+ this.selectionLayer.registerCommandHandler(
+ new PapyrusFillHandlePasteCommandHandler(this.selectionLayer, this.clipboard, this.tableManager));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.nebula.widgets.nattable.fillhandle.config.FillHandleConfiguration#configureUiBindings(org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry)
+ */
+ @Override
+ public void configureUiBindings(final UiBindingRegistry uiBindingRegistry) {
+ FillHandleEventMatcher matcher = new FillHandleEventMatcher(this.painter);
+
+ // Mouse move
+ // Show fill handle cursor
+ uiBindingRegistry.registerFirstMouseMoveBinding(
+ matcher,
+ new FillHandleCursorAction());
+ uiBindingRegistry.registerMouseMoveBinding(
+ new MouseEventMatcher(),
+ new ClearCursorAction());
+
+ // Mouse drag
+ // trigger the handle drag operations
+ uiBindingRegistry.registerFirstMouseDragMode(
+ matcher,
+ new PapyrusFillHandleDragMode(this.selectionLayer, this.clipboard));
+
+ // Mouse click
+ // ensure no selection is triggered on mouse down on the handle
+ uiBindingRegistry.registerFirstMouseDownBinding(
+ matcher,
+ new NoOpMouseAction());
+ }
+
+}
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/utils/PapyrusFillHandleUtils.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/utils/PapyrusFillHandleUtils.java
new file mode 100644
index 00000000000..18540580e05
--- /dev/null
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/fillhandle/utils/PapyrusFillHandleUtils.java
@@ -0,0 +1,122 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.nattable.fillhandle.utils;
+
+/**
+ * The papyrus fill handle utils.
+ */
+public class PapyrusFillHandleUtils {
+
+ /**
+ * The negative char.
+ */
+ private static String NEGATIVE_CHAR = "-"; //$NON-NLS-1$
+
+ /**
+ * Get the template string from a string (without beginning and ending number).
+ *
+ * @param initialString The initial string.
+ * @return The modified string (without beginning and ending number).
+ */
+ public static String getTemplateString(final String initialString){
+ return getTemplateWithoutEndingNumber(getTemplateWithoutBeginningNumber(initialString));
+ }
+
+ /**
+ * Get the template string from a string (without beginning number).
+ *
+ * @param initialString The initial string.
+ * @return The modified string (without beginning number).
+ */
+ public static String getTemplateWithoutBeginningNumber(final String initialString){
+ String result = initialString;
+
+ // The number must be a negative number
+ try{
+ if(2 <= result.length() && NEGATIVE_CHAR.equals(result.substring(0, 1))){
+ Integer.parseInt(result.substring(1, 2));
+ result = result.substring(2);
+ }
+ }catch(Exception e){
+ // Continue
+ }
+
+ // Try to remove beginning number
+ try{
+ while(!result.isEmpty()){
+ final String firstChar = result.substring(0, 1);
+ Integer.parseInt(firstChar);
+ result = result.substring(1);
+ }
+ }catch(Exception e){
+ // Continue
+ }
+
+ return result;
+ }
+
+ /**
+ * Get the template string from a string (without ending number).
+ *
+ * @param initialString The initial string.
+ * @return The modified string (without ending number).
+ */
+ public static String getTemplateWithoutEndingNumber(final String initialString){
+ String result = initialString;
+
+ boolean hasNumber = false;
+
+ // Try to remove ending number
+ try{
+ while(!result.isEmpty()){
+ final String lastChar = result.substring(result.length()-1);
+ Integer.parseInt(lastChar);
+ hasNumber = true;
+ result = result.substring(0, result.length()-1);
+ }
+ }catch(Exception e){
+ // Continue
+ }
+
+ // If a number is found, check if this is not a negative number
+ if(hasNumber && NEGATIVE_CHAR.equals(result.substring(result.length()-1))){
+ result = result.substring(0, result.length()-1);
+ }
+
+ return result;
+ }
+
+ /**
+ * Check if a string is starting with the template string.
+ *
+ * @param initialString The initial string to check.
+ * @param templateString The template string.
+ * @return <code>true</code> if the initial string starts with template string, <code>false</code> otherwise.
+ */
+ public static boolean isBeginningByNumber(final String initialString, final String templateString){
+ return !templateString.isEmpty() && !initialString.startsWith(templateString);
+ }
+
+ /**
+ * Check if a string is ending with the template string.
+ *
+ * @param initialString The initial string to check.
+ * @param templateString The template string.
+ * @return <code>true</code> if the initial string ends with template string, <code>false</code> otherwise.
+ */
+ public static boolean isEndingBNumber(final String initialString, final String templateString){
+ return templateString.isEmpty() || !initialString.endsWith(templateString);
+ }
+
+}
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/AbstractNattableWidgetManager.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/AbstractNattableWidgetManager.java
index ae658dbbbf4..f6c2b0b960a 100755
--- a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/AbstractNattableWidgetManager.java
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/AbstractNattableWidgetManager.java
@@ -97,6 +97,7 @@ import org.eclipse.papyrus.infra.nattable.dataprovider.ColumnLabelHeaderDataProv
import org.eclipse.papyrus.infra.nattable.dataprovider.CompositeColumnHeaderDataProvider;
import org.eclipse.papyrus.infra.nattable.dataprovider.CompositeRowHeaderDataProvider;
import org.eclipse.papyrus.infra.nattable.display.converter.ObjectNameAndPathDisplayConverter;
+import org.eclipse.papyrus.infra.nattable.fillhandle.config.PapyrusFillHandleConfiguration;
import org.eclipse.papyrus.infra.nattable.filter.configuration.IFilterConfiguration;
import org.eclipse.papyrus.infra.nattable.layer.FilterRowHeaderComposite;
import org.eclipse.papyrus.infra.nattable.layer.PapyrusGridLayer;
@@ -362,6 +363,10 @@ public abstract class AbstractNattableWidgetManager implements INattableModelMan
this.natTable.addConfiguration(new FilterRowCustomConfiguration());
this.natTable.addConfiguration(new RowSortModelConfiguration(getRowSortModel()));
this.natTable.addConfiguration(new ClearSelectionUIBindingConfiguration());
+
+ // add the copy AND increment behavior
+ this.natTable.addConfiguration(new PapyrusFillHandleConfiguration(this.bodyLayerStack.getSelectionLayer(), this));
+
// we register some information in the config registry of the nattable widget
IConfigRegistry configRegistry = this.natTable.getConfigRegistry();
@@ -943,9 +948,9 @@ public abstract class AbstractNattableWidgetManager implements INattableModelMan
}
}
-
+
// If this index is not display, increment the resized header position to corresponding to the label
- if(null != localColumnHeaderAxis && !localColumnHeaderAxis.isDisplayIndex()){
+ if (null != localColumnHeaderAxis && !localColumnHeaderAxis.isDisplayIndex()) {
resizedHeaderPosition++;
}
@@ -1016,7 +1021,7 @@ public abstract class AbstractNattableWidgetManager implements INattableModelMan
@Override
public void handleLayerEvent(ILayerEvent event) {
if (event instanceof ColumnResizeEvent) {
-
+
// Calculate the width of the index column and of the label column (depending to its position)
int newHeaderIndexWidth = rowHeaderLayerStack.getRowIndexDataLayer().getColumnWidthByPosition(0);
int newHeaderLabelWidth = rowHeaderLayerStack.getRowLabelDataLayer().getColumnWidthByPosition(0);
@@ -1035,41 +1040,41 @@ public abstract class AbstractNattableWidgetManager implements INattableModelMan
if (getTable().getLocalRowHeaderAxisConfiguration() != null) {
localRowHeaderAxis = getTable().getLocalRowHeaderAxisConfiguration();
} else if (newHeaderIndexWidth != DefaultSizeUtils.getDefaultRowHeaderWidth() || newHeaderLabelWidth != DefaultSizeUtils.getDefaultRowHeaderWidth()) {
- TableHeaderAxisConfiguration rowHeaderAxis;
- EStructuralFeature localHeaderFeature = null;
- rowHeaderAxis = getTable().getTableConfiguration().getRowHeaderAxisConfiguration();
- localRowHeaderAxis = HeaderAxisConfigurationManagementUtils.transformToLocalHeaderConfiguration(rowHeaderAxis);
- localHeaderFeature = NattablePackage.eINSTANCE.getTable_LocalRowHeaderAxisConfiguration();
-
- IEditCommandRequest initLocalRowHeaderAxis = new SetRequest(tableDomain, table, localHeaderFeature, localRowHeaderAxis);
- IElementEditService localRowHeaderAxisProvider = ElementEditServiceUtils.getCommandProvider(table);
- resizeRowHeaderCommand.add(localRowHeaderAxisProvider.getEditCommand(initLocalRowHeaderAxis));
+ TableHeaderAxisConfiguration rowHeaderAxis;
+ EStructuralFeature localHeaderFeature = null;
+ rowHeaderAxis = getTable().getTableConfiguration().getRowHeaderAxisConfiguration();
+ localRowHeaderAxis = HeaderAxisConfigurationManagementUtils.transformToLocalHeaderConfiguration(rowHeaderAxis);
+ localHeaderFeature = NattablePackage.eINSTANCE.getTable_LocalRowHeaderAxisConfiguration();
+
+ IEditCommandRequest initLocalRowHeaderAxis = new SetRequest(tableDomain, table, localHeaderFeature, localRowHeaderAxis);
+ IElementEditService localRowHeaderAxisProvider = ElementEditServiceUtils.getCommandProvider(table);
+ resizeRowHeaderCommand.add(localRowHeaderAxisProvider.getEditCommand(initLocalRowHeaderAxis));
}
} else {
if (getTable().getLocalColumnHeaderAxisConfiguration() != null) {
localRowHeaderAxis = getTable().getLocalColumnHeaderAxisConfiguration();
} else if (newHeaderIndexWidth != DefaultSizeUtils.getDefaultRowHeaderWidth() || newHeaderLabelWidth != DefaultSizeUtils.getDefaultRowHeaderWidth()) {
- TableHeaderAxisConfiguration rowHeaderAxis;
- EStructuralFeature localHeaderFeature = null;
- rowHeaderAxis = getTable().getTableConfiguration().getColumnHeaderAxisConfiguration();
- localRowHeaderAxis = HeaderAxisConfigurationManagementUtils.transformToLocalHeaderConfiguration(rowHeaderAxis);
- localHeaderFeature = NattablePackage.eINSTANCE.getTable_LocalColumnHeaderAxisConfiguration();
-
- IEditCommandRequest initLocalRowHeaderAxis = new SetRequest(tableDomain, table, localHeaderFeature, localRowHeaderAxis);
- IElementEditService localRowHeaderAxisProvider = ElementEditServiceUtils.getCommandProvider(table);
- resizeRowHeaderCommand.add(localRowHeaderAxisProvider.getEditCommand(initLocalRowHeaderAxis));
+ TableHeaderAxisConfiguration rowHeaderAxis;
+ EStructuralFeature localHeaderFeature = null;
+ rowHeaderAxis = getTable().getTableConfiguration().getColumnHeaderAxisConfiguration();
+ localRowHeaderAxis = HeaderAxisConfigurationManagementUtils.transformToLocalHeaderConfiguration(rowHeaderAxis);
+ localHeaderFeature = NattablePackage.eINSTANCE.getTable_LocalColumnHeaderAxisConfiguration();
+
+ IEditCommandRequest initLocalRowHeaderAxis = new SetRequest(tableDomain, table, localHeaderFeature, localRowHeaderAxis);
+ IElementEditService localRowHeaderAxisProvider = ElementEditServiceUtils.getCommandProvider(table);
+ resizeRowHeaderCommand.add(localRowHeaderAxisProvider.getEditCommand(initLocalRowHeaderAxis));
}
}
-
+
// If this index is not display, increment the resized header position to corresponding to the label
- if(null != localRowHeaderAxis && !localRowHeaderAxis.isDisplayIndex()){
+ if (null != localRowHeaderAxis && !localRowHeaderAxis.isDisplayIndex()) {
resizedHeaderPosition++;
}
-
+
// Recalculate the initial label width to compare with the correct one
- newHeaderLabelWidth = rowHeaderLayerStack.getRowLabelDataLayer().getColumnWidthByPosition(resizedHeaderPosition-1);
+ newHeaderLabelWidth = rowHeaderLayerStack.getRowLabelDataLayer().getColumnWidthByPosition(resizedHeaderPosition - 1);
if (resizedHeaderPosition == 0 && localRowHeaderAxis != null) {
IntValueStyle valueIndex = (IntValueStyle) localRowHeaderAxis.getNamedStyle(NattablestylePackage.eINSTANCE.getIntValueStyle(), NamedStyleConstants.ROW_INDEX_WIDTH);
@@ -1104,12 +1109,12 @@ public abstract class AbstractNattableWidgetManager implements INattableModelMan
resizeRowHeaderCommand.add(resizeRowHeaderLabelCommand);
}
}
-
- if(resizedHeaderPosition > 1 && null != localRowHeaderAxis){
+
+ if (resizedHeaderPosition > 1 && null != localRowHeaderAxis) {
final StringBuilder nameStyle = new StringBuilder(NamedStyleConstants.ROW_LABEL_POSITION_PREFIX_WIDTH);
nameStyle.append(resizedHeaderPosition);
nameStyle.append(NamedStyleConstants.ROW_LABEL_POSITION_SUFFIX_WIDTH);
-
+
IntValueStyle valueLabel = (IntValueStyle) localRowHeaderAxis.getNamedStyle(NattablestylePackage.eINSTANCE.getIntValueStyle(), nameStyle.toString());
if (valueLabel != null && valueLabel.getIntValue() != newHeaderLabelWidth) {
SetRequest resizeRowHeaderLabel = new SetRequest(tableDomain, valueLabel, NattablestylePackage.eINSTANCE.getIntValueStyle_IntValue(), newHeaderLabelWidth);
@@ -1492,21 +1497,21 @@ public abstract class AbstractNattableWidgetManager implements INattableModelMan
} else {
tableRowLabelHeaderLayer.setColumnWidthByPosition(0, DefaultSizeUtils.getDefaultRowHeaderWidth());
}
-
+
// Manage the style for the header with index > 1
- for(final Style style : rowHeader.getStyles()){
- if(style instanceof IntValueStyle){
+ for (final Style style : rowHeader.getStyles()) {
+ if (style instanceof IntValueStyle) {
final String styleName = ((IntValueStyle) style).getName();
- if(styleName.startsWith(NamedStyleConstants.ROW_LABEL_POSITION_PREFIX_WIDTH)){
- //Calculate the position contained in the name of the style
+ if (styleName.startsWith(NamedStyleConstants.ROW_LABEL_POSITION_PREFIX_WIDTH)) {
+ // Calculate the position contained in the name of the style
String styleNameWithoutPrefix = styleName.replace(NamedStyleConstants.ROW_LABEL_POSITION_PREFIX_WIDTH, "");
String styleNameWithoutSuffix = styleNameWithoutPrefix.replace(NamedStyleConstants.ROW_LABEL_POSITION_SUFFIX_WIDTH, "");
// Remove 1 because the column position start at 0
- int position = Integer.parseInt(styleNameWithoutSuffix)-1;
-
+ int position = Integer.parseInt(styleNameWithoutSuffix) - 1;
+
// Don't try to set a width of a position which not existing
- if(position < tableRowLabelHeaderLayer.getColumnCount()){
- tableRowLabelHeaderLayer.setColumnWidthByPosition(position, ((IntValueStyle)style).getIntValue());
+ if (position < tableRowLabelHeaderLayer.getColumnCount()) {
+ tableRowLabelHeaderLayer.setColumnWidthByPosition(position, ((IntValueStyle) style).getIntValue());
}
}
}
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/TreeNattableModelManager.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/TreeNattableModelManager.java
index 7d964e31b2e..f1d21cf98a0 100755
--- a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/TreeNattableModelManager.java
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/table/TreeNattableModelManager.java
@@ -42,7 +42,6 @@ import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.painter.IOverlayPainter;
import org.eclipse.nebula.widgets.nattable.painter.layer.CellLayerPainter;
import org.eclipse.nebula.widgets.nattable.resize.action.VerticalResizeCursorAction;
-import org.eclipse.nebula.widgets.nattable.selection.SelectionLayerPainter;
import org.eclipse.nebula.widgets.nattable.util.ClientAreaAdapter;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.nebula.widgets.nattable.viewport.SliderScroller;
@@ -285,11 +284,6 @@ public class TreeNattableModelManager extends NattableModelManager implements IT
getRowHeaderLayerStack().getViewportLayer().setVerticalScrollbarEnabled(false);
- // use a cell layer painter that is configured for left clipping
- // this ensures that the rendering works correctly for split
- // viewports
- getBodyLayerStack().getSelectionLayer().setLayerPainter(new SelectionLayerPainter(true, false));
-
filterColumnHeaderComposite.setLayerPainter(new CellLayerPainter(true, false));
// add an IOverlayPainter to render the split viewport border
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/Messages.java b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/Messages.java
index 59feb5454c7..27c77133c68 100644
--- a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/Messages.java
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/Messages.java
@@ -162,7 +162,7 @@ public class Messages extends NLS {
public static String EditConfiguration_FactoryHandlesElementButDoesntProvideEditor;
public static String EObjectManager_AddAxisElement;
-
+
public static String InsertInNattableManager_InsertColumnsError;
public static String InsertInNattableManager_InsertNotYetManaged;
@@ -306,7 +306,21 @@ public class Messages extends NLS {
public static String LoadCurrentAxisProvidersDialog_2;
public static String LoadCurrentAxisProvidersDialog_3;
-
+
+ public static String PapyrusFillHandleDragMode_CopyCommandName;
+
+ public static String PapyrusFillHandleDragMode_DecrementCommandName;
+
+ public static String PapyrusFillHandleDragMode_DecrementPrefixCommandName;
+
+ public static String PapyrusFillHandleDragMode_DecrementSuffixCommandName;
+
+ public static String PapyrusFillHandleDragMode_IncrementCommandName;
+
+ public static String PapyrusFillHandleDragMode_IncrementPrefixCommandName;
+
+ public static String PapyrusFillHandleDragMode_IncrementSuffixCommandName;
+
public static String PapyrusPopupMenuAction_ShowCategoriesOnDepth;
public static String PasteConfigurationUtils_ContainementFeatureIsNotAReference;
diff --git a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/messages.properties b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/messages.properties
index 9fc640fc39f..8d7c149592b 100644
--- a/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/messages.properties
+++ b/plugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/messages/messages.properties
@@ -142,6 +142,13 @@ LoadCurrentAxisProvidersDialog_0=Name
LoadCurrentAxisProvidersDialog_1=Description
LoadCurrentAxisProvidersDialog_2=Columns
LoadCurrentAxisProvidersDialog_3=\ (current)
+PapyrusFillHandleDragMode_CopyCommandName=Copy
+PapyrusFillHandleDragMode_DecrementCommandName=Decrement
+PapyrusFillHandleDragMode_DecrementPrefixCommandName=Decrement prefix
+PapyrusFillHandleDragMode_DecrementSuffixCommandName=Decrement suffix
+PapyrusFillHandleDragMode_IncrementCommandName=Increment
+PapyrusFillHandleDragMode_IncrementPrefixCommandName=Increment prefix
+PapyrusFillHandleDragMode_IncrementSuffixCommandName=Increment suffix
PapyrusPopupMenuAction_ShowCategoriesOnDepth=Show Level-{0} Categories
PasteConfigurationUtils_ContainementFeatureIsNotAReference=The containment feature for the pasted elements is not a reference.
PasteConfigurationUtils_ContainmentFeatureIsNotAReferenceContainment=The containment feature is not a reference in containment.
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/META-INF/MANIFEST.MF
index 7f88b1333d8..1919300de40 100644
--- a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/META-INF/MANIFEST.MF
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/META-INF/MANIFEST.MF
@@ -28,7 +28,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.papyrus.emf.facet.custom.metamodel;bundle-version="1.2.0",
org.eclipse.papyrus.infra.services.validation;bundle-version="1.2.0",
org.eclipse.papyrus.infra.ui;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0"
+ org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0",
+ org.eclipse.swt
Export-Package: org.eclipse.papyrus.uml.nattable.clazz.config.tests,
org.eclipse.papyrus.uml.nattable.clazz.config.tests.tests
Bundle-Vendor: %Bundle-Vendor
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.di b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.notation b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.notation
new file mode 100644
index 00000000000..129a6f66769
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.notation
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nattable:Table xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:nattablelabelprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider http://www.eclipse.org/papyrus/nattable/model#//nattablelabelprovider" xmi:id="_0tdPAHcSEeSOKsM2DkqZ0A" name="ClassTreeTable" currentRowAxisProvider="_0tdPA3cSEeSOKsM2DkqZ0A" currentColumnAxisProvider="_0tdPAXcSEeSOKsM2DkqZ0A">
+ <context xmi:type="uml:Model" href="FillHandleInteger_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <owner xmi:type="uml:Model" href="FillHandleInteger_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/classTreeTable.configuration#_P3J1cEr7EeSVGbM3cmVSqQ"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_0tdPAXcSEeSOKsM2DkqZ0A" description="This axis provider provides available columns according to the rows of the table (features of the object displayed on the other axis)" name="UML Feature axis provider">
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_LPjFsMT5EeWRgPxoFzdn1A" element="property_of_stereotype:/RootElement::Stereotype1::Integer">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_Yk1o8mZzEeSDCaDFwPGYVw">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9OSsHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/visibility"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//RedefinableElement/isLeaf"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wXrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//Parameter/direction"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_0tdPA3cSEeSOKsM2DkqZ0A" description="This axis provider manages the rows, according to the wanted hierarchy" name="HierarchicalRowaAxisManager" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_yZauQHl4EeWqi9yWvPfrQQ" indexStyle="NUMERIC">
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNWnmiEeWJ7-W-e5W1og" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNUXmiEeWJ7-W-e5W1og" alias="Class">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNW3miEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNU3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXHmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNVXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXXmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNV3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNWHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXnmiEeWJ7-W-e5W1og" depth="2" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNWXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNWnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ <axisIdentifier xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_H1ZVkHmjEeWJ7-W-e5W1og">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axisIdentifier>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNW3miEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Property">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXHmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXXmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Operation">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Parameter">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </ownedAxisConfigurations>
+ <axisManagerConfigurations xmi:type="nattableaxisconfiguration:AxisManagerConfiguration" xmi:id="_SBHYIHmiEeWJ7-W-e5W1og" localSpecificConfigurations="_SBJNUHmiEeWJ7-W-e5W1og _SBJNUnmiEeWJ7-W-e5W1og _SBJNVHmiEeWJ7-W-e5W1og _SBJNVnmiEeWJ7-W-e5W1og _SBJNWHmiEeWJ7-W-e5W1og">
+ <axisManager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@axisManagers.0"/>
+ </axisManagerConfigurations>
+ </localRowHeaderAxisConfiguration>
+</nattable:Table>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.uml b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.uml
new file mode 100644
index 00000000000..080da93f249
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.uml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:RootElement="http:///schemas/RootElement/_t8whEMT4EeWRgPxoFzdn1A/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/RootElement/_t8whEMT4EeWRgPxoFzdn1A/5 FillHandleProfile.di.profile.uml#_t8whEcT4EeWRgPxoFzdn1A">
+ <uml:Model xmi:id="_W0BLkGZzEeSDCaDFwPGYVw" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ANxf4GX6EeWnIND9h9eQPg" name="0Class">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN0jMGX6EeWnIND9h9eQPg" name="Property0_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN738GX6EeWnIND9h9eQPg" name="Property0_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN-7QGX6EeWnIND9h9eQPg" name="Property0_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOGQAGX6EeWnIND9h9eQPg" name="Operation0_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOG3EGX6EeWnIND9h9eQPg" name="Param0_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOHeIGX6EeWnIND9h9eQPg" name="Param0_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOIsQGX6EeWnIND9h9eQPg" name="Param0_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOJTUGX6EeWnIND9h9eQPg" name="Operation0_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOKhcGX6EeWnIND9h9eQPg" name="Param0_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOLvkGX6EeWnIND9h9eQPg" name="Param0_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOM9sGX6EeWnIND9h9eQPg" name="Param0_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AONkwGX6EeWnIND9h9eQPg" name="Operation0_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOOy4GX6EeWnIND9h9eQPg" name="Param0_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOPZ8GX6EeWnIND9h9eQPg" name="Param0_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOQBAGX6EeWnIND9h9eQPg" name="Param0_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOBXgGX6EeWnIND9h9eQPg" name="NestedClass0_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AODzwGX6EeWnIND9h9eQPg" name="NestedClass0_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOFB4GX6EeWnIND9h9eQPg" name="NestedClass0_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AORPIGX6EeWnIND9h9eQPg" name="1Class">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOR2MGX6EeWnIND9h9eQPg" name="Property1_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOTEUGX6EeWnIND9h9eQPg" name="Property1_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOU5gGX6EeWnIND9h9eQPg" name="Property1_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOaZEGX6EeWnIND9h9eQPg" name="Operation1_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AObnMGX6EeWnIND9h9eQPg" name="Param1_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOc1UGX6EeWnIND9h9eQPg" name="Param1_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOdcYGX6EeWnIND9h9eQPg" name="Param1_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOeqgGX6EeWnIND9h9eQPg" name="Operation1_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOfRkGX6EeWnIND9h9eQPg" name="Param1_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOgfsGX6EeWnIND9h9eQPg" name="Param1_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOhGwGX6EeWnIND9h9eQPg" name="Param1_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOiU4GX6EeWnIND9h9eQPg" name="Operation1_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOjjAGX6EeWnIND9h9eQPg" name="Param1_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOkxIGX6EeWnIND9h9eQPg" name="Param1_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOlYMGX6EeWnIND9h9eQPg" name="Param1_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOWHoGX6EeWnIND9h9eQPg" name="NestedClass1_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOXVwGX6EeWnIND9h9eQPg" name="NestedClass1_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOZK8GX6EeWnIND9h9eQPg" name="NestedClass1_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_VhVUAMT4EeWRgPxoFzdn1A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vI-ckMT4EeWRgPxoFzdn1A" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vI-ckcT4EeWRgPxoFzdn1A" key="Version" value="0.0.1"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vI-cksT4EeWRgPxoFzdn1A" key="Comment" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vI-ck8T4EeWRgPxoFzdn1A" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vI-clMT4EeWRgPxoFzdn1A" key="Date" value="2016-01-27"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vI-clcT4EeWRgPxoFzdn1A" key="Author" value=""/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VhWiIMT4EeWRgPxoFzdn1A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="FillHandleProfile.di.profile.uml#_t8whEcT4EeWRgPxoFzdn1A"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="FillHandleProfile.di.profile.uml#_o8C1sMT3EeWRgPxoFzdn1A"/>
+ </profileApplication>
+ </uml:Model>
+ <RootElement:Stereotype1 xmi:id="_br-RUMT4EeWRgPxoFzdn1A" base_Class="_ANxf4GX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_v7kXIMT4EeWRgPxoFzdn1A" Integer="2" base_Property="_AN0jMGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_wcTFoMT4EeWRgPxoFzdn1A" Integer="3" base_Property="_AN738GX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_xAmskMT4EeWRgPxoFzdn1A" Integer="4" base_Property="_AN-7QGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_xjqWUMT4EeWRgPxoFzdn1A" Integer="10" base_Operation="_AOGQAGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_yEiOwMT4EeWRgPxoFzdn1A" Integer="15" base_Operation="_AOJTUGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_ylveYMT4EeWRgPxoFzdn1A" Integer="20" base_Operation="_AONkwGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_zC-M8MT4EeWRgPxoFzdn1A" Integer="6" base_Class="_AOBXgGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_ziBgcMT4EeWRgPxoFzdn1A" Integer="7" base_Class="_AODzwGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_0BsfAMT4EeWRgPxoFzdn1A" Integer="8" base_Class="_AOFB4GX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_0xuNwMT4EeWRgPxoFzdn1A" Integer="12" base_Parameter="_AOG3EGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_1WfuwMT4EeWRgPxoFzdn1A" Integer="13" base_Parameter="_AOHeIGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_14g2sMT4EeWRgPxoFzdn1A" Integer="14" base_Parameter="_AOIsQGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_2urCoMT4EeWRgPxoFzdn1A" Integer="17" base_Parameter="_AOKhcGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_3G6jgMT4EeWRgPxoFzdn1A" Integer="18" base_Parameter="_AOLvkGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_3o7rcMT4EeWRgPxoFzdn1A" Integer="19" base_Parameter="_AOM9sGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_4TzNYMT4EeWRgPxoFzdn1A" Integer="22" base_Parameter="_AOOy4GX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_5KlEYMT4EeWRgPxoFzdn1A" Integer="23" base_Parameter="_AOPZ8GX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_5oNbkMT4EeWRgPxoFzdn1A" Integer="24" base_Parameter="_AOQBAGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_6vzVwMT4EeWRgPxoFzdn1A" Integer="25" base_Class="_AORPIGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_7b5mwMT4EeWRgPxoFzdn1A" Integer="27" base_Property="_AOR2MGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_75TUcMT4EeWRgPxoFzdn1A" Integer="28" base_Property="_AOTEUGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_8in-QMT4EeWRgPxoFzdn1A" Integer="29" base_Property="_AOU5gGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_9leiYMT4EeWRgPxoFzdn1A" Integer="35" base_Operation="_AOaZEGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_-bgygMT4EeWRgPxoFzdn1A" Integer="37" base_Parameter="_AObnMGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_-6GzAMT4EeWRgPxoFzdn1A" Integer="38" base_Parameter="_AOc1UGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="__bBuwMT4EeWRgPxoFzdn1A" Integer="39" base_Parameter="_AOdcYGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_AFN7QMT5EeWRgPxoFzdn1A" Integer="40" base_Operation="_AOeqgGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_AtnYAMT5EeWRgPxoFzdn1A" Integer="42" base_Parameter="_AOfRkGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_BPfWAMT5EeWRgPxoFzdn1A" Integer="43" base_Parameter="_AOgfsGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_B3fxMMT5EeWRgPxoFzdn1A" Integer="44" base_Parameter="_AOhGwGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_CcswAMT5EeWRgPxoFzdn1A" Integer="45" base_Operation="_AOiU4GX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_DUghwMT5EeWRgPxoFzdn1A" Integer="47" base_Parameter="_AOjjAGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_D7H10MT5EeWRgPxoFzdn1A" Integer="48" base_Parameter="_AOkxIGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_EXSNYMT5EeWRgPxoFzdn1A" Integer="49" base_Parameter="_AOlYMGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_E2cOkMT5EeWRgPxoFzdn1A" Integer="31" base_Class="_AOWHoGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_FSU5UMT5EeWRgPxoFzdn1A" Integer="32" base_Class="_AOXVwGX6EeWnIND9h9eQPg"/>
+ <RootElement:Stereotype1 xmi:id="_F3kUYMT5EeWRgPxoFzdn1A" Integer="33" base_Class="_AOZK8GX6EeWnIND9h9eQPg"/>
+</xmi:XMI>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_Initial.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_Initial.txt
new file mode 100644
index 00000000000..d729ad65c0d
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_Initial.txt
@@ -0,0 +1,51 @@
+
+0 0Class public false N/A
+
+2 Property0_0 protected true N/A
+3 Property0_1 protected true N/A
+4 Property0_2 protected true N/A
+
+6 NestedClass0_0 private true N/A
+7 NestedClass0_1 private true N/A
+8 NestedClass0_2 private true N/A
+
+10 Operation0_0 package false N/A
+
+12 Param0_0_0 public N/A in
+13 Param0_0_1 public N/A out
+14 Param0_0_2 public N/A return
+15 Operation0_1 package false N/A
+
+17 Param0_1_0 private N/A in
+18 Param0_1_1 private N/A out
+19 Param0_1_2 private N/A return
+20 Operation0_2 package false N/A
+
+22 Param0_2_0 package N/A in
+23 Param0_2_1 package N/A out
+24 Param0_2_2 package N/A return
+25 1Class public false N/A
+
+27 Property1_0 protected true N/A
+28 Property1_1 protected true N/A
+29 Property1_2 protected true N/A
+
+31 NestedClass1_0 private true N/A
+32 NestedClass1_1 private true N/A
+33 NestedClass1_2 private true N/A
+
+35 Operation1_0 package false N/A
+
+37 Param1_0_0 public N/A in
+38 Param1_0_1 public N/A out
+39 Param1_0_2 public N/A return
+40 Operation1_1 package false N/A
+
+42 Param1_1_0 private N/A in
+43 Param1_1_1 private N/A out
+44 Param1_1_2 private N/A return
+45 Operation1_2 package false N/A
+
+47 Param1_2_0 package N/A in
+48 Param1_2_1 package N/A out
+49 Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultCopy.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultCopy.txt
new file mode 100644
index 00000000000..990240e34dd
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultCopy.txt
@@ -0,0 +1,51 @@
+
+0 0Class public false N/A
+
+0 Property0_0 protected true N/A
+0 Property0_1 protected true N/A
+0 Property0_2 protected true N/A
+
+0 NestedClass0_0 private true N/A
+0 NestedClass0_1 private true N/A
+0 NestedClass0_2 private true N/A
+
+0 Operation0_0 package false N/A
+
+0 Param0_0_0 public N/A in
+0 Param0_0_1 public N/A out
+0 Param0_0_2 public N/A return
+0 Operation0_1 package false N/A
+
+0 Param0_1_0 private N/A in
+0 Param0_1_1 private N/A out
+0 Param0_1_2 private N/A return
+0 Operation0_2 package false N/A
+
+0 Param0_2_0 package N/A in
+0 Param0_2_1 package N/A out
+0 Param0_2_2 package N/A return
+0 1Class public false N/A
+
+0 Property1_0 protected true N/A
+0 Property1_1 protected true N/A
+0 Property1_2 protected true N/A
+
+0 NestedClass1_0 private true N/A
+0 NestedClass1_1 private true N/A
+0 NestedClass1_2 private true N/A
+
+0 Operation1_0 package false N/A
+
+0 Param1_0_0 public N/A in
+0 Param1_0_1 public N/A out
+0 Param1_0_2 public N/A return
+0 Operation1_1 package false N/A
+
+0 Param1_1_0 private N/A in
+0 Param1_1_1 private N/A out
+0 Param1_1_2 private N/A return
+0 Operation1_2 package false N/A
+
+0 Param1_2_0 package N/A in
+0 Param1_2_1 package N/A out
+0 Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementDown.txt
new file mode 100644
index 00000000000..96c44171b75
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementDown.txt
@@ -0,0 +1,51 @@
+
+0 0Class public false N/A
+
+-1 Property0_0 protected true N/A
+-2 Property0_1 protected true N/A
+-3 Property0_2 protected true N/A
+
+-4 NestedClass0_0 private true N/A
+-5 NestedClass0_1 private true N/A
+-6 NestedClass0_2 private true N/A
+
+-7 Operation0_0 package false N/A
+
+-8 Param0_0_0 public N/A in
+-9 Param0_0_1 public N/A out
+-10 Param0_0_2 public N/A return
+-11 Operation0_1 package false N/A
+
+-12 Param0_1_0 private N/A in
+-13 Param0_1_1 private N/A out
+-14 Param0_1_2 private N/A return
+-15 Operation0_2 package false N/A
+
+-16 Param0_2_0 package N/A in
+-17 Param0_2_1 package N/A out
+-18 Param0_2_2 package N/A return
+-19 1Class public false N/A
+
+-20 Property1_0 protected true N/A
+-21 Property1_1 protected true N/A
+-22 Property1_2 protected true N/A
+
+-23 NestedClass1_0 private true N/A
+-24 NestedClass1_1 private true N/A
+-25 NestedClass1_2 private true N/A
+
+-26 Operation1_0 package false N/A
+
+-27 Param1_0_0 public N/A in
+-28 Param1_0_1 public N/A out
+-29 Param1_0_2 public N/A return
+-30 Operation1_1 package false N/A
+
+-31 Param1_1_0 private N/A in
+-32 Param1_1_1 private N/A out
+-33 Param1_1_2 private N/A return
+-34 Operation1_2 package false N/A
+
+-35 Param1_2_0 package N/A in
+-36 Param1_2_1 package N/A out
+-37 Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementUp.txt
new file mode 100644
index 00000000000..3e2f4b90409
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultDecrementUp.txt
@@ -0,0 +1,51 @@
+
+12 0Class public false N/A
+
+13 Property0_0 protected true N/A
+14 Property0_1 protected true N/A
+15 Property0_2 protected true N/A
+
+16 NestedClass0_0 private true N/A
+17 NestedClass0_1 private true N/A
+18 NestedClass0_2 private true N/A
+
+19 Operation0_0 package false N/A
+
+20 Param0_0_0 public N/A in
+21 Param0_0_1 public N/A out
+22 Param0_0_2 public N/A return
+23 Operation0_1 package false N/A
+
+24 Param0_1_0 private N/A in
+25 Param0_1_1 private N/A out
+26 Param0_1_2 private N/A return
+27 Operation0_2 package false N/A
+
+28 Param0_2_0 package N/A in
+29 Param0_2_1 package N/A out
+30 Param0_2_2 package N/A return
+31 1Class public false N/A
+
+32 Property1_0 protected true N/A
+33 Property1_1 protected true N/A
+34 Property1_2 protected true N/A
+
+35 NestedClass1_0 private true N/A
+36 NestedClass1_1 private true N/A
+37 NestedClass1_2 private true N/A
+
+38 Operation1_0 package false N/A
+
+39 Param1_0_0 public N/A in
+40 Param1_0_1 public N/A out
+41 Param1_0_2 public N/A return
+42 Operation1_1 package false N/A
+
+43 Param1_1_0 private N/A in
+44 Param1_1_1 private N/A out
+45 Param1_1_2 private N/A return
+46 Operation1_2 package false N/A
+
+47 Param1_2_0 package N/A in
+48 Param1_2_1 package N/A out
+49 Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementDown.txt
new file mode 100644
index 00000000000..65696f8423e
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementDown.txt
@@ -0,0 +1,51 @@
+
+0 0Class public false N/A
+
+1 Property0_0 protected true N/A
+2 Property0_1 protected true N/A
+3 Property0_2 protected true N/A
+
+4 NestedClass0_0 private true N/A
+5 NestedClass0_1 private true N/A
+6 NestedClass0_2 private true N/A
+
+7 Operation0_0 package false N/A
+
+8 Param0_0_0 public N/A in
+9 Param0_0_1 public N/A out
+10 Param0_0_2 public N/A return
+11 Operation0_1 package false N/A
+
+12 Param0_1_0 private N/A in
+13 Param0_1_1 private N/A out
+14 Param0_1_2 private N/A return
+15 Operation0_2 package false N/A
+
+16 Param0_2_0 package N/A in
+17 Param0_2_1 package N/A out
+18 Param0_2_2 package N/A return
+19 1Class public false N/A
+
+20 Property1_0 protected true N/A
+21 Property1_1 protected true N/A
+22 Property1_2 protected true N/A
+
+23 NestedClass1_0 private true N/A
+24 NestedClass1_1 private true N/A
+25 NestedClass1_2 private true N/A
+
+26 Operation1_0 package false N/A
+
+27 Param1_0_0 public N/A in
+28 Param1_0_1 public N/A out
+29 Param1_0_2 public N/A return
+30 Operation1_1 package false N/A
+
+31 Param1_1_0 private N/A in
+32 Param1_1_1 private N/A out
+33 Param1_1_2 private N/A return
+34 Operation1_2 package false N/A
+
+35 Param1_2_0 package N/A in
+36 Param1_2_1 package N/A out
+37 Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementUp.txt
new file mode 100644
index 00000000000..d250fe67f41
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleInteger_V1_V3_V1_Test_ResultIncrementUp.txt
@@ -0,0 +1,51 @@
+
+86 0Class public false N/A
+
+85 Property0_0 protected true N/A
+84 Property0_1 protected true N/A
+83 Property0_2 protected true N/A
+
+82 NestedClass0_0 private true N/A
+81 NestedClass0_1 private true N/A
+80 NestedClass0_2 private true N/A
+
+79 Operation0_0 package false N/A
+
+78 Param0_0_0 public N/A in
+77 Param0_0_1 public N/A out
+76 Param0_0_2 public N/A return
+75 Operation0_1 package false N/A
+
+74 Param0_1_0 private N/A in
+73 Param0_1_1 private N/A out
+72 Param0_1_2 private N/A return
+71 Operation0_2 package false N/A
+
+70 Param0_2_0 package N/A in
+69 Param0_2_1 package N/A out
+68 Param0_2_2 package N/A return
+67 1Class public false N/A
+
+66 Property1_0 protected true N/A
+65 Property1_1 protected true N/A
+64 Property1_2 protected true N/A
+
+63 NestedClass1_0 private true N/A
+62 NestedClass1_1 private true N/A
+61 NestedClass1_2 private true N/A
+
+60 Operation1_0 package false N/A
+
+59 Param1_0_0 public N/A in
+58 Param1_0_1 public N/A out
+57 Param1_0_2 public N/A return
+56 Operation1_1 package false N/A
+
+55 Param1_1_0 private N/A in
+54 Param1_1_1 private N/A out
+53 Param1_1_2 private N/A return
+52 Operation1_2 package false N/A
+
+51 Param1_2_0 package N/A in
+50 Param1_2_1 package N/A out
+49 Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.di b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.notation b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.notation
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.notation
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.uml b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.uml
new file mode 100644
index 00000000000..edcc236f49a
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleProfile.di.profile.uml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_o8C1sMT3EeWRgPxoFzdn1A" name="RootElement" metaclassReference="_AHOi4MT4EeWRgPxoFzdn1A _AHPJ8MT4EeWRgPxoFzdn1A _AHPJ8cT4EeWRgPxoFzdn1A _rR9HsMT4EeWRgPxoFzdn1A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DKLWgMT4EeWRgPxoFzdn1A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_t8whEcT4EeWRgPxoFzdn1A" name="RootElement" nsURI="http:///schemas/RootElement/_t8whEMT4EeWRgPxoFzdn1A/5" nsPrefix="RootElement">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t8xIJMT4EeWRgPxoFzdn1A" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8xIJcT4EeWRgPxoFzdn1A" key="Version" value="0.0.1"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8xIJsT4EeWRgPxoFzdn1A" key="Comment" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8xIJ8T4EeWRgPxoFzdn1A" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8xIKMT4EeWRgPxoFzdn1A" key="Date" value="2016-01-27"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8xIKcT4EeWRgPxoFzdn1A" key="Author" value=""/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_t8whEsT4EeWRgPxoFzdn1A" name="Stereotype1">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t8whE8T4EeWRgPxoFzdn1A" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_uNpSMMT3EeWRgPxoFzdn1A"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_t8whFMT4EeWRgPxoFzdn1A" name="Integer" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/5.0.0/Types#//Integer"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_t8whFsT4EeWRgPxoFzdn1A" name="base_Class" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_t8whGMT4EeWRgPxoFzdn1A" name="base_Operation" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Operation"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_t8whGsT4EeWRgPxoFzdn1A" name="base_Property" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Property"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_t8whHMT4EeWRgPxoFzdn1A" name="base_Parameter" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Parameter"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_AHOi4MT4EeWRgPxoFzdn1A" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_AHPJ8MT4EeWRgPxoFzdn1A" alias="Operation">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_AHPJ8cT4EeWRgPxoFzdn1A" alias="Property">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_rR9HsMT4EeWRgPxoFzdn1A" alias="Parameter">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_uNpSMMT3EeWRgPxoFzdn1A" name="Stereotype1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_vFbOwMT3EeWRgPxoFzdn1A" name="Integer">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_W6A-McT4EeWRgPxoFzdn1A" name="base_Class" association="_W5-h8MT4EeWRgPxoFzdn1A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_XOGX0MT4EeWRgPxoFzdn1A" name="base_Operation" association="_XOFwwMT4EeWRgPxoFzdn1A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_XnDqYMT4EeWRgPxoFzdn1A" name="base_Property" association="_XnDDUMT4EeWRgPxoFzdn1A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_romtIcT4EeWRgPxoFzdn1A" name="base_Parameter" association="_romGEMT4EeWRgPxoFzdn1A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_W5-h8MT4EeWRgPxoFzdn1A" name="E_Stereotype1_Class1" memberEnd="_W6A-MMT4EeWRgPxoFzdn1A _W6A-McT4EeWRgPxoFzdn1A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_W6A-MMT4EeWRgPxoFzdn1A" name="extension_Stereotype1" type="_uNpSMMT3EeWRgPxoFzdn1A" aggregation="composite" association="_W5-h8MT4EeWRgPxoFzdn1A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_XOFwwMT4EeWRgPxoFzdn1A" name="E_Stereotype1_Operation1" memberEnd="_XOFwwcT4EeWRgPxoFzdn1A _XOGX0MT4EeWRgPxoFzdn1A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_XOFwwcT4EeWRgPxoFzdn1A" name="extension_Stereotype1" type="_uNpSMMT3EeWRgPxoFzdn1A" aggregation="composite" association="_XOFwwMT4EeWRgPxoFzdn1A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_XnDDUMT4EeWRgPxoFzdn1A" name="E_Stereotype1_Property1" memberEnd="_XnDDUcT4EeWRgPxoFzdn1A _XnDqYMT4EeWRgPxoFzdn1A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_XnDDUcT4EeWRgPxoFzdn1A" name="extension_Stereotype1" type="_uNpSMMT3EeWRgPxoFzdn1A" aggregation="composite" association="_XnDDUMT4EeWRgPxoFzdn1A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_romGEMT4EeWRgPxoFzdn1A" name="E_Stereotype1_Parameter1" memberEnd="_romtIMT4EeWRgPxoFzdn1A _romtIcT4EeWRgPxoFzdn1A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_romtIMT4EeWRgPxoFzdn1A" name="extension_Stereotype1" type="_uNpSMMT3EeWRgPxoFzdn1A" aggregation="composite" association="_romGEMT4EeWRgPxoFzdn1A"/>
+ </packagedElement>
+</uml:Profile>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.di b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.notation b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.notation
new file mode 100644
index 00000000000..fb37539570f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.notation
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nattable:Table xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:nattablelabelprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider http://www.eclipse.org/papyrus/nattable/model#//nattablelabelprovider" xmi:id="_0tdPAHcSEeSOKsM2DkqZ0A" name="ClassTreeTable" currentRowAxisProvider="_0tdPA3cSEeSOKsM2DkqZ0A" currentColumnAxisProvider="_0tdPAXcSEeSOKsM2DkqZ0A">
+ <context xmi:type="uml:Model" href="FillHandleStringOnlyPrefix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <owner xmi:type="uml:Model" href="FillHandleStringOnlyPrefix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/classTreeTable.configuration#_P3J1cEr7EeSVGbM3cmVSqQ"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_0tdPAXcSEeSOKsM2DkqZ0A" description="This axis provider provides available columns according to the rows of the table (features of the object displayed on the other axis)" name="UML Feature axis provider">
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_Yk1o8mZzEeSDCaDFwPGYVw">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9OSsHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/visibility"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//RedefinableElement/isLeaf"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wXrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//Parameter/direction"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_0tdPA3cSEeSOKsM2DkqZ0A" description="This axis provider manages the rows, according to the wanted hierarchy" name="HierarchicalRowaAxisManager" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_yZauQHl4EeWqi9yWvPfrQQ" indexStyle="NUMERIC">
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNWnmiEeWJ7-W-e5W1og" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNUXmiEeWJ7-W-e5W1og" alias="Class">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNW3miEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNU3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXHmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNVXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXXmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNV3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNWHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXnmiEeWJ7-W-e5W1og" depth="2" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNWXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNWnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ <axisIdentifier xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_H1ZVkHmjEeWJ7-W-e5W1og">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axisIdentifier>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNW3miEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Property">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXHmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXXmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Operation">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Parameter">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </ownedAxisConfigurations>
+ <axisManagerConfigurations xmi:type="nattableaxisconfiguration:AxisManagerConfiguration" xmi:id="_SBHYIHmiEeWJ7-W-e5W1og" localSpecificConfigurations="_SBJNUHmiEeWJ7-W-e5W1og _SBJNUnmiEeWJ7-W-e5W1og _SBJNVHmiEeWJ7-W-e5W1og _SBJNVnmiEeWJ7-W-e5W1og _SBJNWHmiEeWJ7-W-e5W1og">
+ <axisManager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@axisManagers.0"/>
+ </axisManagerConfigurations>
+ </localRowHeaderAxisConfiguration>
+</nattable:Table>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.uml b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.uml
new file mode 100644
index 00000000000..a6461e30b17
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.uml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_W0BLkGZzEeSDCaDFwPGYVw" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ANxf4GX6EeWnIND9h9eQPg" name="0Class">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN0jMGX6EeWnIND9h9eQPg" name="Property0_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN738GX6EeWnIND9h9eQPg" name="Property0_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN-7QGX6EeWnIND9h9eQPg" name="Property0_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOGQAGX6EeWnIND9h9eQPg" name="Operation0_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOG3EGX6EeWnIND9h9eQPg" name="Param0_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOHeIGX6EeWnIND9h9eQPg" name="Param0_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOIsQGX6EeWnIND9h9eQPg" name="Param0_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOJTUGX6EeWnIND9h9eQPg" name="Operation0_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOKhcGX6EeWnIND9h9eQPg" name="Param0_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOLvkGX6EeWnIND9h9eQPg" name="Param0_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOM9sGX6EeWnIND9h9eQPg" name="Param0_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AONkwGX6EeWnIND9h9eQPg" name="Operation0_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOOy4GX6EeWnIND9h9eQPg" name="Param0_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOPZ8GX6EeWnIND9h9eQPg" name="Param0_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOQBAGX6EeWnIND9h9eQPg" name="Param0_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOBXgGX6EeWnIND9h9eQPg" name="NestedClass0_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AODzwGX6EeWnIND9h9eQPg" name="NestedClass0_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOFB4GX6EeWnIND9h9eQPg" name="NestedClass0_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AORPIGX6EeWnIND9h9eQPg" name="1Class">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOR2MGX6EeWnIND9h9eQPg" name="Property1_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOTEUGX6EeWnIND9h9eQPg" name="Property1_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOU5gGX6EeWnIND9h9eQPg" name="Property1_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOaZEGX6EeWnIND9h9eQPg" name="Operation1_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AObnMGX6EeWnIND9h9eQPg" name="Param1_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOc1UGX6EeWnIND9h9eQPg" name="Param1_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOdcYGX6EeWnIND9h9eQPg" name="Param1_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOeqgGX6EeWnIND9h9eQPg" name="Operation1_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOfRkGX6EeWnIND9h9eQPg" name="Param1_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOgfsGX6EeWnIND9h9eQPg" name="Param1_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOhGwGX6EeWnIND9h9eQPg" name="Param1_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOiU4GX6EeWnIND9h9eQPg" name="Operation1_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOjjAGX6EeWnIND9h9eQPg" name="Param1_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOkxIGX6EeWnIND9h9eQPg" name="Param1_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOlYMGX6EeWnIND9h9eQPg" name="1_2_2Param" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOWHoGX6EeWnIND9h9eQPg" name="NestedClass1_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOXVwGX6EeWnIND9h9eQPg" name="NestedClass1_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOZK8GX6EeWnIND9h9eQPg" name="NestedClass1_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_Initial.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_Initial.txt
new file mode 100644
index 00000000000..f68bb7fcc09
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_Initial.txt
@@ -0,0 +1,51 @@
+
+0Class public false N/A
+
+Property0_0 protected true N/A
+Property0_1 protected true N/A
+Property0_2 protected true N/A
+
+NestedClass0_0 private true N/A
+NestedClass0_1 private true N/A
+NestedClass0_2 private true N/A
+
+Operation0_0 package false N/A
+
+Param0_0_0 public N/A in
+Param0_0_1 public N/A out
+Param0_0_2 public N/A return
+Operation0_1 package false N/A
+
+Param0_1_0 private N/A in
+Param0_1_1 private N/A out
+Param0_1_2 private N/A return
+Operation0_2 package false N/A
+
+Param0_2_0 package N/A in
+Param0_2_1 package N/A out
+Param0_2_2 package N/A return
+1Class public false N/A
+
+Property1_0 protected true N/A
+Property1_1 protected true N/A
+Property1_2 protected true N/A
+
+NestedClass1_0 private true N/A
+NestedClass1_1 private true N/A
+NestedClass1_2 private true N/A
+
+Operation1_0 package false N/A
+
+Param1_0_0 public N/A in
+Param1_0_1 public N/A out
+Param1_0_2 public N/A return
+Operation1_1 package false N/A
+
+Param1_1_0 private N/A in
+Param1_1_1 private N/A out
+Param1_1_2 private N/A return
+Operation1_2 package false N/A
+
+Param1_2_0 package N/A in
+Param1_2_1 package N/A out
+1_2_2Param package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultCopy.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultCopy.txt
new file mode 100644
index 00000000000..cc1c1c2a137
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultCopy.txt
@@ -0,0 +1,51 @@
+
+0Class public false N/A
+
+0Class protected true N/A
+0Class protected true N/A
+0Class protected true N/A
+
+0Class private true N/A
+0Class private true N/A
+0Class private true N/A
+
+0Class package false N/A
+
+0Class public N/A in
+0Class public N/A out
+0Class public N/A return
+0Class package false N/A
+
+0Class private N/A in
+0Class private N/A out
+0Class private N/A return
+0Class package false N/A
+
+0Class package N/A in
+0Class package N/A out
+0Class package N/A return
+0Class public false N/A
+
+0Class protected true N/A
+0Class protected true N/A
+0Class protected true N/A
+
+0Class private true N/A
+0Class private true N/A
+0Class private true N/A
+
+0Class package false N/A
+
+0Class public N/A in
+0Class public N/A out
+0Class public N/A return
+0Class package false N/A
+
+0Class private N/A in
+0Class private N/A out
+0Class private N/A return
+0Class package false N/A
+
+0Class package N/A in
+0Class package N/A out
+0Class package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementDown.txt
new file mode 100644
index 00000000000..9ac9c56022f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementDown.txt
@@ -0,0 +1,51 @@
+
+0Class public false N/A
+
+-1Class protected true N/A
+-2Class protected true N/A
+-3Class protected true N/A
+
+-4Class private true N/A
+-5Class private true N/A
+-6Class private true N/A
+
+-7Class package false N/A
+
+-8Class public N/A in
+-9Class public N/A out
+-10Class public N/A return
+-11Class package false N/A
+
+-12Class private N/A in
+-13Class private N/A out
+-14Class private N/A return
+-15Class package false N/A
+
+-16Class package N/A in
+-17Class package N/A out
+-18Class package N/A return
+-19Class public false N/A
+
+-20Class protected true N/A
+-21Class protected true N/A
+-22Class protected true N/A
+
+-23Class private true N/A
+-24Class private true N/A
+-25Class private true N/A
+
+-26Class package false N/A
+
+-27Class public N/A in
+-28Class public N/A out
+-29Class public N/A return
+-30Class package false N/A
+
+-31Class private N/A in
+-32Class private N/A out
+-33Class private N/A return
+-34Class package false N/A
+
+-35Class package N/A in
+-36Class package N/A out
+-37Class package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementUp.txt
new file mode 100644
index 00000000000..5df4123bd0e
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultDecrementUp.txt
@@ -0,0 +1,51 @@
+
+-36_2_2Param public false N/A
+
+-35_2_2Param protected true N/A
+-34_2_2Param protected true N/A
+-33_2_2Param protected true N/A
+
+-32_2_2Param private true N/A
+-31_2_2Param private true N/A
+-30_2_2Param private true N/A
+
+-29_2_2Param package false N/A
+
+-28_2_2Param public N/A in
+-27_2_2Param public N/A out
+-26_2_2Param public N/A return
+-25_2_2Param package false N/A
+
+-24_2_2Param private N/A in
+-23_2_2Param private N/A out
+-22_2_2Param private N/A return
+-21_2_2Param package false N/A
+
+-20_2_2Param package N/A in
+-19_2_2Param package N/A out
+-18_2_2Param package N/A return
+-17_2_2Param public false N/A
+
+-16_2_2Param protected true N/A
+-15_2_2Param protected true N/A
+-14_2_2Param protected true N/A
+
+-13_2_2Param private true N/A
+-12_2_2Param private true N/A
+-11_2_2Param private true N/A
+
+-10_2_2Param package false N/A
+
+-9_2_2Param public N/A in
+-8_2_2Param public N/A out
+-7_2_2Param public N/A return
+-6_2_2Param package false N/A
+
+-5_2_2Param private N/A in
+-4_2_2Param private N/A out
+-3_2_2Param private N/A return
+-2_2_2Param package false N/A
+
+-1_2_2Param package N/A in
+0_2_2Param package N/A out
+1_2_2Param package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementDown.txt
new file mode 100644
index 00000000000..19537ebcbf5
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementDown.txt
@@ -0,0 +1,51 @@
+
+0Class public false N/A
+
+1Class protected true N/A
+2Class protected true N/A
+3Class protected true N/A
+
+4Class private true N/A
+5Class private true N/A
+6Class private true N/A
+
+7Class package false N/A
+
+8Class public N/A in
+9Class public N/A out
+10Class public N/A return
+11Class package false N/A
+
+12Class private N/A in
+13Class private N/A out
+14Class private N/A return
+15Class package false N/A
+
+16Class package N/A in
+17Class package N/A out
+18Class package N/A return
+19Class public false N/A
+
+20Class protected true N/A
+21Class protected true N/A
+22Class protected true N/A
+
+23Class private true N/A
+24Class private true N/A
+25Class private true N/A
+
+26Class package false N/A
+
+27Class public N/A in
+28Class public N/A out
+29Class public N/A return
+30Class package false N/A
+
+31Class private N/A in
+32Class private N/A out
+33Class private N/A return
+34Class package false N/A
+
+35Class package N/A in
+36Class package N/A out
+37Class package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementUp.txt
new file mode 100644
index 00000000000..dbec39d0d3f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test_ResultIncrementUp.txt
@@ -0,0 +1,51 @@
+
+38_2_2Param public false N/A
+
+37_2_2Param protected true N/A
+36_2_2Param protected true N/A
+35_2_2Param protected true N/A
+
+34_2_2Param private true N/A
+33_2_2Param private true N/A
+32_2_2Param private true N/A
+
+31_2_2Param package false N/A
+
+30_2_2Param public N/A in
+29_2_2Param public N/A out
+28_2_2Param public N/A return
+27_2_2Param package false N/A
+
+26_2_2Param private N/A in
+25_2_2Param private N/A out
+24_2_2Param private N/A return
+23_2_2Param package false N/A
+
+22_2_2Param package N/A in
+21_2_2Param package N/A out
+20_2_2Param package N/A return
+19_2_2Param public false N/A
+
+18_2_2Param protected true N/A
+17_2_2Param protected true N/A
+16_2_2Param protected true N/A
+
+15_2_2Param private true N/A
+14_2_2Param private true N/A
+13_2_2Param private true N/A
+
+12_2_2Param package false N/A
+
+11_2_2Param public N/A in
+10_2_2Param public N/A out
+9_2_2Param public N/A return
+8_2_2Param package false N/A
+
+7_2_2Param private N/A in
+6_2_2Param private N/A out
+5_2_2Param private N/A return
+4_2_2Param package false N/A
+
+3_2_2Param package N/A in
+2_2_2Param package N/A out
+1_2_2Param package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.di b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.notation b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.notation
new file mode 100644
index 00000000000..503982457cb
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.notation
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nattable:Table xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:nattablelabelprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider http://www.eclipse.org/papyrus/nattable/model#//nattablelabelprovider" xmi:id="_0tdPAHcSEeSOKsM2DkqZ0A" name="ClassTreeTable" currentRowAxisProvider="_0tdPA3cSEeSOKsM2DkqZ0A" currentColumnAxisProvider="_0tdPAXcSEeSOKsM2DkqZ0A">
+ <context xmi:type="uml:Model" href="FillHandleStringOnlySuffix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <owner xmi:type="uml:Model" href="FillHandleStringOnlySuffix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/classTreeTable.configuration#_P3J1cEr7EeSVGbM3cmVSqQ"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_0tdPAXcSEeSOKsM2DkqZ0A" description="This axis provider provides available columns according to the rows of the table (features of the object displayed on the other axis)" name="UML Feature axis provider">
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_Yk1o8mZzEeSDCaDFwPGYVw">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9OSsHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/visibility"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//RedefinableElement/isLeaf"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wXrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//Parameter/direction"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_0tdPA3cSEeSOKsM2DkqZ0A" description="This axis provider manages the rows, according to the wanted hierarchy" name="HierarchicalRowaAxisManager" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_yZauQHl4EeWqi9yWvPfrQQ" indexStyle="NUMERIC">
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNWnmiEeWJ7-W-e5W1og" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNUXmiEeWJ7-W-e5W1og" alias="Class">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNW3miEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNU3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXHmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNVXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXXmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNV3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNWHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXnmiEeWJ7-W-e5W1og" depth="2" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNWXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNWnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ <axisIdentifier xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_H1ZVkHmjEeWJ7-W-e5W1og">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axisIdentifier>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNW3miEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Property">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXHmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXXmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Operation">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Parameter">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </ownedAxisConfigurations>
+ <axisManagerConfigurations xmi:type="nattableaxisconfiguration:AxisManagerConfiguration" xmi:id="_SBHYIHmiEeWJ7-W-e5W1og" localSpecificConfigurations="_SBJNUHmiEeWJ7-W-e5W1og _SBJNUnmiEeWJ7-W-e5W1og _SBJNVHmiEeWJ7-W-e5W1og _SBJNVnmiEeWJ7-W-e5W1og _SBJNWHmiEeWJ7-W-e5W1og">
+ <axisManager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@axisManagers.0"/>
+ </axisManagerConfigurations>
+ </localRowHeaderAxisConfiguration>
+</nattable:Table>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.uml b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.uml
new file mode 100644
index 00000000000..78a39ffa2bb
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.uml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_W0BLkGZzEeSDCaDFwPGYVw" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ANxf4GX6EeWnIND9h9eQPg" name="Class0">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN0jMGX6EeWnIND9h9eQPg" name="Property0_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN738GX6EeWnIND9h9eQPg" name="Property0_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN-7QGX6EeWnIND9h9eQPg" name="Property0_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOGQAGX6EeWnIND9h9eQPg" name="Operation0_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOG3EGX6EeWnIND9h9eQPg" name="Param0_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOHeIGX6EeWnIND9h9eQPg" name="Param0_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOIsQGX6EeWnIND9h9eQPg" name="Param0_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOJTUGX6EeWnIND9h9eQPg" name="Operation0_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOKhcGX6EeWnIND9h9eQPg" name="Param0_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOLvkGX6EeWnIND9h9eQPg" name="Param0_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOM9sGX6EeWnIND9h9eQPg" name="Param0_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AONkwGX6EeWnIND9h9eQPg" name="Operation0_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOOy4GX6EeWnIND9h9eQPg" name="Param0_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOPZ8GX6EeWnIND9h9eQPg" name="Param0_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOQBAGX6EeWnIND9h9eQPg" name="Param0_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOBXgGX6EeWnIND9h9eQPg" name="NestedClass0_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AODzwGX6EeWnIND9h9eQPg" name="NestedClass0_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOFB4GX6EeWnIND9h9eQPg" name="NestedClass0_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AORPIGX6EeWnIND9h9eQPg" name="Class1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOR2MGX6EeWnIND9h9eQPg" name="Property1_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOTEUGX6EeWnIND9h9eQPg" name="Property1_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOU5gGX6EeWnIND9h9eQPg" name="Property1_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOaZEGX6EeWnIND9h9eQPg" name="Operation1_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AObnMGX6EeWnIND9h9eQPg" name="Param1_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOc1UGX6EeWnIND9h9eQPg" name="Param1_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOdcYGX6EeWnIND9h9eQPg" name="Param1_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOeqgGX6EeWnIND9h9eQPg" name="Operation1_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOfRkGX6EeWnIND9h9eQPg" name="Param1_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOgfsGX6EeWnIND9h9eQPg" name="Param1_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOhGwGX6EeWnIND9h9eQPg" name="Param1_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOiU4GX6EeWnIND9h9eQPg" name="Operation1_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOjjAGX6EeWnIND9h9eQPg" name="Param1_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOkxIGX6EeWnIND9h9eQPg" name="Param1_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOlYMGX6EeWnIND9h9eQPg" name="Param1_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOWHoGX6EeWnIND9h9eQPg" name="NestedClass1_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOXVwGX6EeWnIND9h9eQPg" name="NestedClass1_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOZK8GX6EeWnIND9h9eQPg" name="NestedClass1_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_Initial.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_Initial.txt
new file mode 100644
index 00000000000..e39b39deed5
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_Initial.txt
@@ -0,0 +1,51 @@
+
+Class0 public false N/A
+
+Property0_0 protected true N/A
+Property0_1 protected true N/A
+Property0_2 protected true N/A
+
+NestedClass0_0 private true N/A
+NestedClass0_1 private true N/A
+NestedClass0_2 private true N/A
+
+Operation0_0 package false N/A
+
+Param0_0_0 public N/A in
+Param0_0_1 public N/A out
+Param0_0_2 public N/A return
+Operation0_1 package false N/A
+
+Param0_1_0 private N/A in
+Param0_1_1 private N/A out
+Param0_1_2 private N/A return
+Operation0_2 package false N/A
+
+Param0_2_0 package N/A in
+Param0_2_1 package N/A out
+Param0_2_2 package N/A return
+Class1 public false N/A
+
+Property1_0 protected true N/A
+Property1_1 protected true N/A
+Property1_2 protected true N/A
+
+NestedClass1_0 private true N/A
+NestedClass1_1 private true N/A
+NestedClass1_2 private true N/A
+
+Operation1_0 package false N/A
+
+Param1_0_0 public N/A in
+Param1_0_1 public N/A out
+Param1_0_2 public N/A return
+Operation1_1 package false N/A
+
+Param1_1_0 private N/A in
+Param1_1_1 private N/A out
+Param1_1_2 private N/A return
+Operation1_2 package false N/A
+
+Param1_2_0 package N/A in
+Param1_2_1 package N/A out
+Param1_2_2 package N/A return
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultCopy.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultCopy.txt
new file mode 100644
index 00000000000..2482195acb5
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultCopy.txt
@@ -0,0 +1,51 @@
+
+Class0 public false N/A
+
+Class0 protected true N/A
+Class0 protected true N/A
+Class0 protected true N/A
+
+Class0 private true N/A
+Class0 private true N/A
+Class0 private true N/A
+
+Class0 package false N/A
+
+Class0 public N/A in
+Class0 public N/A out
+Class0 public N/A return
+Class0 package false N/A
+
+Class0 private N/A in
+Class0 private N/A out
+Class0 private N/A return
+Class0 package false N/A
+
+Class0 package N/A in
+Class0 package N/A out
+Class0 package N/A return
+Class0 public false N/A
+
+Class0 protected true N/A
+Class0 protected true N/A
+Class0 protected true N/A
+
+Class0 private true N/A
+Class0 private true N/A
+Class0 private true N/A
+
+Class0 package false N/A
+
+Class0 public N/A in
+Class0 public N/A out
+Class0 public N/A return
+Class0 package false N/A
+
+Class0 private N/A in
+Class0 private N/A out
+Class0 private N/A return
+Class0 package false N/A
+
+Class0 package N/A in
+Class0 package N/A out
+Class0 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementDown.txt
new file mode 100644
index 00000000000..2f09287ceeb
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementDown.txt
@@ -0,0 +1,51 @@
+
+Class0 public false N/A
+
+Class-1 protected true N/A
+Class-2 protected true N/A
+Class-3 protected true N/A
+
+Class-4 private true N/A
+Class-5 private true N/A
+Class-6 private true N/A
+
+Class-7 package false N/A
+
+Class-8 public N/A in
+Class-9 public N/A out
+Class-10 public N/A return
+Class-11 package false N/A
+
+Class-12 private N/A in
+Class-13 private N/A out
+Class-14 private N/A return
+Class-15 package false N/A
+
+Class-16 package N/A in
+Class-17 package N/A out
+Class-18 package N/A return
+Class-19 public false N/A
+
+Class-20 protected true N/A
+Class-21 protected true N/A
+Class-22 protected true N/A
+
+Class-23 private true N/A
+Class-24 private true N/A
+Class-25 private true N/A
+
+Class-26 package false N/A
+
+Class-27 public N/A in
+Class-28 public N/A out
+Class-29 public N/A return
+Class-30 package false N/A
+
+Class-31 private N/A in
+Class-32 private N/A out
+Class-33 private N/A return
+Class-34 package false N/A
+
+Class-35 package N/A in
+Class-36 package N/A out
+Class-37 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementUp.txt
new file mode 100644
index 00000000000..c06fe11e050
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultDecrementUp.txt
@@ -0,0 +1,51 @@
+
+Param1_2_-35 public false N/A
+
+Param1_2_-34 protected true N/A
+Param1_2_-33 protected true N/A
+Param1_2_-32 protected true N/A
+
+Param1_2_-31 private true N/A
+Param1_2_-30 private true N/A
+Param1_2_-29 private true N/A
+
+Param1_2_-28 package false N/A
+
+Param1_2_-27 public N/A in
+Param1_2_-26 public N/A out
+Param1_2_-25 public N/A return
+Param1_2_-24 package false N/A
+
+Param1_2_-23 private N/A in
+Param1_2_-22 private N/A out
+Param1_2_-21 private N/A return
+Param1_2_-20 package false N/A
+
+Param1_2_-19 package N/A in
+Param1_2_-18 package N/A out
+Param1_2_-17 package N/A return
+Param1_2_-16 public false N/A
+
+Param1_2_-15 protected true N/A
+Param1_2_-14 protected true N/A
+Param1_2_-13 protected true N/A
+
+Param1_2_-12 private true N/A
+Param1_2_-11 private true N/A
+Param1_2_-10 private true N/A
+
+Param1_2_-9 package false N/A
+
+Param1_2_-8 public N/A in
+Param1_2_-7 public N/A out
+Param1_2_-6 public N/A return
+Param1_2_-5 package false N/A
+
+Param1_2_-4 private N/A in
+Param1_2_-3 private N/A out
+Param1_2_-2 private N/A return
+Param1_2_-1 package false N/A
+
+Param1_2_0 package N/A in
+Param1_2_1 package N/A out
+Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementDown.txt
new file mode 100644
index 00000000000..70ca155123f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementDown.txt
@@ -0,0 +1,51 @@
+
+Class0 public false N/A
+
+Class1 protected true N/A
+Class2 protected true N/A
+Class3 protected true N/A
+
+Class4 private true N/A
+Class5 private true N/A
+Class6 private true N/A
+
+Class7 package false N/A
+
+Class8 public N/A in
+Class9 public N/A out
+Class10 public N/A return
+Class11 package false N/A
+
+Class12 private N/A in
+Class13 private N/A out
+Class14 private N/A return
+Class15 package false N/A
+
+Class16 package N/A in
+Class17 package N/A out
+Class18 package N/A return
+Class19 public false N/A
+
+Class20 protected true N/A
+Class21 protected true N/A
+Class22 protected true N/A
+
+Class23 private true N/A
+Class24 private true N/A
+Class25 private true N/A
+
+Class26 package false N/A
+
+Class27 public N/A in
+Class28 public N/A out
+Class29 public N/A return
+Class30 package false N/A
+
+Class31 private N/A in
+Class32 private N/A out
+Class33 private N/A return
+Class34 package false N/A
+
+Class35 package N/A in
+Class36 package N/A out
+Class37 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementUp.txt
new file mode 100644
index 00000000000..6f603441954
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test_ResultIncrementUp.txt
@@ -0,0 +1,51 @@
+
+Param1_2_39 public false N/A
+
+Param1_2_38 protected true N/A
+Param1_2_37 protected true N/A
+Param1_2_36 protected true N/A
+
+Param1_2_35 private true N/A
+Param1_2_34 private true N/A
+Param1_2_33 private true N/A
+
+Param1_2_32 package false N/A
+
+Param1_2_31 public N/A in
+Param1_2_30 public N/A out
+Param1_2_29 public N/A return
+Param1_2_28 package false N/A
+
+Param1_2_27 private N/A in
+Param1_2_26 private N/A out
+Param1_2_25 private N/A return
+Param1_2_24 package false N/A
+
+Param1_2_23 package N/A in
+Param1_2_22 package N/A out
+Param1_2_21 package N/A return
+Param1_2_20 public false N/A
+
+Param1_2_19 protected true N/A
+Param1_2_18 protected true N/A
+Param1_2_17 protected true N/A
+
+Param1_2_16 private true N/A
+Param1_2_15 private true N/A
+Param1_2_14 private true N/A
+
+Param1_2_13 package false N/A
+
+Param1_2_12 public N/A in
+Param1_2_11 public N/A out
+Param1_2_10 public N/A return
+Param1_2_9 package false N/A
+
+Param1_2_8 private N/A in
+Param1_2_7 private N/A out
+Param1_2_6 private N/A return
+Param1_2_5 package false N/A
+
+Param1_2_4 package N/A in
+Param1_2_3 package N/A out
+Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.di b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.notation b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.notation
new file mode 100644
index 00000000000..97e58a03ef0
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.notation
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nattable:Table xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:nattablelabelprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider http://www.eclipse.org/papyrus/nattable/model#//nattablelabelprovider" xmi:id="_0tdPAHcSEeSOKsM2DkqZ0A" name="ClassTreeTable" currentRowAxisProvider="_0tdPA3cSEeSOKsM2DkqZ0A" currentColumnAxisProvider="_0tdPAXcSEeSOKsM2DkqZ0A">
+ <context xmi:type="uml:Model" href="FillHandleStringPrefix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <owner xmi:type="uml:Model" href="FillHandleStringPrefix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/classTreeTable.configuration#_P3J1cEr7EeSVGbM3cmVSqQ"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_0tdPAXcSEeSOKsM2DkqZ0A" description="This axis provider provides available columns according to the rows of the table (features of the object displayed on the other axis)" name="UML Feature axis provider">
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_Yk1o8mZzEeSDCaDFwPGYVw">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9OSsHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/visibility"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//RedefinableElement/isLeaf"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wXrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//Parameter/direction"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_0tdPA3cSEeSOKsM2DkqZ0A" description="This axis provider manages the rows, according to the wanted hierarchy" name="HierarchicalRowaAxisManager" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_yZauQHl4EeWqi9yWvPfrQQ" indexStyle="NUMERIC">
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNWnmiEeWJ7-W-e5W1og" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNUXmiEeWJ7-W-e5W1og" alias="Class">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNW3miEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNU3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXHmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNVXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXXmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNV3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNWHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXnmiEeWJ7-W-e5W1og" depth="2" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNWXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNWnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ <axisIdentifier xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_H1ZVkHmjEeWJ7-W-e5W1og">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axisIdentifier>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNW3miEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Property">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXHmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXXmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Operation">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Parameter">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </ownedAxisConfigurations>
+ <axisManagerConfigurations xmi:type="nattableaxisconfiguration:AxisManagerConfiguration" xmi:id="_SBHYIHmiEeWJ7-W-e5W1og" localSpecificConfigurations="_SBJNUHmiEeWJ7-W-e5W1og _SBJNUnmiEeWJ7-W-e5W1og _SBJNVHmiEeWJ7-W-e5W1og _SBJNVnmiEeWJ7-W-e5W1og _SBJNWHmiEeWJ7-W-e5W1og">
+ <axisManager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@axisManagers.0"/>
+ </axisManagerConfigurations>
+ </localRowHeaderAxisConfiguration>
+</nattable:Table>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.uml b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.uml
new file mode 100644
index 00000000000..c13f23f6dfa
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.uml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_W0BLkGZzEeSDCaDFwPGYVw" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ANxf4GX6EeWnIND9h9eQPg" name="0Class0">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN0jMGX6EeWnIND9h9eQPg" name="Property0_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN738GX6EeWnIND9h9eQPg" name="Property0_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN-7QGX6EeWnIND9h9eQPg" name="Property0_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOGQAGX6EeWnIND9h9eQPg" name="Operation0_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOG3EGX6EeWnIND9h9eQPg" name="Param0_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOHeIGX6EeWnIND9h9eQPg" name="Param0_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOIsQGX6EeWnIND9h9eQPg" name="Param0_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOJTUGX6EeWnIND9h9eQPg" name="Operation0_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOKhcGX6EeWnIND9h9eQPg" name="Param0_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOLvkGX6EeWnIND9h9eQPg" name="Param0_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOM9sGX6EeWnIND9h9eQPg" name="Param0_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AONkwGX6EeWnIND9h9eQPg" name="Operation0_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOOy4GX6EeWnIND9h9eQPg" name="Param0_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOPZ8GX6EeWnIND9h9eQPg" name="Param0_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOQBAGX6EeWnIND9h9eQPg" name="Param0_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOBXgGX6EeWnIND9h9eQPg" name="NestedClass0_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AODzwGX6EeWnIND9h9eQPg" name="NestedClass0_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOFB4GX6EeWnIND9h9eQPg" name="NestedClass0_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AORPIGX6EeWnIND9h9eQPg" name="1Class1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOR2MGX6EeWnIND9h9eQPg" name="Property1_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOTEUGX6EeWnIND9h9eQPg" name="Property1_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOU5gGX6EeWnIND9h9eQPg" name="Property1_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOaZEGX6EeWnIND9h9eQPg" name="Operation1_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AObnMGX6EeWnIND9h9eQPg" name="Param1_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOc1UGX6EeWnIND9h9eQPg" name="Param1_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOdcYGX6EeWnIND9h9eQPg" name="Param1_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOeqgGX6EeWnIND9h9eQPg" name="Operation1_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOfRkGX6EeWnIND9h9eQPg" name="Param1_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOgfsGX6EeWnIND9h9eQPg" name="Param1_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOhGwGX6EeWnIND9h9eQPg" name="Param1_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOiU4GX6EeWnIND9h9eQPg" name="Operation1_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOjjAGX6EeWnIND9h9eQPg" name="Param1_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOkxIGX6EeWnIND9h9eQPg" name="Param1_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOlYMGX6EeWnIND9h9eQPg" name="1_2_2Param1_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOWHoGX6EeWnIND9h9eQPg" name="NestedClass1_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOXVwGX6EeWnIND9h9eQPg" name="NestedClass1_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOZK8GX6EeWnIND9h9eQPg" name="NestedClass1_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_Initial.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_Initial.txt
new file mode 100644
index 00000000000..6764243b7b7
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_Initial.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+Property0_0 protected true N/A
+Property0_1 protected true N/A
+Property0_2 protected true N/A
+
+NestedClass0_0 private true N/A
+NestedClass0_1 private true N/A
+NestedClass0_2 private true N/A
+
+Operation0_0 package false N/A
+
+Param0_0_0 public N/A in
+Param0_0_1 public N/A out
+Param0_0_2 public N/A return
+Operation0_1 package false N/A
+
+Param0_1_0 private N/A in
+Param0_1_1 private N/A out
+Param0_1_2 private N/A return
+Operation0_2 package false N/A
+
+Param0_2_0 package N/A in
+Param0_2_1 package N/A out
+Param0_2_2 package N/A return
+1Class1 public false N/A
+
+Property1_0 protected true N/A
+Property1_1 protected true N/A
+Property1_2 protected true N/A
+
+NestedClass1_0 private true N/A
+NestedClass1_1 private true N/A
+NestedClass1_2 private true N/A
+
+Operation1_0 package false N/A
+
+Param1_0_0 public N/A in
+Param1_0_1 public N/A out
+Param1_0_2 public N/A return
+Operation1_1 package false N/A
+
+Param1_1_0 private N/A in
+Param1_1_1 private N/A out
+Param1_1_2 private N/A return
+Operation1_2 package false N/A
+
+Param1_2_0 package N/A in
+Param1_2_1 package N/A out
+1_2_2Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultCopy.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultCopy.txt
new file mode 100644
index 00000000000..f60d9598515
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultCopy.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+0Class0 protected true N/A
+0Class0 protected true N/A
+0Class0 protected true N/A
+
+0Class0 private true N/A
+0Class0 private true N/A
+0Class0 private true N/A
+
+0Class0 package false N/A
+
+0Class0 public N/A in
+0Class0 public N/A out
+0Class0 public N/A return
+0Class0 package false N/A
+
+0Class0 private N/A in
+0Class0 private N/A out
+0Class0 private N/A return
+0Class0 package false N/A
+
+0Class0 package N/A in
+0Class0 package N/A out
+0Class0 package N/A return
+0Class0 public false N/A
+
+0Class0 protected true N/A
+0Class0 protected true N/A
+0Class0 protected true N/A
+
+0Class0 private true N/A
+0Class0 private true N/A
+0Class0 private true N/A
+
+0Class0 package false N/A
+
+0Class0 public N/A in
+0Class0 public N/A out
+0Class0 public N/A return
+0Class0 package false N/A
+
+0Class0 private N/A in
+0Class0 private N/A out
+0Class0 private N/A return
+0Class0 package false N/A
+
+0Class0 package N/A in
+0Class0 package N/A out
+0Class0 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementDown.txt
new file mode 100644
index 00000000000..944cbc56ff8
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementDown.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+-1Class0 protected true N/A
+-2Class0 protected true N/A
+-3Class0 protected true N/A
+
+-4Class0 private true N/A
+-5Class0 private true N/A
+-6Class0 private true N/A
+
+-7Class0 package false N/A
+
+-8Class0 public N/A in
+-9Class0 public N/A out
+-10Class0 public N/A return
+-11Class0 package false N/A
+
+-12Class0 private N/A in
+-13Class0 private N/A out
+-14Class0 private N/A return
+-15Class0 package false N/A
+
+-16Class0 package N/A in
+-17Class0 package N/A out
+-18Class0 package N/A return
+-19Class0 public false N/A
+
+-20Class0 protected true N/A
+-21Class0 protected true N/A
+-22Class0 protected true N/A
+
+-23Class0 private true N/A
+-24Class0 private true N/A
+-25Class0 private true N/A
+
+-26Class0 package false N/A
+
+-27Class0 public N/A in
+-28Class0 public N/A out
+-29Class0 public N/A return
+-30Class0 package false N/A
+
+-31Class0 private N/A in
+-32Class0 private N/A out
+-33Class0 private N/A return
+-34Class0 package false N/A
+
+-35Class0 package N/A in
+-36Class0 package N/A out
+-37Class0 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementUp.txt
new file mode 100644
index 00000000000..e0799617bef
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultDecrementUp.txt
@@ -0,0 +1,51 @@
+
+-36_2_2Param1_2_2 public false N/A
+
+-35_2_2Param1_2_2 protected true N/A
+-34_2_2Param1_2_2 protected true N/A
+-33_2_2Param1_2_2 protected true N/A
+
+-32_2_2Param1_2_2 private true N/A
+-31_2_2Param1_2_2 private true N/A
+-30_2_2Param1_2_2 private true N/A
+
+-29_2_2Param1_2_2 package false N/A
+
+-28_2_2Param1_2_2 public N/A in
+-27_2_2Param1_2_2 public N/A out
+-26_2_2Param1_2_2 public N/A return
+-25_2_2Param1_2_2 package false N/A
+
+-24_2_2Param1_2_2 private N/A in
+-23_2_2Param1_2_2 private N/A out
+-22_2_2Param1_2_2 private N/A return
+-21_2_2Param1_2_2 package false N/A
+
+-20_2_2Param1_2_2 package N/A in
+-19_2_2Param1_2_2 package N/A out
+-18_2_2Param1_2_2 package N/A return
+-17_2_2Param1_2_2 public false N/A
+
+-16_2_2Param1_2_2 protected true N/A
+-15_2_2Param1_2_2 protected true N/A
+-14_2_2Param1_2_2 protected true N/A
+
+-13_2_2Param1_2_2 private true N/A
+-12_2_2Param1_2_2 private true N/A
+-11_2_2Param1_2_2 private true N/A
+
+-10_2_2Param1_2_2 package false N/A
+
+-9_2_2Param1_2_2 public N/A in
+-8_2_2Param1_2_2 public N/A out
+-7_2_2Param1_2_2 public N/A return
+-6_2_2Param1_2_2 package false N/A
+
+-5_2_2Param1_2_2 private N/A in
+-4_2_2Param1_2_2 private N/A out
+-3_2_2Param1_2_2 private N/A return
+-2_2_2Param1_2_2 package false N/A
+
+-1_2_2Param1_2_2 package N/A in
+0_2_2Param1_2_2 package N/A out
+1_2_2Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementDown.txt
new file mode 100644
index 00000000000..3afb34ab910
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementDown.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+1Class0 protected true N/A
+2Class0 protected true N/A
+3Class0 protected true N/A
+
+4Class0 private true N/A
+5Class0 private true N/A
+6Class0 private true N/A
+
+7Class0 package false N/A
+
+8Class0 public N/A in
+9Class0 public N/A out
+10Class0 public N/A return
+11Class0 package false N/A
+
+12Class0 private N/A in
+13Class0 private N/A out
+14Class0 private N/A return
+15Class0 package false N/A
+
+16Class0 package N/A in
+17Class0 package N/A out
+18Class0 package N/A return
+19Class0 public false N/A
+
+20Class0 protected true N/A
+21Class0 protected true N/A
+22Class0 protected true N/A
+
+23Class0 private true N/A
+24Class0 private true N/A
+25Class0 private true N/A
+
+26Class0 package false N/A
+
+27Class0 public N/A in
+28Class0 public N/A out
+29Class0 public N/A return
+30Class0 package false N/A
+
+31Class0 private N/A in
+32Class0 private N/A out
+33Class0 private N/A return
+34Class0 package false N/A
+
+35Class0 package N/A in
+36Class0 package N/A out
+37Class0 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementUp.txt
new file mode 100644
index 00000000000..db402040c81
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test_ResultIncrementUp.txt
@@ -0,0 +1,51 @@
+
+38_2_2Param1_2_2 public false N/A
+
+37_2_2Param1_2_2 protected true N/A
+36_2_2Param1_2_2 protected true N/A
+35_2_2Param1_2_2 protected true N/A
+
+34_2_2Param1_2_2 private true N/A
+33_2_2Param1_2_2 private true N/A
+32_2_2Param1_2_2 private true N/A
+
+31_2_2Param1_2_2 package false N/A
+
+30_2_2Param1_2_2 public N/A in
+29_2_2Param1_2_2 public N/A out
+28_2_2Param1_2_2 public N/A return
+27_2_2Param1_2_2 package false N/A
+
+26_2_2Param1_2_2 private N/A in
+25_2_2Param1_2_2 private N/A out
+24_2_2Param1_2_2 private N/A return
+23_2_2Param1_2_2 package false N/A
+
+22_2_2Param1_2_2 package N/A in
+21_2_2Param1_2_2 package N/A out
+20_2_2Param1_2_2 package N/A return
+19_2_2Param1_2_2 public false N/A
+
+18_2_2Param1_2_2 protected true N/A
+17_2_2Param1_2_2 protected true N/A
+16_2_2Param1_2_2 protected true N/A
+
+15_2_2Param1_2_2 private true N/A
+14_2_2Param1_2_2 private true N/A
+13_2_2Param1_2_2 private true N/A
+
+12_2_2Param1_2_2 package false N/A
+
+11_2_2Param1_2_2 public N/A in
+10_2_2Param1_2_2 public N/A out
+9_2_2Param1_2_2 public N/A return
+8_2_2Param1_2_2 package false N/A
+
+7_2_2Param1_2_2 private N/A in
+6_2_2Param1_2_2 private N/A out
+5_2_2Param1_2_2 private N/A return
+4_2_2Param1_2_2 package false N/A
+
+3_2_2Param1_2_2 package N/A in
+2_2_2Param1_2_2 package N/A out
+1_2_2Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.di b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.notation b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.notation
new file mode 100644
index 00000000000..a0ba9bba32c
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.notation
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nattable:Table xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:nattablelabelprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider http://www.eclipse.org/papyrus/nattable/model#//nattablelabelprovider" xmi:id="_0tdPAHcSEeSOKsM2DkqZ0A" name="ClassTreeTable" currentRowAxisProvider="_0tdPA3cSEeSOKsM2DkqZ0A" currentColumnAxisProvider="_0tdPAXcSEeSOKsM2DkqZ0A">
+ <context xmi:type="uml:Model" href="FillHandleStringSuffix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <owner xmi:type="uml:Model" href="FillHandleStringSuffix_V1_V3_V1_Test.uml#_W0BLkGZzEeSDCaDFwPGYVw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/classTreeTable.configuration#_P3J1cEr7EeSVGbM3cmVSqQ"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_0tdPAXcSEeSOKsM2DkqZ0A" description="This axis provider provides available columns according to the rows of the table (features of the object displayed on the other axis)" name="UML Feature axis provider">
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_Yk1o8mZzEeSDCaDFwPGYVw">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9OSsHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/visibility"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wHrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//RedefinableElement/isLeaf"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_c9O5wXrxEeSFP8xW-pegcg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//Parameter/direction"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_0tdPA3cSEeSOKsM2DkqZ0A" description="This axis provider manages the rows, according to the wanted hierarchy" name="HierarchicalRowaAxisManager" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_yZauQHl4EeWqi9yWvPfrQQ" indexStyle="NUMERIC">
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNWnmiEeWJ7-W-e5W1og" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNUXmiEeWJ7-W-e5W1og" alias="Class">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNUnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNW3miEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNU3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXHmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNVXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNVnmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXXmiEeWJ7-W-e5W1og" depth="1" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNV3miEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:TreeFillingConfiguration" xmi:id="_SBJNWHmiEeWJ7-W-e5W1og" pasteConfiguration="_SBJNXnmiEeWJ7-W-e5W1og" depth="2" labelProviderContext="org.eclipse.papyrus.infra.nattable.header.treefilling.feature.labelprovider">
+ <axisUsedAsAxisProvider xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_SBJNWXmiEeWJ7-W-e5W1og" alias="">
+ <element xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </axisUsedAsAxisProvider>
+ <labelProvider xmi:type="nattablelabelprovider:FeatureLabelProviderConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@ownedLabelConfigurations.1"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNWnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package/packagedElement"/>
+ <axisIdentifier xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_H1ZVkHmjEeWJ7-W-e5W1og">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axisIdentifier>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNW3miEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Property">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXHmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Class">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/nestedClassifier"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXXmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Operation">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class/ownedOperation"/>
+ </ownedAxisConfigurations>
+ <ownedAxisConfigurations xmi:type="nattableaxisconfiguration:PasteEObjectConfiguration" xmi:id="_SBJNXnmiEeWJ7-W-e5W1og" pastedElementId="org.eclipse.papyrus.uml.Parameter">
+ <pasteElementContainementFeature xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//BehavioralFeature/ownedParameter"/>
+ </ownedAxisConfigurations>
+ <axisManagerConfigurations xmi:type="nattableaxisconfiguration:AxisManagerConfiguration" xmi:id="_SBHYIHmiEeWJ7-W-e5W1og" localSpecificConfigurations="_SBJNUHmiEeWJ7-W-e5W1og _SBJNUnmiEeWJ7-W-e5W1og _SBJNVHmiEeWJ7-W-e5W1og _SBJNVnmiEeWJ7-W-e5W1og _SBJNWHmiEeWJ7-W-e5W1og">
+ <axisManager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.uml.nattable.clazz.config/configs/class_synchronized_tree.nattableconfiguration#//@rowHeaderAxisConfiguration/@axisManagers.0"/>
+ </axisManagerConfigurations>
+ </localRowHeaderAxisConfiguration>
+</nattable:Table>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.uml b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.uml
new file mode 100644
index 00000000000..c13f23f6dfa
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.uml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_W0BLkGZzEeSDCaDFwPGYVw" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ANxf4GX6EeWnIND9h9eQPg" name="0Class0">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN0jMGX6EeWnIND9h9eQPg" name="Property0_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN738GX6EeWnIND9h9eQPg" name="Property0_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AN-7QGX6EeWnIND9h9eQPg" name="Property0_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOGQAGX6EeWnIND9h9eQPg" name="Operation0_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOG3EGX6EeWnIND9h9eQPg" name="Param0_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOHeIGX6EeWnIND9h9eQPg" name="Param0_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOIsQGX6EeWnIND9h9eQPg" name="Param0_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOJTUGX6EeWnIND9h9eQPg" name="Operation0_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOKhcGX6EeWnIND9h9eQPg" name="Param0_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOLvkGX6EeWnIND9h9eQPg" name="Param0_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOM9sGX6EeWnIND9h9eQPg" name="Param0_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AONkwGX6EeWnIND9h9eQPg" name="Operation0_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOOy4GX6EeWnIND9h9eQPg" name="Param0_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOPZ8GX6EeWnIND9h9eQPg" name="Param0_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOQBAGX6EeWnIND9h9eQPg" name="Param0_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOBXgGX6EeWnIND9h9eQPg" name="NestedClass0_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AODzwGX6EeWnIND9h9eQPg" name="NestedClass0_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOFB4GX6EeWnIND9h9eQPg" name="NestedClass0_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AORPIGX6EeWnIND9h9eQPg" name="1Class1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOR2MGX6EeWnIND9h9eQPg" name="Property1_0" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOTEUGX6EeWnIND9h9eQPg" name="Property1_1" visibility="protected" isLeaf="true"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AOU5gGX6EeWnIND9h9eQPg" name="Property1_2" visibility="protected" isLeaf="true"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOaZEGX6EeWnIND9h9eQPg" name="Operation1_0" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AObnMGX6EeWnIND9h9eQPg" name="Param1_0_0"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOc1UGX6EeWnIND9h9eQPg" name="Param1_0_1" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOdcYGX6EeWnIND9h9eQPg" name="Param1_0_2" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOeqgGX6EeWnIND9h9eQPg" name="Operation1_1" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOfRkGX6EeWnIND9h9eQPg" name="Param1_1_0" visibility="private"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOgfsGX6EeWnIND9h9eQPg" name="Param1_1_1" visibility="private" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOhGwGX6EeWnIND9h9eQPg" name="Param1_1_2" visibility="private" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AOiU4GX6EeWnIND9h9eQPg" name="Operation1_2" visibility="package">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOjjAGX6EeWnIND9h9eQPg" name="Param1_2_0" visibility="package"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOkxIGX6EeWnIND9h9eQPg" name="Param1_2_1" visibility="package" direction="out"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AOlYMGX6EeWnIND9h9eQPg" name="1_2_2Param1_2_2" visibility="package" direction="return"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOWHoGX6EeWnIND9h9eQPg" name="NestedClass1_0" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOXVwGX6EeWnIND9h9eQPg" name="NestedClass1_1" visibility="private" isLeaf="true"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AOZK8GX6EeWnIND9h9eQPg" name="NestedClass1_2" visibility="private" isLeaf="true"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_Initial.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_Initial.txt
new file mode 100644
index 00000000000..6764243b7b7
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_Initial.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+Property0_0 protected true N/A
+Property0_1 protected true N/A
+Property0_2 protected true N/A
+
+NestedClass0_0 private true N/A
+NestedClass0_1 private true N/A
+NestedClass0_2 private true N/A
+
+Operation0_0 package false N/A
+
+Param0_0_0 public N/A in
+Param0_0_1 public N/A out
+Param0_0_2 public N/A return
+Operation0_1 package false N/A
+
+Param0_1_0 private N/A in
+Param0_1_1 private N/A out
+Param0_1_2 private N/A return
+Operation0_2 package false N/A
+
+Param0_2_0 package N/A in
+Param0_2_1 package N/A out
+Param0_2_2 package N/A return
+1Class1 public false N/A
+
+Property1_0 protected true N/A
+Property1_1 protected true N/A
+Property1_2 protected true N/A
+
+NestedClass1_0 private true N/A
+NestedClass1_1 private true N/A
+NestedClass1_2 private true N/A
+
+Operation1_0 package false N/A
+
+Param1_0_0 public N/A in
+Param1_0_1 public N/A out
+Param1_0_2 public N/A return
+Operation1_1 package false N/A
+
+Param1_1_0 private N/A in
+Param1_1_1 private N/A out
+Param1_1_2 private N/A return
+Operation1_2 package false N/A
+
+Param1_2_0 package N/A in
+Param1_2_1 package N/A out
+1_2_2Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultCopy.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultCopy.txt
new file mode 100644
index 00000000000..f60d9598515
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultCopy.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+0Class0 protected true N/A
+0Class0 protected true N/A
+0Class0 protected true N/A
+
+0Class0 private true N/A
+0Class0 private true N/A
+0Class0 private true N/A
+
+0Class0 package false N/A
+
+0Class0 public N/A in
+0Class0 public N/A out
+0Class0 public N/A return
+0Class0 package false N/A
+
+0Class0 private N/A in
+0Class0 private N/A out
+0Class0 private N/A return
+0Class0 package false N/A
+
+0Class0 package N/A in
+0Class0 package N/A out
+0Class0 package N/A return
+0Class0 public false N/A
+
+0Class0 protected true N/A
+0Class0 protected true N/A
+0Class0 protected true N/A
+
+0Class0 private true N/A
+0Class0 private true N/A
+0Class0 private true N/A
+
+0Class0 package false N/A
+
+0Class0 public N/A in
+0Class0 public N/A out
+0Class0 public N/A return
+0Class0 package false N/A
+
+0Class0 private N/A in
+0Class0 private N/A out
+0Class0 private N/A return
+0Class0 package false N/A
+
+0Class0 package N/A in
+0Class0 package N/A out
+0Class0 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementDown.txt
new file mode 100644
index 00000000000..6db901d4a6c
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementDown.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+0Class-1 protected true N/A
+0Class-2 protected true N/A
+0Class-3 protected true N/A
+
+0Class-4 private true N/A
+0Class-5 private true N/A
+0Class-6 private true N/A
+
+0Class-7 package false N/A
+
+0Class-8 public N/A in
+0Class-9 public N/A out
+0Class-10 public N/A return
+0Class-11 package false N/A
+
+0Class-12 private N/A in
+0Class-13 private N/A out
+0Class-14 private N/A return
+0Class-15 package false N/A
+
+0Class-16 package N/A in
+0Class-17 package N/A out
+0Class-18 package N/A return
+0Class-19 public false N/A
+
+0Class-20 protected true N/A
+0Class-21 protected true N/A
+0Class-22 protected true N/A
+
+0Class-23 private true N/A
+0Class-24 private true N/A
+0Class-25 private true N/A
+
+0Class-26 package false N/A
+
+0Class-27 public N/A in
+0Class-28 public N/A out
+0Class-29 public N/A return
+0Class-30 package false N/A
+
+0Class-31 private N/A in
+0Class-32 private N/A out
+0Class-33 private N/A return
+0Class-34 package false N/A
+
+0Class-35 package N/A in
+0Class-36 package N/A out
+0Class-37 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementUp.txt
new file mode 100644
index 00000000000..c8bc26cb748
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultDecrementUp.txt
@@ -0,0 +1,51 @@
+
+1_2_2Param1_2_-35 public false N/A
+
+1_2_2Param1_2_-34 protected true N/A
+1_2_2Param1_2_-33 protected true N/A
+1_2_2Param1_2_-32 protected true N/A
+
+1_2_2Param1_2_-31 private true N/A
+1_2_2Param1_2_-30 private true N/A
+1_2_2Param1_2_-29 private true N/A
+
+1_2_2Param1_2_-28 package false N/A
+
+1_2_2Param1_2_-27 public N/A in
+1_2_2Param1_2_-26 public N/A out
+1_2_2Param1_2_-25 public N/A return
+1_2_2Param1_2_-24 package false N/A
+
+1_2_2Param1_2_-23 private N/A in
+1_2_2Param1_2_-22 private N/A out
+1_2_2Param1_2_-21 private N/A return
+1_2_2Param1_2_-20 package false N/A
+
+1_2_2Param1_2_-19 package N/A in
+1_2_2Param1_2_-18 package N/A out
+1_2_2Param1_2_-17 package N/A return
+1_2_2Param1_2_-16 public false N/A
+
+1_2_2Param1_2_-15 protected true N/A
+1_2_2Param1_2_-14 protected true N/A
+1_2_2Param1_2_-13 protected true N/A
+
+1_2_2Param1_2_-12 private true N/A
+1_2_2Param1_2_-11 private true N/A
+1_2_2Param1_2_-10 private true N/A
+
+1_2_2Param1_2_-9 package false N/A
+
+1_2_2Param1_2_-8 public N/A in
+1_2_2Param1_2_-7 public N/A out
+1_2_2Param1_2_-6 public N/A return
+1_2_2Param1_2_-5 package false N/A
+
+1_2_2Param1_2_-4 private N/A in
+1_2_2Param1_2_-3 private N/A out
+1_2_2Param1_2_-2 private N/A return
+1_2_2Param1_2_-1 package false N/A
+
+1_2_2Param1_2_0 package N/A in
+1_2_2Param1_2_1 package N/A out
+1_2_2Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementDown.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementDown.txt
new file mode 100644
index 00000000000..047d918a19d
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementDown.txt
@@ -0,0 +1,51 @@
+
+0Class0 public false N/A
+
+0Class1 protected true N/A
+0Class2 protected true N/A
+0Class3 protected true N/A
+
+0Class4 private true N/A
+0Class5 private true N/A
+0Class6 private true N/A
+
+0Class7 package false N/A
+
+0Class8 public N/A in
+0Class9 public N/A out
+0Class10 public N/A return
+0Class11 package false N/A
+
+0Class12 private N/A in
+0Class13 private N/A out
+0Class14 private N/A return
+0Class15 package false N/A
+
+0Class16 package N/A in
+0Class17 package N/A out
+0Class18 package N/A return
+0Class19 public false N/A
+
+0Class20 protected true N/A
+0Class21 protected true N/A
+0Class22 protected true N/A
+
+0Class23 private true N/A
+0Class24 private true N/A
+0Class25 private true N/A
+
+0Class26 package false N/A
+
+0Class27 public N/A in
+0Class28 public N/A out
+0Class29 public N/A return
+0Class30 package false N/A
+
+0Class31 private N/A in
+0Class32 private N/A out
+0Class33 private N/A return
+0Class34 package false N/A
+
+0Class35 package N/A in
+0Class36 package N/A out
+0Class37 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementUp.txt b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementUp.txt
new file mode 100644
index 00000000000..f627aac89c1
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test_ResultIncrementUp.txt
@@ -0,0 +1,51 @@
+
+1_2_2Param1_2_39 public false N/A
+
+1_2_2Param1_2_38 protected true N/A
+1_2_2Param1_2_37 protected true N/A
+1_2_2Param1_2_36 protected true N/A
+
+1_2_2Param1_2_35 private true N/A
+1_2_2Param1_2_34 private true N/A
+1_2_2Param1_2_33 private true N/A
+
+1_2_2Param1_2_32 package false N/A
+
+1_2_2Param1_2_31 public N/A in
+1_2_2Param1_2_30 public N/A out
+1_2_2Param1_2_29 public N/A return
+1_2_2Param1_2_28 package false N/A
+
+1_2_2Param1_2_27 private N/A in
+1_2_2Param1_2_26 private N/A out
+1_2_2Param1_2_25 private N/A return
+1_2_2Param1_2_24 package false N/A
+
+1_2_2Param1_2_23 package N/A in
+1_2_2Param1_2_22 package N/A out
+1_2_2Param1_2_21 package N/A return
+1_2_2Param1_2_20 public false N/A
+
+1_2_2Param1_2_19 protected true N/A
+1_2_2Param1_2_18 protected true N/A
+1_2_2Param1_2_17 protected true N/A
+
+1_2_2Param1_2_16 private true N/A
+1_2_2Param1_2_15 private true N/A
+1_2_2Param1_2_14 private true N/A
+
+1_2_2Param1_2_13 package false N/A
+
+1_2_2Param1_2_12 public N/A in
+1_2_2Param1_2_11 public N/A out
+1_2_2Param1_2_10 public N/A return
+1_2_2Param1_2_9 package false N/A
+
+1_2_2Param1_2_8 private N/A in
+1_2_2Param1_2_7 private N/A out
+1_2_2Param1_2_6 private N/A return
+1_2_2Param1_2_5 package false N/A
+
+1_2_2Param1_2_4 package N/A in
+1_2_2Param1_2_3 package N/A out
+1_2_2Param1_2_2 package N/A return \ No newline at end of file
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/AbstractFillHandleTest.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/AbstractFillHandleTest.java
new file mode 100644
index 00000000000..362d52875ec
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/AbstractFillHandleTest.java
@@ -0,0 +1,439 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
+import org.eclipse.nebula.widgets.nattable.copy.command.CopyDataToClipboardCommand;
+import org.eclipse.nebula.widgets.nattable.selection.command.ClearAllSelectionsCommand;
+import org.eclipse.papyrus.infra.nattable.common.editor.NatTableEditor;
+import org.eclipse.papyrus.infra.nattable.manager.table.INattableModelManager;
+import org.eclipse.papyrus.infra.nattable.manager.table.ITreeNattableModelManager;
+import org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager;
+import org.eclipse.papyrus.infra.nattable.tree.CollapseAndExpandActionsEnum;
+import org.eclipse.papyrus.infra.nattable.utils.TableClipboardUtils;
+import org.eclipse.papyrus.infra.tools.util.FileUtils;
+import org.eclipse.papyrus.junit.utils.GenericUtils;
+import org.eclipse.papyrus.junit.utils.rules.ActiveTable;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.Activator;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.tests.AbstractTableTest;
+import org.eclipse.ui.IEditorPart;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * This allows to manage the fill handle (copy or increment/decrement) tests.
+ */
+public abstract class AbstractFillHandleTest extends AbstractTableTest {
+
+ /**
+ * The path of the model to test.
+ */
+ public static final String PASTE_FOLDER_PATH = "/resources/fillhandle/"; //$NON-NLS-1$
+
+ /**
+ * The table name.
+ */
+ protected static final String TABLE_NAME = "ClassTreeTable"; //$NON-NLS-1$
+
+ /**
+ * The suffix of the file containing the initial.
+ */
+ public static final String INITIAL_POST_FILE_NAME = "_Initial"; //$NON-NLS-1$
+
+ /**
+ * The suffix of the file containing the result content after a copy.
+ */
+ public static final String RESULT_COPY_POST_FILE_NAME = "_ResultCopy"; //$NON-NLS-1$
+
+ /**
+ * The suffix of the file containing the result content after an increment in UP direction.
+ */
+ public static final String RESULT_INCREMENT_UP_POST_FILE_NAME = "_ResultIncrementUp"; //$NON-NLS-1$
+
+ /**
+ * The suffix of the file containing the result content after an increment in DOWN direction.
+ */
+ public static final String RESULT_INCREMENT_DOWN_POST_FILE_NAME = "_ResultIncrementDown"; //$NON-NLS-1$
+
+ /**
+ * The suffix of the file containing the result content after a decrement in UP direction.
+ */
+ public static final String RESULT_DECREMENT_UP_POST_FILE_NAME = "_ResultDecrementUp"; //$NON-NLS-1$
+
+ /**
+ * The suffix of the file containing the result content after a decrement in DOW direction.
+ */
+ public static final String RESULT_DECREMENT_DOWN_POST_FILE_NAME = "_ResultDecrementDown"; //$NON-NLS-1$
+
+ /**
+ * Constructor.
+ */
+ public AbstractFillHandleTest() {
+ super();
+ }
+
+ /**
+ * This allows to test the copy.
+ *
+ * @throws Exception
+ * The caught exception
+ */
+ @Test
+ @ActiveTable("ClassTreeTable") //$NON-NLS-1$
+ public void testCopy() throws Exception {
+ final IEditorPart tableEditor = fixture.getActiveTableEditor();
+ Assert.assertTrue("Table editor must be a nattable editor", tableEditor instanceof NatTableEditor); //$NON-NLS-1$
+ final INattableModelManager manager = (INattableModelManager) tableEditor.getAdapter(INattableModelManager.class);
+ Assert.assertTrue("The manager must be a tree nattable model manager", manager instanceof ITreeNattableModelManager); //$NON-NLS-1$
+
+ final TreeNattableModelManager treeManager = (TreeNattableModelManager) manager;
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+
+ executeCommand(treeManager, getCopyCommand(natTable), RESULT_COPY_POST_FILE_NAME, false);
+ }
+
+ /**
+ * This allows to test the increment series
+ *
+ * @throws Exception
+ * The caught exception
+ */
+ @Test
+ @ActiveTable("ClassTreeTable") //$NON-NLS-1$
+ public void testIncrementUp() throws Exception {
+ final IEditorPart tableEditor = fixture.getActiveTableEditor();
+ Assert.assertTrue("Table editor must be a nattable editor", tableEditor instanceof NatTableEditor); //$NON-NLS-1$
+ final INattableModelManager manager = (INattableModelManager) tableEditor.getAdapter(INattableModelManager.class);
+ Assert.assertTrue("The manager must be a tree nattable model manager", manager instanceof ITreeNattableModelManager); //$NON-NLS-1$
+
+ final TreeNattableModelManager treeManager = (TreeNattableModelManager) manager;
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+
+ executeCommand(treeManager, getIncrementUpCommand(natTable), RESULT_INCREMENT_UP_POST_FILE_NAME, true);
+ }
+
+ /**
+ * This allows to test the increment series
+ *
+ * @throws Exception
+ * The caught exception
+ */
+ @Test
+ @ActiveTable("ClassTreeTable") //$NON-NLS-1$
+ public void testIncrementDown() throws Exception {
+ final IEditorPart tableEditor = fixture.getActiveTableEditor();
+ Assert.assertTrue("Table editor must be a nattable editor", tableEditor instanceof NatTableEditor); //$NON-NLS-1$
+ final INattableModelManager manager = (INattableModelManager) tableEditor.getAdapter(INattableModelManager.class);
+ Assert.assertTrue("The manager must be a tree nattable model manager", manager instanceof ITreeNattableModelManager); //$NON-NLS-1$
+
+ final TreeNattableModelManager treeManager = (TreeNattableModelManager) manager;
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+
+ executeCommand(treeManager, getIncrementDownCommand(natTable), RESULT_INCREMENT_DOWN_POST_FILE_NAME, false);
+ }
+
+ /**
+ * This allows to test the decrement series
+ *
+ * @throws Exception
+ * The caught exception
+ */
+ @Test
+ @ActiveTable("ClassTreeTable") //$NON-NLS-1$
+ public void testDecrementUp() throws Exception {
+ final IEditorPart tableEditor = fixture.getActiveTableEditor();
+ Assert.assertTrue("Table editor must be a nattable editor", tableEditor instanceof NatTableEditor); //$NON-NLS-1$
+ final INattableModelManager manager = (INattableModelManager) tableEditor.getAdapter(INattableModelManager.class);
+ Assert.assertTrue("The manager must be a tree nattable model manager", manager instanceof ITreeNattableModelManager); //$NON-NLS-1$
+
+ final TreeNattableModelManager treeManager = (TreeNattableModelManager) manager;
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+
+ executeCommand(treeManager, getDecrementUpCommand(natTable), RESULT_DECREMENT_UP_POST_FILE_NAME, true);
+ }
+
+ /**
+ * This allows to test the decrement series
+ *
+ * @throws Exception
+ * The caught exception
+ */
+ @Test
+ @ActiveTable("ClassTreeTable") //$NON-NLS-1$
+ public void testDecrementDown() throws Exception {
+ final IEditorPart tableEditor = fixture.getActiveTableEditor();
+ Assert.assertTrue("Table editor must be a nattable editor", tableEditor instanceof NatTableEditor); //$NON-NLS-1$
+ final INattableModelManager manager = (INattableModelManager) tableEditor.getAdapter(INattableModelManager.class);
+ Assert.assertTrue("The manager must be a tree nattable model manager", manager instanceof ITreeNattableModelManager); //$NON-NLS-1$
+
+ final TreeNattableModelManager treeManager = (TreeNattableModelManager) manager;
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+
+ executeCommand(treeManager, getDecrementDownCommand(natTable), RESULT_DECREMENT_DOWN_POST_FILE_NAME, false);
+ }
+
+ /**
+ * This allows to execute a command and check its result.
+ *
+ * @param command
+ * The command to execute.
+ * @param resultFileName
+ * The post file name of the result.
+ * @throws Exception
+ * The caught exception.
+ */
+ protected void executeCommand(final TreeNattableModelManager treeManager, final ILayerCommand command, final String resultPostFileName, final boolean isUpDirection) throws Exception {
+
+ // Check the table context before command
+ checkTableContent(treeManager, INITIAL_POST_FILE_NAME);
+
+ if (isUpDirection) {
+ selectCellToFillToUp(treeManager);
+ } else {
+ selectCellToFillToDown(treeManager);
+ }
+
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+ natTable.doCommand(new CopyDataToClipboardCommand(
+ "\t", //$NON-NLS-1$
+ System.getProperty("line.separator"), //$NON-NLS-1$
+ natTable.getConfigRegistry()));
+
+ if (isUpDirection) {
+ setFillHandlerRegionToUp(treeManager);
+ } else {
+ setFillHandlerRegionToDown(treeManager);
+ }
+
+ // Execute the copy command
+ natTable.doCommand(command);
+
+ // Check the table context before command
+ checkTableContent(treeManager, resultPostFileName);
+
+ // Check the undo/redo
+ checkUndoRedo(treeManager, resultPostFileName);
+ }
+
+ /**
+ * This allows to check the undo redo result.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ * @param resultPostFileName
+ * The post file name of the result.
+ * @throws Exception
+ * The caught exception.
+ */
+ protected void checkUndoRedo(final TreeNattableModelManager treeManager, final String resultPostFileName) throws Exception {
+
+ TransactionalEditingDomain editingDomain = fixture.getEditingDomain();
+
+ // Check the undo
+ editingDomain.getCommandStack().undo();
+ // Check the table context after undo
+ checkTableContent(treeManager, INITIAL_POST_FILE_NAME);
+
+ // Check the redo
+ editingDomain.getCommandStack().redo();
+ // Check the table context after redo
+ checkTableContent(treeManager, resultPostFileName);
+ }
+
+ /**
+ * Get the selected cell to fill when the action is managed to UP direction.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ */
+ protected abstract void selectCellToFillToUp(final TreeNattableModelManager treeManager);
+
+ /**
+ * Get the selected cell to fill when the action is managed to DOWN direction.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ */
+ protected abstract void selectCellToFillToDown(final TreeNattableModelManager treeManager);
+
+ /**
+ * Set the fill handler region when the action is managed to UP direction.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ */
+ protected abstract void setFillHandlerRegionToUp(final TreeNattableModelManager treeManager);
+
+ /**
+ * Set the fill handler region when the action is managed to DOWN direction.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ */
+ protected abstract void setFillHandlerRegionToDown(final TreeNattableModelManager treeManager);
+
+ /**
+ * Get the copy command.
+ *
+ * @param natTable
+ * The nattable.
+ * @return The copy command.
+ */
+ protected abstract ILayerCommand getCopyCommand(final NatTable natTable);
+
+ /**
+ * Get the increment command with UP direction.
+ *
+ * @param natTable
+ * The nattable.
+ * @return The increment command with UP direction.
+ */
+ protected abstract ILayerCommand getIncrementUpCommand(final NatTable natTable);
+
+ /**
+ * Get the increment command with DOWN direction.
+ *
+ * @param natTable
+ * The nattable.
+ * @return The increment command with DOWN direction.
+ */
+ protected abstract ILayerCommand getIncrementDownCommand(final NatTable natTable);
+
+ /**
+ * Get the decrement command with UP direction.
+ *
+ * @param natTable
+ * The nattable.
+ * @return The decrement command with UP direction.
+ */
+ protected abstract ILayerCommand getDecrementUpCommand(final NatTable natTable);
+
+ /**
+ * Get the decrement command with DOWN direction.
+ *
+ * @param natTable
+ * The nattable.
+ * @return The decrement command with DOWN direction.
+ */
+ protected abstract ILayerCommand getDecrementDownCommand(final NatTable natTable);
+
+ /**
+ * This allows to check the table content comparing the table content with file content.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ * @param suffixFileName
+ * The suffix of the file to check.
+ * @throws Exception
+ * The caught exception.
+ */
+ protected void checkTableContent(final TreeNattableModelManager treeManager, final String suffixFileName) throws Exception {
+ fixture.flushDisplayEvents();
+ treeManager.doCollapseExpandAction(CollapseAndExpandActionsEnum.EXPAND_ALL, null);
+ final NatTable natTable = (NatTable) treeManager.getAdapter(NatTable.class);
+ fixture.flushDisplayEvents();
+ natTable.doCommand(new ClearAllSelectionsCommand());
+ treeManager.selectAll();
+ treeManager.copyToClipboard();
+ String clipboard = getClipboardContent();
+ // we check than the contents of the clipboard (so the displayed table) is the same than the wanted result
+ Assert.assertNotNull("Clipboard must not be null", clipboard); //$NON-NLS-1$
+ String str = getWantedString(getSuffixStateFileName(treeManager, suffixFileName));
+ // we check than the contents of the clipboard (so the displayed table) is the same than the wanted result
+ Assert.assertEquals("The clipboard must be equals to string which one it is filled", str, clipboard); //$NON-NLS-1$
+ }
+
+ /**
+ * Get the string content from a file.
+ *
+ * @param fileName
+ * a file name
+ * @return
+ * the text stored in the file associated to this test
+ */
+ protected String getWantedString(final String fileName) {
+ return FileUtils.getStringFromPlatformFile(Activator.PLUGIN_ID, getSourcePath(), fileName, FileUtils.getSystemPropertyLineSeparator());// $NON-NLS-1$
+ }
+
+ /**
+ * Get the file name corresponding to the model with the suffix in parameter.
+ *
+ * @param treeManager
+ * The tree nattable model manager.
+ * @param suffixFileName
+ * The suffix of the file to get.
+ * @return The file name corresponding
+ */
+ protected String getSuffixStateFileName(final TreeNattableModelManager treeManager, final String suffixFileName) {
+ URI uri = URI.createURI(getClass().getSimpleName());
+ uri = uri.trimFileExtension();
+ final StringBuffer buffer = new StringBuffer(uri.lastSegment());
+ buffer.append(suffixFileName);
+ buffer.append(FileUtils.DOT_STRING);
+ buffer.append(FileUtils.TEXT_EXTENSION);
+ return buffer.toString();
+ }
+
+ /**
+ * Get the clipboard contents.
+ *
+ * @return
+ * the clipboard contents.
+ */
+ protected String getClipboardContent() {
+ String clipboard = TableClipboardUtils.getClipboardContentsAsString();
+ return clipboard;
+ }
+
+ /**
+ * This allows to fill the clipboard with the string in parameter.
+ *
+ * @param newClipBoardContents
+ * The string needed to fill the clipboard.
+ */
+ protected void fillClipboard(final String newClipBoardContents) {
+
+ // its seems that the clipboard must be filled with the same way than we read it!
+ java.awt.datatransfer.Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+
+ StringSelection s = new StringSelection(newClipBoardContents);
+ clipboard.setContents(s, s);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.tests.AbstractOpenTableTest#getSourcePath()
+ */
+ @Override
+ protected String getSourcePath() {
+ return PASTE_FOLDER_PATH;
+ }
+
+ /**
+ * This allows to close the editors.
+ */
+ @AfterClass
+ public static void endOfTest() {
+ GenericUtils.closeAllEditors();
+ }
+
+}
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleInteger_V1_V3_V1_Test.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleInteger_V1_V3_V1_Test.java
new file mode 100644
index 00000000000..ffb6f8160c0
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleInteger_V1_V3_V1_Test.java
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommand;
+import org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.swt.graphics.Rectangle;
+import org.junit.Before;
+
+/**
+ * This allows to manage the fill handle tests for integer column.
+ */
+@PluginResource("resources/fillhandle/FillHandleInteger_V1_V3_V1_Test.di") // NON-NLS-1
+public class FillHandleInteger_V1_V3_V1_Test extends AbstractFillHandleTest {
+
+ /**
+ * Constructor.
+ */
+ public FillHandleInteger_V1_V3_V1_Test() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 50);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 1);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getCopyCommand()
+ */
+ @Override
+ protected ILayerCommand getCopyCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.COPY, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), true, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), true, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), false, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, false);
+ }
+}
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.java
new file mode 100644
index 00000000000..8169f554c6e
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.java
@@ -0,0 +1,121 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommand;
+import org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.swt.graphics.Rectangle;
+
+/**
+ * This allows to manage the fill handle tests for string column (the number is before the string value).
+ */
+@PluginResource("resources/fillhandle/FillHandleStringOnlyPrefix_V1_V3_V1_Test.di") // NON-NLS-1
+public class FillHandleStringOnlyPrefix_V1_V3_V1_Test extends AbstractFillHandleTest {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 50);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 1);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getCopyCommand()
+ */
+ @Override
+ protected ILayerCommand getCopyCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.COPY, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), true, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), true, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), false, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, true);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.java
new file mode 100644
index 00000000000..148f0972930
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.java
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommand;
+import org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.swt.graphics.Rectangle;
+
+/**
+ * This allows to manage the fill handle tests for string column (the number is after the string value).
+ */
+@PluginResource("resources/fillhandle/FillHandleStringOnlySuffix_V1_V3_V1_Test.di") // NON-NLS-1
+public class FillHandleStringOnlySuffix_V1_V3_V1_Test extends AbstractFillHandleTest {
+
+ /**
+ * Constructor.
+ */
+ public FillHandleStringOnlySuffix_V1_V3_V1_Test() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 50);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 1);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getCopyCommand()
+ */
+ @Override
+ protected ILayerCommand getCopyCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.COPY, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), true, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), true, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), false, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, false);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.java
new file mode 100644
index 00000000000..db85885b11f
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.java
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommand;
+import org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.swt.graphics.Rectangle;
+
+/**
+ * This allows to manage the fill handle tests for string column (the number managed is before the string value (and another one exist after the string value).
+ */
+@PluginResource("resources/fillhandle/FillHandleStringPrefix_V1_V3_V1_Test.di") // NON-NLS-1
+public class FillHandleStringPrefix_V1_V3_V1_Test extends AbstractFillHandleTest {
+
+ /**
+ * Constructor.
+ */
+ public FillHandleStringPrefix_V1_V3_V1_Test() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 50);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 1);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getCopyCommand()
+ */
+ @Override
+ protected ILayerCommand getCopyCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.COPY, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), true, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), true, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), false, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, true);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.java
new file mode 100644
index 00000000000..2cca846db9e
--- /dev/null
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.java
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * 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:
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
+import org.eclipse.nebula.widgets.nattable.fillhandle.command.FillHandlePasteCommand.FillHandleOperation;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
+import org.eclipse.papyrus.infra.nattable.fillhandle.command.PapyrusFillHandlePasteCommand;
+import org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.swt.graphics.Rectangle;
+
+/**
+ * This allows to manage the fill handle tests for string column (the number managed is after the string value (and another one exist before the string value).
+ */
+@PluginResource("resources/fillhandle/FillHandleStringSuffix_V1_V3_V1_Test.di") // NON-NLS-1
+public class FillHandleStringSuffix_V1_V3_V1_Test extends AbstractFillHandleTest {
+
+ /**
+ * Constructor.
+ */
+ public FillHandleStringSuffix_V1_V3_V1_Test() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 50);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#selectCellToFillToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void selectCellToFillToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setSelectedCell(0, 1);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToUp(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToUp(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#setFillHandlerRegionToDown(org.eclipse.papyrus.infra.nattable.manager.table.TreeNattableModelManager)
+ */
+ @Override
+ protected void setFillHandlerRegionToDown(final TreeNattableModelManager treeManager) {
+ treeManager.getBodyLayerStack().getSelectionLayer().setFillHandleRegion(new Rectangle(0, 1, 1, 50));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getCopyCommand()
+ */
+ @Override
+ protected ILayerCommand getCopyCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.COPY, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), true, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getIncrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getIncrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), true, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementUpCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementUpCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.UP, natTable.getConfigRegistry(), false, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.AbstractFillHandleTest#getDecrementDownCommand(org.eclipse.nebula.widgets.nattable.NatTable)
+ */
+ @Override
+ protected ILayerCommand getDecrementDownCommand(final NatTable natTable) {
+ return new PapyrusFillHandlePasteCommand(FillHandleOperation.SERIES, MoveDirectionEnum.DOWN, natTable.getConfigRegistry(), false, false);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/tests/AllTests.java b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/tests/AllTests.java
index fcca5f4bc54..b811b93bdd2 100644
--- a/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/tests/AllTests.java
+++ b/tests/junit/plugins/uml/nattable/org.eclipse.papyrus.uml.nattable.clazz.config.tests/src/org/eclipse/papyrus/uml/nattable/clazz/config/tests/tests/AllTests.java
@@ -39,6 +39,11 @@ import org.eclipse.papyrus.uml.nattable.clazz.config.tests.creation.outside.Crea
import org.eclipse.papyrus.uml.nattable.clazz.config.tests.creation.outside.CreateElementDepth2_V1_H3_V1_Test;
import org.eclipse.papyrus.uml.nattable.clazz.config.tests.creation.outside.CreateElementDepth2_V1_V3_H1_Test;
import org.eclipse.papyrus.uml.nattable.clazz.config.tests.creation.outside.CreateElementDepth2_V1_V3_V1_Test;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.FillHandleInteger_V1_V3_V1_Test;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.FillHandleStringOnlyPrefix_V1_V3_V1_Test;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.FillHandleStringOnlySuffix_V1_V3_V1_Test;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.FillHandleStringPrefix_V1_V3_V1_Test;
+import org.eclipse.papyrus.uml.nattable.clazz.config.tests.fillhandle.FillHandleStringSuffix_V1_V3_V1_Test;
import org.eclipse.papyrus.uml.nattable.clazz.config.tests.filter.ReopenFilteredTable_Empty_H1_H1;
import org.eclipse.papyrus.uml.nattable.clazz.config.tests.filter.ReopenFilteredTable_Empty_H1_V1;
import org.eclipse.papyrus.uml.nattable.clazz.config.tests.filter.ReopenFilteredTable_Empty_V1_H1;
@@ -250,6 +255,13 @@ import org.junit.runners.Suite.SuiteClasses;
ReopenFilteredTable_V1_V1_H1.class,
ReopenFilteredTable_V1_V1_V1.class,
+ // Fill handle tests
+ FillHandleInteger_V1_V3_V1_Test.class,
+ FillHandleStringOnlySuffix_V1_V3_V1_Test.class,
+ FillHandleStringOnlyPrefix_V1_V3_V1_Test.class,
+ FillHandleStringSuffix_V1_V3_V1_Test.class,
+ FillHandleStringPrefix_V1_V3_V1_Test.class,
+
// Attached Mode
// Paste tests for single column
PasteWithCategories_Empty_H1_H1_SingleColumn_AttachedMode_Test.class,

Back to the top