- Cleanup, remove unused functions

Signed-off-by: Ansgar Radermacher <ansgar.radermacher@cea.fr>
diff --git a/core/org.polarsys.esf.core.common.ui/META-INF/MANIFEST.MF b/core/org.polarsys.esf.core.common.ui/META-INF/MANIFEST.MF
index 2b5f5e0..be756e3 100644
--- a/core/org.polarsys.esf.core.common.ui/META-INF/MANIFEST.MF
+++ b/core/org.polarsys.esf.core.common.ui/META-INF/MANIFEST.MF
@@ -27,16 +27,9 @@
  org.polarsys.esf.core.common.ui.constants,
  org.polarsys.esf.core.common.ui.diagram,
  org.polarsys.esf.core.common.ui.editingsupport,
- org.polarsys.esf.core.common.ui.editor,
- org.polarsys.esf.core.common.ui.fieldeditor,
  org.polarsys.esf.core.common.ui.filter,
  org.polarsys.esf.core.common.ui.job,
  org.polarsys.esf.core.common.ui.provider,
  org.polarsys.esf.core.common.ui.selection,
  org.polarsys.esf.core.common.ui.statusline,
- org.polarsys.esf.core.common.ui.treeviewer,
- org.polarsys.esf.core.common.ui.view,
- org.polarsys.esf.core.common.ui.view.properties,
- org.polarsys.esf.core.common.ui.widget,
- org.polarsys.esf.core.common.ui.widget.listener,
- org.polarsys.esf.core.common.ui.wizard
+ org.polarsys.esf.core.common.ui.treeviewer
diff --git a/core/org.polarsys.esf.core.common.ui/plugin.xml b/core/org.polarsys.esf.core.common.ui/plugin.xml
index 6e76fd0..f51971d 100644
--- a/core/org.polarsys.esf.core.common.ui/plugin.xml
+++ b/core/org.polarsys.esf.core.common.ui/plugin.xml
@@ -3,33 +3,7 @@
 <plugin>
 <extension
 point="org.eclipse.ui.menus">
-    <menuContribution
-        locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
-        <toolbar
-            id="org.polarsys.esf.core.common.ui.toolbar.toolbar"
-            label="%toolbar.esf.label">
-            <separator
-                name="org.polarsys.esf.core.common.ui.toolbar.before"
-                visible="true">
-            </separator>
-            <control
-                class="org.polarsys.esf.core.common.ui.widget.ActiveProjectControlContribution">
-            </control>
-            <control
-                class="org.polarsys.esf.core.common.ui.actions.FilterPartControlContribution">
-            </control>
-            <separator
-                name="org.polarsys.esf.core.common.ui.toolbar.additions"
-                visible="true">
-            </separator>
-            <command
-                commandId="org.eclipse.ui.help.helpContents"
-                label="%command.help"
-                style="push">
-            </command>
-        </toolbar>
-    </menuContribution>
-    <menuContribution
+	<menuContribution
           allPopups="false"
           locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup?before=newelements">
        <separator
@@ -40,6 +14,6 @@
              name="esf.general.bottom"
              visible="true">
        </separator>
-    </menuContribution>
+	</menuContribution>
 </extension>
 </plugin>
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/ActionBarContributorUtils.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/ActionBarContributorUtils.java
deleted file mode 100644
index ff71a1a..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/ActionBarContributorUtils.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.actions;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.emf.edit.ui.action.CreateChildAction;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.SubContributionItem;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-
-/**
- * Utility class used to centralise shared constants, and shared methods
- * for all the action bar contributors.
- *
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public final class ActionBarContributorUtils {
-
-    /** The singleton instance of the utility class. */
-    public static final ActionBarContributorUtils INSTANCE = new ActionBarContributorUtils();
-
-    /** The show properties action id. */
-    public static final String SHOW_PROPERTIES_ACTION_ID = "show_properties_action"; //$NON-NLS-1$
-
-    /** The refresh action id. */
-    public static final String REFRESH_ACTION_ID = "refresh_action"; //$NON-NLS-1$
-
-    /** Id for the collapse all action. */
-    public static final String COLLAPSE_ALL_ACTION_ID = "action.collapseall.id"; //$NON-NLS-1$
-
-    /** Id for the expand all action. */
-    public static final String EXPAND_ALL_ACTION_ID = "action.expandall.id"; //$NON-NLS-1$
-
-    /** The edit separator id. */
-    public static final String EDIT_SEPARATOR_ID = "edit"; //$NON-NLS-1$
-
-    /** The additions separator id. */
-    public static final String ADDITIONS_SEPARATOR_ID = "additions"; //$NON-NLS-1$
-
-    /** The additions end id. */
-    public static final String ADDITIONS_END_SEPARATOR_ID = "additions-end"; //$NON-NLS-1$
-
-    /** The ui actions id. */
-    public static final String UI_ACTIONS_SEPARATOR_ID = "ui-actions"; //$NON-NLS-1$
-
-    /** The create child menu id. */
-    public static final String CREATECHILD_MENU_ID = "createChildMenu"; //$NON-NLS-1$
-
-    /** Separator id, for the toolbar actions linked to the selected element. */
-    public static final String TOOLBAR_SEP_SELECTION_ACTIONS = "toolbar-selection-actions"; //$NON-NLS-1$
-
-    /** Separator id, for the toolbar delete action linked to the selected element. */
-    public static final String TOOLBAR_SEP_DELETE_ACTION = "toolbar-delete-action"; //$NON-NLS-1$
-
-    /** Prefix used to create the id of toolbar actions which create child on the current selection. */
-    public static final String CREATECHILD_ACTION_ID_PREFIX = "selection.createchild.action."; //$NON-NLS-1$
-
-    /** Label for the create child menu. */
-    public static final String CREATECHILD_MENU_LABEL =
-        CommonUIActivator.getMessages().getString(
-            "ActionBarContributorUtils.menu.child.new"); //$NON-NLS-1$
-
-    /** Label for the show properties action. */
-    public static final String SHOW_PROPERTIES_ACTION_LABEL =
-        CommonUIActivator.getMessages().getString(
-            "ActionBarContributorUtils.actions.showpropertiesview"); //$NON-NLS-1$
-
-    /** Label for the refresh action. */
-    public static final String REFRESH_ACTION_LABEL =
-        CommonUIActivator.getMessages().getString(
-            "ActionBarContributorUtils.actions.refresh"); //$NON-NLS-1$
-
-    /** Label for the expand all action. */
-    public static final String EXPAND_ALL_ACTION_LABEL =
-        CommonUIActivator.getMessages().getString(
-            "ActionBarContributorUtils.actions.expandall"); //$NON-NLS-1$
-
-    /** Label for the collapse all action. */
-    public static final String COLLAPSE_ALL_ACTION_LABEL =
-        CommonUIActivator.getMessages().getString(
-            "ActionBarContributorUtils.actions.collapseall"); //$NON-NLS-1$
-
-
-    /**
-     * Private constructor, as it's a utility class.
-     */
-    private ActionBarContributorUtils() {
-    }
-
-    /**
-     * Generate a {@link CreateChildAction}, to add content under the selection. An action is created
-     * for each object described by the given <code>descriptors</code>.
-     *
-     * The action id is automatically generated, and is prefixed by a custom
-     * string {@link #CREATECHILD_ACTION_ID_PREFIX}, to be able to find them easily later.
-     *
-     * @param pWorkbenchPart The part from which the editing domain will be found, if it's an editing domain provider
-     * @param pDescriptors The collection of descriptors corresponding to the child which may be created
-     * @param pSelection The selection containing the object for which the children can be created
-     * @return The collection of actions created
-     */
-    public Collection<IAction> generateCreateChildActionsCollection(
-        final IWorkbenchPart pWorkbenchPart,
-        final Collection<?> pDescriptors,
-        final ISelection pSelection) {
-
-        // Initialise the collection of actions
-        final Collection<IAction> vActionsCollection = new ArrayList<IAction>();
-
-        if (pDescriptors != null) {
-
-            int i = 0;
-
-            // Loop on the given descriptors to create an action for each one
-            for (final Object vDescriptor : pDescriptors) {
-                // Create the action
-                IAction vCreateChildAction = new CreateChildAction(pWorkbenchPart, pSelection, vDescriptor);
-
-                // Set its unique id
-                vCreateChildAction.setId(
-                    ActionBarContributorUtils.CREATECHILD_ACTION_ID_PREFIX.concat(String.valueOf(i++)));
-
-                // Finally add it to the returned collection
-                vActionsCollection.add(vCreateChildAction);
-            }
-        }
-
-        return vActionsCollection;
-    }
-
-    /**
-     * This populates the specified <code>manager</code> with {@link ActionContributionItem}s
-     * based on the {@link IAction}s contained in the given collection,
-     * by inserting them before the specified contribution item <code>contributionID</code>.
-     * If <code>contributionID</code> is <code>null</code>, they are simply added.
-     *
-     * @param pManager The contribution manager to populate
-     * @param pActionsCollection The actions to add in the manager
-     * @param pContributionID The ID defining where the actions must be inserted. May be null
-     */
-    public void populateManager(
-        final IContributionManager pManager,
-        final Collection<? extends IAction> pActionsCollection,
-        final String pContributionID) {
-
-        if (pManager != null && pActionsCollection != null) {
-            // Loop on the actions to add in the manager
-            for (final IAction vAction : pActionsCollection) {
-                if (StringUtils.isNotEmpty(pContributionID)) {
-                    // Insert the action at the right location
-                    pManager.insertBefore(pContributionID, vAction);
-                } else {
-                    // Simply add the action in the manager
-                    pManager.add(vAction);
-                }
-            }
-        }
-    }
-
-
-    /**
-     * This populates the specified <code>manager</code> with {@link MenuManager}s containing
-     * {@link ActionContributionItem}s based on the {@link IAction}s contained in the given collection,
-     * by inserting them before the specified contribution item <code>contributionID</code>.
-     * If <code>contributionID</code> is <code>null</code>, they are simply added.
-     *
-     * @param pManager The contribution manager to populate
-     * @param pSubmenuActionsMap The submenu actions to add in the manager
-     * @param pContributionID The ID defining where the actions must be inserted. May be null
-     */
-    public void populateManager(
-        final IContributionManager pManager,
-        final Map<String, Collection<IAction>> pSubmenuActionsMap,
-        final String pContributionID) {
-
-        if (pManager != null && pSubmenuActionsMap != null) {
-            // Loop on the submenu action to add in the manager
-            for (final Map.Entry<String, Collection<IAction>> vSubmenuActionsMapEntry : pSubmenuActionsMap.entrySet()) {
-
-                // Create the submenu manager from the map entry key
-                MenuManager vSubmenuManager = new MenuManager(vSubmenuActionsMapEntry.getKey());
-
-                // Add the submenu in the given contribution manager
-                if (StringUtils.isNotEmpty(pContributionID)) {
-                    // Insert the action at the right location
-                    pManager.insertBefore(pContributionID, vSubmenuManager);
-                } else {
-                    // Simply add the action in the manager
-                    pManager.add(vSubmenuManager);
-                }
-
-                // Finally populate the submenu with all the linked actions, contained in the map value
-                populateManager(vSubmenuManager, vSubmenuActionsMapEntry.getValue(), null);
-            }
-        }
-    }
-
-    /**
-     * This removes from the specified <code>manager</code> all {@link ActionContributionItem}s
-     * based on the {@link IAction}s contained in the given collection.
-     *
-     * @param pManager The contribution manager to depopulate
-     * @param pActionsCollection The actions to remove from the manager
-     */
-    public void depopulateManager(
-        final IContributionManager pManager,
-        final Collection<? extends IAction> pActionsCollection) {
-
-        if (pManager != null && pActionsCollection != null) {
-            // Loop on the items currently contained in the contribution manager
-            for (final IContributionItem vContributionItem : pManager.getItems()) {
-
-                // Look into sub-contribution items to find the leaf of the menus
-                IContributionItem vSubcontributionItem = vContributionItem;
-                while (vSubcontributionItem instanceof SubContributionItem) {
-                    vSubcontributionItem = ((SubContributionItem) vSubcontributionItem).getInnerItem();
-                }
-
-                // Delete the sub-contribution corresponding to the actions to remove
-                if (vSubcontributionItem instanceof ActionContributionItem) {
-                    IAction vSubcontributionAction = ((ActionContributionItem) vSubcontributionItem).getAction();
-                    if (pActionsCollection.contains(vSubcontributionAction)) {
-                        pManager.remove(vSubcontributionItem);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * This removes from the specified <code>manager</code> all {@link MenuManager}s and their
-     * {@link ActionContributionItem}s based on the {@link IAction}s contained in the given map.
-     *
-     * @param pManager The contribution manager to depopulate
-     * @param pSubmenuActionsMap The submenu actions to remove from the manager
-     */
-    public void depopulateManager(
-        final IContributionManager pManager,
-        final Map<String, Collection<IAction>> pSubmenuActionsMap) {
-
-        if (pManager != null && pSubmenuActionsMap != null) {
-            // Loop on the items currently contained in the contribution manager
-            for (final IContributionItem vContributionItem : pManager.getItems()) {
-
-                if (vContributionItem instanceof MenuManager) {
-                    final MenuManager vSubmenuManager = (MenuManager) vContributionItem;
-
-                    // If the map contains the menu to remove, depopulate the menu and then
-                    // remove it from the parent contribution manager
-                    if (pSubmenuActionsMap.containsKey(vSubmenuManager.getMenuText())) {
-                        depopulateManager(vSubmenuManager, pSubmenuActionsMap.get(vContributionItem));
-                        pManager.remove(vContributionItem);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * This extracts those actions in the given collection whose text is qualified and returns
-     * a map of these actions, keyed by submenu text.
-     *
-     * @param pActionsCollection The collection of actions for which the submenus must be extracted
-     * @return The map of extracted submenus, with their text as key and all theirs actions as value
-     */
-    public Map<String, Collection<IAction>> extractSubmenuActions(final Collection<IAction> pActionsCollection) {
-        // Initialise the map
-        final Map<String, Collection<IAction>> vExtractedSubmenuActionsMap =
-            new LinkedHashMap<String, Collection<IAction>>();
-
-        if (pActionsCollection != null) {
-            // Loop on the given actions collection with an iterator as the collection may be modified
-            Iterator<IAction> vActionsIterator = pActionsCollection.iterator();
-            while (vActionsIterator.hasNext()) {
-                // Get the current action
-                final IAction vAction = vActionsIterator.next();
-
-                // Get the action text, to parse it and extract the submenus
-                // NB : Use an empty String by default to avoid the exception on the tokenizer if null
-                String vTextToTokenize = StringUtils.EMPTY;
-                if (StringUtils.isNotEmpty(vAction.getText())) {
-                    vTextToTokenize = vAction.getText();
-                }
-
-                // Parse the action text to find the submenus to create
-                final StringTokenizer vActionTextTokenizer = new StringTokenizer(vTextToTokenize, "|"); //$NON-NLS-1$
-
-                // Ensure that a submenu is needed
-                if (vActionTextTokenizer.countTokens() == 2) {
-                    // Get the submenu text, and the action text
-                    String vSubMenuText = vActionTextTokenizer.nextToken().trim();
-                    String vActionText = vActionTextTokenizer.nextToken().trim();
-
-                    // Get the collection of action corresponding to this submenu, to populate it
-                    Collection<IAction> vSubmenuActionsCollection = vExtractedSubmenuActionsMap.get(vSubMenuText);
-
-                    if (vSubmenuActionsCollection == null) {
-                        // The collection doesn't already exists, thus create it and add it in the map
-                        vSubmenuActionsCollection = new ArrayList<IAction>();
-                        vExtractedSubmenuActionsMap.put(vSubMenuText, vSubmenuActionsCollection);
-                    }
-
-                    // Then update the current action text and add it in the collection
-                    // of actions associated to the current submenu
-                    vAction.setText(vActionText);
-                    vSubmenuActionsCollection.add(vAction);
-
-                    // Finally remove the current action
-                    vActionsIterator.remove();
-                }
-            }
-        }
-
-        return vExtractedSubmenuActionsMap;
-    }
-
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/FilterPartControlContribution.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/FilterPartControlContribution.java
deleted file mode 100644
index fec6d89..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/FilterPartControlContribution.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.actions;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
-import org.polarsys.esf.core.common.ui.widget.FilterComposite;
-
-/**
- * Control contribution used to manage the widgets used to apply 
- * filters on listener parts.
- *   
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class FilterPartControlContribution
-    extends WorkbenchWindowControlContribution {
-    
-    /** The filter composite. */
-    private FilterComposite mFilterComposite = null;
-
-    /**
-     * The default constructor.
-     */
-    public FilterPartControlContribution() {
-        // Call the parent constructor
-        super();
-    }
-    
-    /**
-     * Creates and returns the control for this contribution item 
-     * under the given parent composite.
-     * 
-     * @param pParent The parent composite
-     * @return The new control
-     */
-    @Override
-    protected Control createControl(final Composite pParent) {
-        // Create and remember of the filter composite 
-        mFilterComposite = new FilterComposite(pParent);
-        
-        return mFilterComposite;
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/NoModifiesActionBarContributor.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/NoModifiesActionBarContributor.java
deleted file mode 100644
index 49f10f6..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/NoModifiesActionBarContributor.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.actions;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.UnexecutableCommand;
-import org.eclipse.emf.edit.ui.action.CopyAction;
-import org.eclipse.emf.edit.ui.action.CutAction;
-import org.eclipse.emf.edit.ui.action.DeleteAction;
-import org.eclipse.emf.edit.ui.action.PasteAction;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-
-
-/**
- * 
- * Action bar contributor
- * 
- * Overridden to remove all editions action, and clean popmenu.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class NoModifiesActionBarContributor
-    extends ViewActionBarContributor {
-
-    /**
-     * Default constructor.
-     */
-    public NoModifiesActionBarContributor() {
-        super();
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * @return an unexecutable command, to handle global delete action.
-     */
-    @Override
-    protected DeleteAction createDeleteAction() {
-        return new DeleteAction() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * @return an unexecutable command, to handle global cut action.
-     */
-    @Override
-    protected CutAction createCutAction() {
-        return new CutAction() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * @return an unexecutable command, to handle global paste action.
-     */
-    @Override
-    protected PasteAction createPasteAction() {
-        return new PasteAction() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * @return an unexecutable command, to handle global copy action.
-     */
-    @Override
-    protected CopyAction createCopyAction() {
-        return new CopyAction() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Customise the add global action to remove the Show Properties
-     * which is not useful in this context.
-     */
-    @Override
-    protected void addGlobalActions(final IMenuManager pMenuManager) {
-        
-        // Call the parent method
-        super.addGlobalActions(pMenuManager);
-        
-        // Remove the show properties action
-        pMenuManager.remove(ActionBarContributorUtils.SHOW_PROPERTIES_ACTION_ID);
-    }    
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        // Add our standard marker.
-        if ((style & ADDITIONS_LAST_STYLE) == 0) {
-            pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_SEPARATOR_ID));
-        }
-        pMenuManager.add(new Separator(ActionBarContributorUtils.EDIT_SEPARATOR_ID));
-
-        pMenuManager.add(new ActionContributionItem(undoAction));
-        pMenuManager.add(new ActionContributionItem(redoAction));
-        pMenuManager.add(new Separator());
-
-        if ((style & ADDITIONS_LAST_STYLE) != 0) {
-            pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_SEPARATOR_ID));
-            pMenuManager.add(new Separator());
-        }
-        // Add our other standard marker.
-        pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_END_SEPARATOR_ID));
-
-        addGlobalActions(pMenuManager);
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/ViewActionBarContributor.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/ViewActionBarContributor.java
deleted file mode 100644
index cee64dd..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/actions/ViewActionBarContributor.java
+++ /dev/null
@@ -1,452 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.actions;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
-import org.eclipse.emf.edit.ui.action.ValidateAction;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-
-/**
- * This is the action bar contributor used for all the views linked to a resource of ESF.
- * Its first implementation is coming from hmhanna.
- * 
- * It extends {@link EditingDomainActionBarContributor} which provide the standard mechanisms
- * to provide the actions on an editing domain.
- *
- * It implements {@link ISelectionChangedListener} to be able to react when the selection changed in the
- * active editor, to update the action linked to the current selection.
- *
- * This contributor will populate the view tool bar and menus with different kind of actions :
- * <ul>
- *  <li>Actions not linked to the current context (ie: expand / collapse tree)</li>
- *  <li>Actions linked to the current selection when one is set (ie: create children elements)</li>
- * </ul>
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class ViewActionBarContributor
-    extends EditingDomainActionBarContributor
-    implements ISelectionChangedListener {
-
-    /** Instance of utility class used by the action contributors. */
-    private ActionBarContributorUtils mActionBarContributorUtils = ActionBarContributorUtils.INSTANCE;
-
-    /** This keeps track of the active editor. */
-    private IWorkbenchPart mActivePart = null;
-
-    /** This keeps track of the current selection provider. */
-    private ISelectionProvider mSelectionProvider = null;
-
-    /**
-     * The id of the properties view that will be showed
-     * when the {@link #mShowPropertiesViewAction} run.
-     */
-    private String mPropertyViewsId = IPageLayout.ID_PROP_SHEET;
-
-    /**
-     * This action opens the Properties view.
-     */
-    private IAction mShowPropertiesViewAction =
-        new Action(ActionBarContributorUtils.SHOW_PROPERTIES_ACTION_LABEL) {
-
-            @Override
-            public void run() {
-                try {
-                    ViewActionBarContributor.this.getPage().showView(mPropertyViewsId);
-                } catch (final PartInitException pException) {
-                    CommonUIActivator.INSTANCE.log(pException);
-                }
-            }
-        };
-
-    /**
-     * This action refreshes the viewer of the current editor if the editor implements
-     * {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
-     */
-    private IAction mRefreshViewerAction =
-        new Action(ActionBarContributorUtils.REFRESH_ACTION_LABEL) {
-
-            @Override
-            public boolean isEnabled() {
-                return mActivePart instanceof IViewerProvider;
-            }
-
-            @Override
-            public void run() {
-                if (mActivePart instanceof IViewerProvider) {
-                    final Viewer vViewer = ((IViewerProvider) mActivePart).getViewer();
-                    if (vViewer != null) {
-                        vViewer.refresh();
-                    }
-                }
-            }
-        };
-
-    /**
-     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction}
-     * for each descriptor generated for the current selection, by the item provider.
-     */
-    private Collection<IAction> mCreateChildActionsCollection = null;
-
-    /**
-     * This creates an instance of the contributor with the default style
-     * {@link EditingDomainActionBarContributor#ADDITIONS_LAST_STYLE}.
-     */
-    public ViewActionBarContributor() {
-        super(ADDITIONS_LAST_STYLE);
-        validateAction = createValidateAction();
-
-        // Initialise the created actions id
-        initialiseActionsId();
-    }
-
-    /**
-     * Initialise the identifier for the actions created by this instance.
-     * This is mandatory to be able to identify the actions in the menus after their insertion.
-     */
-    private void initialiseActionsId() {
-        mRefreshViewerAction.setId(ActionBarContributorUtils.REFRESH_ACTION_ID);
-        mShowPropertiesViewAction.setId(ActionBarContributorUtils.SHOW_PROPERTIES_ACTION_ID);
-    }
-
-    /**
-     * Create and return a new Validate action.
-     * @return The validate action created
-     */
-    protected ValidateAction createValidateAction() {
-        return new ValidateAction();
-    }
-
-    /**
-     * Set the style for managing the separators and the actions.
-     * By default the style is {@link EditingDomainActionBarContributor#ADDITIONS_LAST_STYLE}.
-     * 
-     * @param pStyle The style to set
-     */
-    public void setStyle(final int pStyle) {
-        this.style = pStyle;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * This adds the separators for 'additions' and 'settings' action in the tool bar.
-     */
-    @Override
-    public void contributeToToolBar(final IToolBarManager pToolBarManager) {
-        pToolBarManager.add(new Separator("views-settings")); //$NON-NLS-1$
-        pToolBarManager.add(new Separator("views-additions")); //$NON-NLS-1$
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * When the active editor changes, this remembers the change and registers
-     * this instance with it as a selection provider.
-     */
-    @Override
-    public void setActiveEditor(final IEditorPart pPart) {
-        // Call the parent method
-        super.setActiveEditor(pPart);
-
-        // Consider the active editor as the active part
-        setActivePart(pPart);
-    }
-
-    /**
-     * When the active part changes, this remembers the change and registers
-     * this instance with it as a selection provider.
-     * 
-     * @param pWorkbenchPart The active workbench part
-     */
-    public void setActivePart(final IWorkbenchPart pWorkbenchPart) {
-        // Ensure that the given part is valid and different from the
-        // current part referenced as active
-        if (pWorkbenchPart != null && !pWorkbenchPart.equals(mActivePart)) {
-            if (mActivePart != null) {
-                deactivate();
-            }
-
-            if (pWorkbenchPart instanceof IEditingDomainProvider) {
-                mActivePart = pWorkbenchPart;
-                activate();
-            }
-
-            mActivePart = pWorkbenchPart;
-            if (mSelectionProvider != null) {
-                mSelectionProvider.removeSelectionChangedListener(this);
-            }
-            if (pWorkbenchPart != null) {
-                mSelectionProvider = pWorkbenchPart.getSite().getSelectionProvider();
-                mSelectionProvider.addSelectionChangedListener(this);
-                if (mSelectionProvider.getSelection() != null) {
-                    selectionChanged(new SelectionChangedEvent(mSelectionProvider, mSelectionProvider.getSelection()));
-                }
-            }
-        }
-        getActionBars().updateActionBars();
-    }
-
-    /**
-     * Set the id of the property view which will be shown with
-     * the action {@link #mShowPropertiesViewAction}.
-     * 
-     * @param pPropertyViewsId The properties view id
-     */
-    public void setPropertyViewsId(final String pPropertyViewsId) {
-        mPropertyViewsId = pPropertyViewsId;
-    }
-
-    /**
-     * @return The active part
-     */
-    public IWorkbenchPart getActivePart() {
-        return mActivePart;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implements {@link ISelectionChangedListener}, handling {@link SelectionChangedEvent}s
-     * by querying for the children and siblings that can be added to the selected object
-     * and updating the menus accordingly.
-     */
-    @Override
-    public void selectionChanged(final SelectionChangedEvent pEvent) {
-        // Query the new selection for appropriate new child/descriptors
-        Collection<?> vNewChildDescriptorsCollection = null;
-
-        final ISelection vSelection = pEvent.getSelection();
-        if ((vSelection instanceof IStructuredSelection) && (((IStructuredSelection) vSelection).size() == 1)) {
-            final Object vObject = ((IStructuredSelection) vSelection).getFirstElement();
-
-            final EditingDomain vDomain = ((IEditingDomainProvider) mActivePart).getEditingDomain();
-
-            vNewChildDescriptorsCollection = vDomain.getNewChildDescriptors(vObject, null);
-        }
-
-        // Generate actions for selection, then populate and redraw the menus
-        mCreateChildActionsCollection = mActionBarContributorUtils.generateCreateChildActionsCollection(
-            mActivePart,
-            vNewChildDescriptorsCollection,
-            vSelection);
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * This populates the pop-up menu before it appears with the child creation actions.
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        // Call the parent method
-        super.menuAboutToShow(pMenuManager);
-
-        // Create the create child submenu
-        MenuManager vCreateChildSubmenuManager = new MenuManager(ActionBarContributorUtils.CREATECHILD_MENU_ID);
-
-        // Populate the submenu and insert it in the parent menu manager
-        mActionBarContributorUtils.populateManager(vCreateChildSubmenuManager, mCreateChildActionsCollection, null);
-        pMenuManager.insertBefore(ActionBarContributorUtils.EDIT_SEPARATOR_ID, vCreateChildSubmenuManager);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void addGlobalActions(final IMenuManager pMenuManager) {
-        // Insert the show properties action after a custom separator for the ui actions
-        pMenuManager.insertAfter(
-            ActionBarContributorUtils.ADDITIONS_END_SEPARATOR_ID,
-            new Separator(ActionBarContributorUtils.UI_ACTIONS_SEPARATOR_ID));
-        pMenuManager.insertAfter(
-            ActionBarContributorUtils.UI_ACTIONS_SEPARATOR_ID,
-            mShowPropertiesViewAction);
-
-        // Insert the refresh action, and update its state, after the the ui actions separator
-        mRefreshViewerAction.setEnabled(mRefreshViewerAction.isEnabled());
-        pMenuManager.insertAfter(ActionBarContributorUtils.UI_ACTIONS_SEPARATOR_ID, mRefreshViewerAction);
-
-        // Call the parent method to add the others global actions (Validate, etc.)
-        super.addGlobalActions(pMenuManager);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Called when a view is deactivated to deactivate all the linked actions.
-     */
-    @Override
-    public void deactivate() {
-        mActivePart.removePropertyListener(this);
-
-        deleteAction.setActiveWorkbenchPart(null);
-        cutAction.setActiveWorkbenchPart(null);
-        copyAction.setActiveWorkbenchPart(null);
-        pasteAction.setActiveWorkbenchPart(null);
-        undoAction.setActiveWorkbenchPart(null);
-        redoAction.setActiveWorkbenchPart(null);
-
-        if (loadResourceAction != null) {
-            loadResourceAction.setActiveWorkbenchPart(null);
-        }
-
-        if (controlAction != null) {
-            controlAction.setActiveWorkbenchPart(null);
-        }
-
-        if (validateAction != null) {
-            validateAction.setActiveWorkbenchPart(null);
-        }
-
-        ISelectionProvider vSelectionProvider = null;
-        if (mActivePart instanceof ISelectionProvider) {
-            vSelectionProvider = (ISelectionProvider) mActivePart;
-        } else {
-            vSelectionProvider = mActivePart.getSite().getSelectionProvider();
-        }
-
-        if (vSelectionProvider != null) {
-            vSelectionProvider.removeSelectionChangedListener(deleteAction);
-            vSelectionProvider.removeSelectionChangedListener(cutAction);
-            vSelectionProvider.removeSelectionChangedListener(copyAction);
-            vSelectionProvider.removeSelectionChangedListener(pasteAction);
-
-            if (validateAction != null) {
-                vSelectionProvider.removeSelectionChangedListener(validateAction);
-            }
-
-            if (controlAction != null) {
-                vSelectionProvider.removeSelectionChangedListener(controlAction);
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Called when a view is activated to enable all the linked actions.
-     */
-    @Override
-    public void activate() {
-        mActivePart.addPropertyListener(this);
-
-        deleteAction.setActiveWorkbenchPart(mActivePart);
-        cutAction.setActiveWorkbenchPart(mActivePart);
-        copyAction.setActiveWorkbenchPart(mActivePart);
-        pasteAction.setActiveWorkbenchPart(mActivePart);
-        undoAction.setActiveWorkbenchPart(mActivePart);
-        redoAction.setActiveWorkbenchPart(mActivePart);
-
-        if (validateAction != null) {
-            validateAction.setActiveWorkbenchPart(mActivePart);
-        }
-
-        ISelectionProvider vSelectionProvider = null;
-        if (mActivePart instanceof ISelectionProvider) {
-            vSelectionProvider = (ISelectionProvider) mActivePart;
-        } else {
-            vSelectionProvider = mActivePart.getSite().getSelectionProvider();
-        }
-
-        if (vSelectionProvider != null) {
-            vSelectionProvider.addSelectionChangedListener(deleteAction);
-            vSelectionProvider.addSelectionChangedListener(cutAction);
-            vSelectionProvider.addSelectionChangedListener(copyAction);
-            vSelectionProvider.addSelectionChangedListener(pasteAction);
-
-            if (validateAction != null) {
-                vSelectionProvider.addSelectionChangedListener(validateAction);
-            }
-        }
-
-        update();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Update the actions to the current selection context.
-     */
-    @Override
-    public void update() {
-        // Try to get the selection provider from the active part. It can be the active part itself
-        // if it's a selection provider
-        ISelectionProvider vSelectionProvider = null;
-        if (mActivePart instanceof ISelectionProvider) {
-            vSelectionProvider = (ISelectionProvider) mActivePart;
-        } else if (mActivePart != null) {
-            vSelectionProvider = mActivePart.getSite().getSelectionProvider();
-        }
-
-        if (vSelectionProvider != null) {
-            IStructuredSelection vStructuredSelection = null;
-            if (vSelectionProvider.getSelection() instanceof IStructuredSelection) {
-                vStructuredSelection = (IStructuredSelection) vSelectionProvider.getSelection();
-            } else {
-                vStructuredSelection = StructuredSelection.EMPTY;
-            }
-
-            deleteAction.updateSelection(vStructuredSelection);
-            cutAction.updateSelection(vStructuredSelection);
-            copyAction.updateSelection(vStructuredSelection);
-            pasteAction.updateSelection(vStructuredSelection);
-
-            if (validateAction != null) {
-                validateAction.updateSelection(vStructuredSelection);
-            }
-        }
-
-        // Ensure that the undo and redo action have a domain to update them
-        // In they don't, the update action will throw a NPE
-        if (undoAction.getEditingDomain() != null) {
-            undoAction.update();
-        }
-        if (redoAction.getEditingDomain() != null) {
-            redoAction.update();
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implementation ensures that a delete action will clean up all references to deleted objects.
-     */
-    @Override
-    protected boolean removeAllReferencesOnDelete() {
-        return true;
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editingsupport/ParameterValueEditingSupport.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editingsupport/ParameterValueEditingSupport.java
index b260437..b68c042 100644
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editingsupport/ParameterValueEditingSupport.java
+++ b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editingsupport/ParameterValueEditingSupport.java
@@ -30,7 +30,7 @@
 
 
 /**
- * Implementation of editing support for set value of probability rule's parameters.
+ * Implementation of editing support for set value of probability rule parameters.
  * 
  * @author  $Author: jdumont $
  * @version $Revision: 83 $
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/AbstractActionBarContributor.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/AbstractActionBarContributor.java
deleted file mode 100644
index 988c7ae..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/AbstractActionBarContributor.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.editor;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.edit.ui.action.DeleteAction;
-import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
-import org.eclipse.emf.edit.ui.action.ValidateAction;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.handlers.CollapseAllHandler;
-import org.eclipse.ui.handlers.ExpandAllHandler;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.CommonUIActivator.Implementation;
-import org.polarsys.esf.core.common.ui.actions.ActionBarContributorUtils;
-import org.polarsys.esf.core.common.ui.provider.IToolBarManagerProvider;
-
-/**
- * This is the abstract action bar contributor used for all the multi pages editors.
- *
- * It extends {@link EditingDomainActionBarContributor} which provide the standard mechanisms
- * to provide the actions on an editing domain.
- *
- * It implements {@link ISelectionChangedListener} to be able to react when the selection changed in the
- * active editor, to update the action linked to the current selection.
- *
- * This contributor will populate the editor tool bar with different kind of actions :
- * <ul>
- *  <li>Actions not linked to the current context (ie: expand / collapse tree)</li>
- *  <li>Actions linked to the current selection when one is set (ie: create children elements)</li>
- * </ul>
- *
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractActionBarContributor
-    extends EditingDomainActionBarContributor
-    implements ISelectionChangedListener {
-
-    /** Instance of utility class used by the action contributors. */
-    private ActionBarContributorUtils mActionBarContributorUtils = ActionBarContributorUtils.INSTANCE;
-
-    /** This keeps track of the active editor on which the actions are applied. */
-    private IEditorPart mActiveEditorPart = null;
-
-    /** This keeps track of the current selection provider. */
-    private ISelectionProvider mSelectionProvider = null;
-
-    /** This action opens the Properties view. */
-    private IAction mShowPropertiesViewAction = new Action(ActionBarContributorUtils.SHOW_PROPERTIES_ACTION_LABEL) {
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void run() {
-            try {
-                getPage().showView(IPageLayout.ID_PROP_SHEET);
-            } catch (final PartInitException pException) {
-                CommonUIActivator.logError(
-                    "Error during the opening of the Properties view", //$NON-NLS-1$
-                    pException);
-            }
-        }
-    };
-
-    /** This action expands the active editor content, if possible. */
-    private IAction mExpandAllAction = createExpandAllAction();
-
-    /** This action collapse the active editor content, if possible. */
-    private IAction mCollapseAllAction = createCollapseAllAction();
-
-    /**
-     * This action refreshes the viewer of the current editor if the editor
-     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
-     */
-    private IAction mRefreshViewerAction = new Action(ActionBarContributorUtils.REFRESH_ACTION_LABEL) {
-
-        /**
-         * {@inheritDoc}
-         *
-         * The action is enabled only if the editor implements {@link IViewerProvider}
-         * to provide its owned viewer.
-         */
-        @Override
-        public boolean isEnabled() {
-            return mActiveEditorPart instanceof IViewerProvider;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void run() {
-            if (mActiveEditorPart instanceof IViewerProvider) {
-                final Viewer vViewer = ((IViewerProvider) mActiveEditorPart).getViewer();
-                if (vViewer != null) {
-                    vViewer.refresh();
-                }
-            }
-        }
-    };
-
-    /**
-     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
-     * generated for the current selection by the item provider.
-     */
-    private Collection<IAction> mCreateSelectChildActionsColl = Collections.emptyList();
-
-    /**
-     * This will contain a map of {@link org.eclipse.emf.edit.ui.action.CreateChildAction}s, keyed by sub-menu text
-     * for all the create child action relative to the current selection.
-     */
-    private Map<String, Collection<IAction>> mCreateSelectChildMenuActionsMap = null;
-
-    /** This is the menu manager into which menu contribution items should be added for CreateChild actions. */
-    private IMenuManager mCreateSelectChildMenuManager = null;
-
-    /**
-     * Default constructor.
-     * This creates an instance of the contributor with the default style
-     * {@link EditingDomainActionBarContributor#ADDITIONS_LAST_STYLE}.
-     */
-    public AbstractActionBarContributor() {
-        // Call the parent constructor and ask to add an 'additions' anchor at the end of the menu
-        super(ADDITIONS_LAST_STYLE);
-
-        // Create the parent action specific to the editing domain context
-        // NB : The 'load resource' and 'control' actions are not needed
-        validateAction = new ValidateAction();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implementation also call the method to contribute to any toolbar
-     * potentially provided by the active editor.
-     */
-    @Override
-    public void init(final IActionBars pActionBars) {
-        // Call the parent method
-        super.init(pActionBars);
-    }
-
-    /**
-     * Contribute to the editor toolbar, if the active editor provide a tool bar manager.
-     * This method may be called only once as it will create all the actions, even the global
-     * actions which doesn't need to change or be updated after their creation.
-     */
-    public void contributeToEditorToolBar() {
-
-        // Check if the editor provide a custom toolbar manager
-        if (mActiveEditorPart instanceof IToolBarManagerProvider) {
-            // Get the tool bar manager from the active editor
-            ToolBarManager vEditorToolBarManager = ((IToolBarManagerProvider) mActiveEditorPart).getToolBarManager();
-
-            // Use a flag to known if the tool bar content have been modified
-            boolean vNeedToUpdate = false;
-
-            // Add the expand all action if it's not already in it
-            if (vEditorToolBarManager.find(ActionBarContributorUtils.EXPAND_ALL_ACTION_ID) == null) {
-                vEditorToolBarManager.add(mExpandAllAction);
-                vNeedToUpdate = true;
-            }
-
-            // Add the collapse all action if it's not already in it
-            if (vEditorToolBarManager.find(ActionBarContributorUtils.COLLAPSE_ALL_ACTION_ID) == null) {
-                vEditorToolBarManager.add(mCollapseAllAction);
-                vNeedToUpdate = true;
-            }
-
-            // Add the separator for the actions on the selected element, if it's not already in it
-            if (vEditorToolBarManager.find(ActionBarContributorUtils.TOOLBAR_SEP_SELECTION_ACTIONS) == null) {
-                vEditorToolBarManager.add(new Separator(ActionBarContributorUtils.TOOLBAR_SEP_SELECTION_ACTIONS));
-                vNeedToUpdate = true;
-            }
-
-            // Add the delete action to the toolbar if it's not already in it
-            // This action will react to the selection change automatically
-            if (vEditorToolBarManager.find(ActionFactory.DELETE.getId()) == null) {
-                vEditorToolBarManager.add(new Separator(ActionBarContributorUtils.TOOLBAR_SEP_DELETE_ACTION));
-                vEditorToolBarManager.appendToGroup(ActionBarContributorUtils.TOOLBAR_SEP_DELETE_ACTION, deleteAction);
-                vNeedToUpdate = true;
-            }
-
-
-            // Finally update the toolbar if needed
-            if (vNeedToUpdate) {
-                vEditorToolBarManager.update(true);
-
-                vEditorToolBarManager.getControl().pack(true);
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * By default, no menu is added.
-     */
-    @Override
-    public void contributeToMenu(final IMenuManager pMenuManager) {
-        // Nothing to do
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * When the active editor changes, this remembers the change and registers
-     * this instance with it as a selection provider.
-     */
-    @Override
-    public void setActiveEditor(final IEditorPart pPart) {
-        // Call the parent method
-        super.setActiveEditor(pPart);
-
-        // Remember the active editor
-        mActiveEditorPart = pPart;
-
-        // If any selection provider was already registered, remove it
-        if (mSelectionProvider != null) {
-            mSelectionProvider.removeSelectionChangedListener(this);
-        }
-
-        // Then switch to the new selection provider if possible
-        if (mActiveEditorPart != null) {
-            // Get the selection provider from the new active editor
-            mSelectionProvider = mActiveEditorPart.getSite().getSelectionProvider();
-
-            // Register this instance to listen to the change on this selection provider
-            mSelectionProvider.addSelectionChangedListener(this);
-
-            // Fake a selection changed event to update the menus
-            if (mSelectionProvider.getSelection() != null) {
-                selectionChanged(new SelectionChangedEvent(mSelectionProvider, mSelectionProvider.getSelection()));
-            }
-
-        } else {
-            // Reset the selection provider
-            mSelectionProvider = null;
-        }
-
-        // Try to contribute to the tool bar that the active editor may provide
-        contributeToEditorToolBar();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implements {@link ISelectionChangedListener}, handling {@link SelectionChangedEvent}s
-     * by querying for the children that can be created under the selected object and updating the menus accordingly.
-     */
-    @Override
-    public void selectionChanged(final SelectionChangedEvent pEvent) {
-        // Recreate the actions linked to the current selection in the contextual menus and in the editor toolbar
-        addCreateSelectChildActions(pEvent.getSelection());
-    }
-
-    /**
-     * Create the new child actions for the current selection, in the context menu
-     * and the editor toolbar.
-     *
-     * @param pSelection The current selection for which the actions must be created
-     */
-    protected void addCreateSelectChildActions(final ISelection pSelection) {
-        // Force to update the action from the current selection,
-        // and recreate the actions in the menu
-        addCreateSelectChildActionsToMenu(pSelection, true);
-
-        // The recreate the actions in the tool bar, but without updating the
-        // actions as the selection has not changed
-        addCreateSelectChildActionsToEditorToolbar(pSelection, false);
-    }
-
-    /**
-     * Create the new child actions for the current selection in the editor context menu.
-     * The actions may be updated according to the given flag value. If no, the list of action
-     * is not updated according to the current selection, but the menu content is refresh even so.
-     *
-     * @param pSelection The current selection for which the actions must be created
-     * @param pUpdateActions If <code>true</code> the list of actions is updated according to the given selection
-     */
-    protected void addCreateSelectChildActionsToMenu(final ISelection pSelection, final boolean pUpdateActions) {
-        // Remove any menu items created for the old selection
-        if (mCreateSelectChildMenuManager != null) {
-            mActionBarContributorUtils.depopulateManager(
-                mCreateSelectChildMenuManager,
-                mCreateSelectChildMenuActionsMap);
-
-            mActionBarContributorUtils.depopulateManager(
-                mCreateSelectChildMenuManager,
-                mCreateSelectChildActionsColl);
-        }
-
-        // Update the list of actions used to create child for the
-        // given selection only if needed
-        if (pUpdateActions) {
-            updateCreateSelectChildActionsCollection(pSelection);
-        }
-
-        // Finally populate and redraw the menus
-        if (mCreateSelectChildMenuManager != null) {
-            mActionBarContributorUtils.populateManager(
-                mCreateSelectChildMenuManager,
-                mCreateSelectChildMenuActionsMap,
-                null);
-
-            mActionBarContributorUtils.populateManager(
-                mCreateSelectChildMenuManager,
-                mCreateSelectChildActionsColl,
-                null);
-
-            mCreateSelectChildMenuManager.update(true);
-        }
-    }
-
-    /**
-     * Create the new child actions for the current selection in the editor toolbar.
-     * The actions may be updated according to the given flag value. If no, the list of action
-     * is not updated according to the current selection, but the toolbar content is refresh even so.
-     *
-     * @param pSelection The current selection for which the actions must be created
-     * @param pUpdateActions If <code>true</code> the list of actions is updated according to the given selection
-     */
-    protected void addCreateSelectChildActionsToEditorToolbar(
-        final ISelection pSelection,
-        final boolean pUpdateActions) {
-
-        // Check if the editor provide a custom toolbar manager
-        if (mActiveEditorPart instanceof IToolBarManagerProvider) {
-            // Use a flag to known if the tool bar content have been modified
-            boolean vNeedToUpdate = false;
-
-            // Get the tool bar manager from the active editor
-            ToolBarManager vEditorToolBarManager = ((IToolBarManagerProvider) mActiveEditorPart).getToolBarManager();
-
-            // Depopulate the tool bar with the potential existing create child actions
-            for (IContributionItem vContributionItem : vEditorToolBarManager.getItems()) {
-                // The actions to remove are identified with their id prefix, thus check it
-                if (StringUtils.startsWith(
-                    vContributionItem.getId(),
-                    ActionBarContributorUtils.CREATECHILD_ACTION_ID_PREFIX)) {
-
-                    // Remove the action
-                    vEditorToolBarManager.remove(vContributionItem);
-                    vNeedToUpdate = true;
-                }
-            }
-
-            // Update the list of actions used to create child for the
-            // given selection only if needed
-            if (pUpdateActions) {
-                updateCreateSelectChildActionsCollection(pSelection);
-            }
-
-            // Then populate the tool bar with the new actions
-            for (IAction vAction : mCreateSelectChildActionsColl) {
-                // Check if the action is not already in the tool bar
-                if (vEditorToolBarManager.find(vAction.getId()) == null) {
-                    // Insert the action
-                    vEditorToolBarManager.appendToGroup(
-                        ActionBarContributorUtils.TOOLBAR_SEP_SELECTION_ACTIONS,
-                        vAction);
-
-                    // Remember that the toolbar must be updated
-                    vNeedToUpdate = true;
-                }
-            }
-
-            // Finally, update the toolbar if needed
-            if (vNeedToUpdate) {
-                vEditorToolBarManager.update(true);
-            }
-        }
-    }
-
-    /**
-     * Generate the list of create child actions corresponding to the selection given in parameter,
-     * and update this instance property {@link #mCreateSelectChildActionsColl} with it.
-     *
-     * The map of menus linked to the created action {@link #mCreateSelectChildMenuActionsMap}, is
-     * also updated.
-     *
-     * @param pSelection The current selection in the active editor
-     */
-    protected void updateCreateSelectChildActionsCollection(final ISelection pSelection) {
-
-        Collection<?> vNewChildDescrCollection = null;
-
-        // Ensure that the selection contains only one element
-        if (pSelection instanceof IStructuredSelection && ((IStructuredSelection) pSelection).size() == 1) {
-            // Get the selected object
-            Object vSelectedObject = ((IStructuredSelection) pSelection).getFirstElement();
-
-            // Get the editing domain from the active editor, and then
-            // query the new selection to find the appropriate new child descriptors
-            EditingDomain vEditingDomain = null;
-            if (mActiveEditorPart instanceof IEditingDomainProvider) {
-                vEditingDomain = ((IEditingDomainProvider) mActiveEditorPart).getEditingDomain();
-
-                // Find the new child actions corresponding to the selected objects
-                // and the editing domain used in the active editor
-                vNewChildDescrCollection = vEditingDomain.getNewChildDescriptors(vSelectedObject, null);
-            }
-        }
-
-        // Generate the actions corresponding to the current selection
-        mCreateSelectChildActionsColl = mActionBarContributorUtils.generateCreateChildActionsCollection(
-            mActiveEditorPart,
-            vNewChildDescrCollection,
-            pSelection);
-
-        // Then update the map menus with the created actions
-        mCreateSelectChildMenuActionsMap =
-            mActionBarContributorUtils.extractSubmenuActions(mCreateSelectChildActionsColl);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This populates the pop-up menu before it appears with the child creation actions.
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        // Call the parent method
-        super.menuAboutToShow(pMenuManager);
-
-        // Create the create child submenu
-        MenuManager vCreateChildSubmenuManager = new MenuManager(ActionBarContributorUtils.CREATECHILD_MENU_LABEL);
-
-        // Populate the submenu and insert it in the parent menu manager
-        mActionBarContributorUtils.populateManager(
-            vCreateChildSubmenuManager,
-            mCreateSelectChildMenuActionsMap,
-            null);
-
-        mActionBarContributorUtils.populateManager(
-            vCreateChildSubmenuManager,
-            mCreateSelectChildActionsColl,
-            null);
-
-        pMenuManager.insertBefore(ActionBarContributorUtils.EDIT_SEPARATOR_ID, vCreateChildSubmenuManager);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void addGlobalActions(final IMenuManager pMenuManager) {
-
-        // Insert the show properties action after a custom separator for the ui actions
-        pMenuManager.insertAfter(
-            ActionBarContributorUtils.ADDITIONS_END_SEPARATOR_ID,
-            new Separator(ActionBarContributorUtils.UI_ACTIONS_SEPARATOR_ID));
-        pMenuManager.insertAfter(
-            ActionBarContributorUtils.UI_ACTIONS_SEPARATOR_ID,
-            mShowPropertiesViewAction);
-
-        // Insert the refresh action, and update its state, after the the ui actions separator
-        mRefreshViewerAction.setEnabled(mRefreshViewerAction.isEnabled());
-        pMenuManager.insertAfter(ActionBarContributorUtils.UI_ACTIONS_SEPARATOR_ID, mRefreshViewerAction);
-
-        // Call the parent method to add the others global actions (Validate, etc.)
-        super.addGlobalActions(pMenuManager);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implementation ensures that a delete action will clean up all references to deleted objects.
-     */
-    @Override
-    protected boolean removeAllReferencesOnDelete() {
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Overridden to ensure that the delete action id is set.
-     */
-    @Override
-    protected DeleteAction createDeleteAction() {
-        // Create the custom action
-        DeleteAction vDeleteAction = new DeleteAction(removeAllReferencesOnDelete());
-
-        // Update the action to set its id
-        vDeleteAction.setId(ActionFactory.DELETE.getId());
-
-        return vDeleteAction;
-    }
-
-    /**
-     * Create the expand all action to apply on the active editor,
-     * if this one is a viewer provider.
-     *
-     * @return The expand all action created
-     */
-    protected IAction createExpandAllAction() {
-        // Get the action image
-        final ImageDescriptor vImageDescriptor =
-            CommonUIActivator.getPlugin().getImageRegistry().getDescriptor(
-                Implementation.ICON_EXPAND_ALL_KEY);
-
-        // Create the action
-        final IAction vExpandAllAction = new Action(
-            ActionBarContributorUtils.EXPAND_ALL_ACTION_LABEL,
-            vImageDescriptor) {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                // Ensure that the active editor is a viewer provider
-                if (mActiveEditorPart instanceof IViewerProvider) {
-                    // Get the viewer from the active editor
-                    final Viewer vActiveViewer = ((IViewerProvider) mActiveEditorPart).getViewer();
-
-                    // Check if the viewer is eligible for an expand action
-                    if (vActiveViewer instanceof AbstractTreeViewer) {
-                        // Prepare the expand action asynchronously, on the UI thread
-                        mActiveEditorPart.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                            /**
-                             * {@inheritDoc}
-                             */
-                            @Override
-                            public void run() {
-                                // Create the action handler on the viewer
-                                final ExpandAllHandler vExpandAllHandler =
-                                    new ExpandAllHandler((AbstractTreeViewer) vActiveViewer);
-
-                                // And finally execute it
-                                vExpandAllHandler.execute(null);
-                            }
-                        });
-                    }
-                }
-            }
-        };
-
-        // Set the unique id for this action
-        vExpandAllAction.setId(ActionBarContributorUtils.EXPAND_ALL_ACTION_ID);
-
-        return vExpandAllAction;
-    }
-
-    /**
-     * Create the collapse all action to apply on the active editor,
-     * if this one is a viewer provider.
-     *
-     * @return The collapse all action created
-     */
-    protected IAction createCollapseAllAction() {
-        // Get the action image
-        final ImageDescriptor vImageDescriptor =
-            CommonUIActivator.getPlugin().getImageRegistry().getDescriptor(
-                Implementation.ICON_COLLAPSE_ALL_KEY);
-
-        // Create the action
-        final IAction vCollapseAllAction = new Action(
-            ActionBarContributorUtils.COLLAPSE_ALL_ACTION_LABEL,
-            vImageDescriptor) {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                // Ensure that the active editor is a viewer provider
-                if (mActiveEditorPart instanceof IViewerProvider) {
-                    // Get the viewer from the active editor
-                    final Viewer vActiveViewer = ((IViewerProvider) mActiveEditorPart).getViewer();
-
-                    // Check if the viewer is eligible for an expand action
-                    if (vActiveViewer instanceof AbstractTreeViewer) {
-                        // Prepare the expand action asynchronously, on the UI thread
-                        mActiveEditorPart.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                            /**
-                             * {@inheritDoc}
-                             */
-                            @Override
-                            public void run() {
-                                // Create the action handler on the viewer
-                                final CollapseAllHandler vCollapseAllHandler =
-                                    new CollapseAllHandler((AbstractTreeViewer) vActiveViewer);
-
-                                // And finally execute it
-                                vCollapseAllHandler.execute(null);
-                            }
-                        });
-                    }
-                }
-            }
-        };
-
-        // Set the unique id for this action
-        vCollapseAllAction.setId(ActionBarContributorUtils.COLLAPSE_ALL_ACTION_ID);
-
-        return vCollapseAllAction;
-    }
-
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/AbstractMultiPageEditor.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/AbstractMultiPageEditor.java
deleted file mode 100644
index fd8220c..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/AbstractMultiPageEditor.java
+++ /dev/null
@@ -1,1653 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.editor;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.CommandStack;
-import org.eclipse.emf.common.command.CommandStackListener;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.ui.MarkerHelper;
-import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.common.util.WrappedException;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.emf.edit.provider.IDisposable;
-import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
-import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
-import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
-import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
-import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
-import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
-import org.eclipse.emf.edit.ui.util.EditUIUtil;
-import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.ide.IGotoMarker;
-import org.eclipse.ui.part.MultiPageEditorPart;
-import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.ui.views.properties.IPropertySourceProvider;
-import org.eclipse.ui.views.properties.PropertyColumnLabelProvider;
-import org.eclipse.ui.views.properties.PropertySheet;
-import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.uml2.uml.UMLPackage;
-import org.polarsys.esf.core.common.adapter.ProblemIndicationAdapter;
-import org.polarsys.esf.core.common.listener.IProblemIndicationListener;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.adapter.PartListenerAdapter;
-import org.polarsys.esf.core.common.ui.filter.AbstractFilter;
-import org.polarsys.esf.core.common.ui.filter.IFilterPartListener;
-import org.polarsys.esf.core.common.ui.filter.NamePropertyFilter;
-import org.polarsys.esf.core.common.ui.provider.AdapterFactoryColumnLabelProvider;
-import org.polarsys.esf.core.common.ui.provider.IToolBarManagerProvider;
-import org.polarsys.esf.core.common.ui.view.properties.ArrayInputPropertySourceProvider;
-import org.polarsys.esf.core.common.ui.view.properties.PropertySourceProvider;
-import org.polarsys.esf.core.common.ui.widget.TreeViewerUtils;
-import org.polarsys.esf.core.common.visitor.ResourceDeltaVisitor;
-
-/**
- * This is the abstract base for all the multi page editor, used to create and edit a resource content.
- * The default implementation will manage a main page with a tree viewer and a toolbar, and a optional page
- * only displayed if an error is identified in the resource content.
- *
- * It extends {@link MultiPageEditorPart} by convenience, even if it actually contains only one page.
- *
- * It implements :
- * <ul>
- * <li>{@link IEditingDomainProvider} : To provide the editing domain that it edits</li>
- * <li>{@link ISelectionProvider} : To provide its selection to potential listeners</li>
- * <li>{@link IMenuListener} : To be able to react when its context menu is going to be opened</li>
- * <li>{@link IViewerProvider} : To provide its viewer</li>
- * <li>{@link IGotoMarker} : To be able to react to a 'Go to' action, pointing to an element in its viewer</li>
- * <li>{@link IToolBarManagerProvider} : To be able to provide the manager of the custom toolbar in the main page</li>
- * <li>{@link IProblemIndicationListener} : To be able to react to the resources analysis, and warn the user if any
- * error is detected</li>
- * <li>{@link IFilterPartListener} : To be able to filter its content according to a text value.</li>
- * </ul>
- *
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractMultiPageEditor
-    extends MultiPageEditorPart
-    implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker,
-    IToolBarManagerProvider, IProblemIndicationListener, IFilterPartListener {
-
-    /** Size of the first column. */
-    private static final int FIRST_COLUMN_DEFAULT_SIZE = 400;
-
-    /** This keeps track of the editing domain that is used to track all changes to the resource. */
-    private AdapterFactoryEditingDomain mEditingDomain = null;
-
-    /** This is the adapter factory used for providing views of the resource content. */
-    private AdapterFactory mAdapterFactory = null;
-
-    /** The property source provider used in the viewer. */
-    private IPropertySourceProvider mPropertySourceProvider = null;
-
-    /**
-     * The listener to plug to the command stack of the editing domain used,
-     * to be warned when any change append.
-     */
-    private CommandStackListener mCommandStackListener = new CommandStackListener() {
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void commandStackChanged(final EventObject pEvent) {
-            // Use an asynchronous UI thread, to call the 'handleCommandStackChanged' method
-            // to react to the commands execution
-            AbstractMultiPageEditor.this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void run() {
-                    handleCommandStackChanged(((CommandStack) pEvent.getSource()).getMostRecentCommand());
-                }
-            });
-        }
-    };
-
-    /** This is the property sheet page provided by the editor. */
-    private PropertySheetPage mPropertySheetPage = null;
-
-    /** This is the tool bar displayed in the main page of the editor. */
-    private ToolBarManager mEditorToolBarManager = null;
-
-    /**
-     * This is the tree viewer displayed in the editor main page,
-     * to edit the resource content.
-     */
-    private TreeViewer mEditorTreeViewer = null;
-
-    /** This listens to the selection in the active viewer. */
-    private ISelectionChangedListener mSelectionChangedListener = null;
-
-    /** This keeps track of all the ISelectionChangedListener that are listening to this editor. */
-    private List<ISelectionChangedListener> mSelectionChangedListenersList = new ArrayList<ISelectionChangedListener>();
-
-    /** This keeps track of the selection of the editor as a whole. */
-    private ISelection mEditorSelection = StructuredSelection.EMPTY;
-
-    /**
-     * The MarkerHelper is responsible for creating workspace resource markers presented
-     * in Eclipse's Problems View.
-     */
-    private MarkerHelper mMarkerHelper = new EditUIMarkerHelper();
-
-    /**
-     * This listens to the parts activation to react when
-     * the properties view or this editor instance becomes active for example.
-     */
-    private IPartListener mPartListener = createPartListener();
-
-    /** Resources that have been removed since last activation. */
-    private List<Resource> mRemovedResourcesList = new ArrayList<Resource>();
-
-    /** Resources that have been changed since last activation from other editors or views. */
-    private List<Resource> mChangedResourcesList = new ArrayList<Resource>();
-
-    /** Resources that have been saved. */
-    private List<Resource> mSavedResourcesList = new ArrayList<Resource>();
-
-    /** Controls whether the problem indication should be updated or not. */
-    private boolean mUpdateProblemIndication = true;
-
-    /** Adapter used to analyse the resources when they are going to be loaded. */
-    private ProblemIndicationAdapter mProblemIndicationAdapter = new ProblemIndicationAdapter();
-
-    /**
-     * This listens for workspace changes to maintain the lists of changed or removed resources.
-     * This is mandatory to treat any edition conflict with other views or editors.
-     */
-    private IResourceChangeListener mWorkspaceChangeListener = new IResourceChangeListener() {
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void resourceChanged(final IResourceChangeEvent pEvent) {
-            // Get the delta identifying all the changes
-            IResourceDelta vDelta = pEvent.getDelta();
-
-            try {
-                // Build the visitor instance and launch it
-                final ResourceDeltaVisitor vVisitor = new ResourceDeltaVisitor(mEditingDomain.getResourceSet());
-                vDelta.accept(vVisitor);
-
-                // Check if any resources have been removed
-                if (!vVisitor.getRemovedResources().isEmpty()) {
-
-                    // Remove from the saved resources those which have been removed
-                    mSavedResourcesList.removeAll(vVisitor.getChangedResources());
-
-                    // Remember of the resources which have been removed
-                    mRemovedResourcesList.addAll(vVisitor.getRemovedResources());
-
-                    // Use an asynchronous UI thread to close the editor if the
-                    // resources used are deleted
-                    getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                        /**
-                         * {@inheritDoc}
-                         */
-                        @Override
-                        public void run() {
-                            if (!isDirty()) {
-                                getSite().getPage().closeEditor(AbstractMultiPageEditor.this, false);
-                            }
-                        }
-                    });
-                }
-
-                // Check if any resources have changed
-                if (!vVisitor.getChangedResources().isEmpty()) {
-
-                    // Loop on the changed resource found by the visitor to update the list
-                    // of resources managed by this editor
-                    for (Resource vResource : vVisitor.getChangedResources()) {
-
-                        // Check if the resource is considered as saved
-                        if (mSavedResourcesList.contains(vResource)) {
-                            // The resource is considered as saved by the editor, thus
-                            // the change found by the visitor is linked to the save action.
-                            // In other words, the resource is not changed from the editor point of view,
-                            // but it can now be removed from the saved resources list to prepare its next change
-                            mSavedResourcesList.remove(vResource);
-                        } else {
-                            // The resource is not considered as saved, the change
-                            // found by the visitor was a real change from an other editor
-                            // Thus add the resource in the corresponding list
-                            mChangedResourcesList.add(vResource);
-                        }
-                    }
-
-                    // Use an asynchronous UI thread to refresh the editor if the
-                    // resources used have changed
-                    getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                        /**
-                         * {@inheritDoc}
-                         */
-                        @Override
-                        public void run() {
-                            if (AbstractMultiPageEditor.this.equals(getSite().getPage().getActiveEditor())) {
-                                handleActivate();
-                            }
-                        }
-                    });
-                }
-
-            } catch (final CoreException pException) {
-                CommonUIActivator.logError("Error due to a resource change", //$NON-NLS-1$
-                    pException);
-            }
-        }
-    };
-
-    /**
-     * Default constructor.
-     */
-    public AbstractMultiPageEditor() {
-        // Call the parent constructor
-        super();
-
-        // Initialise the editing domain used by the editor
-        initializeEditingDomain();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void dispose() {
-        // Disable the problems indication update
-        mUpdateProblemIndication = false;
-
-        // Remove the listeners from the different services
-        // ... The workspace listener
-        ResourcesPlugin.getWorkspace().removeResourceChangeListener(mWorkspaceChangeListener);
-        // ... The parts listener
-        if (mPartListener != null) {
-            getSite().getPage().removePartListener(mPartListener);
-        }
-
-        // Dispose the adapter factory used in the editor
-        if (mAdapterFactory instanceof IDisposable) {
-            ((IDisposable) mAdapterFactory).dispose();
-        }
-
-        // Unregister the active editor from the action bar
-        if (this.equals(getActionBarContributor().getActiveEditor())) {
-            getActionBarContributor().setActiveEditor(null);
-        }
-
-        // Dispose the views provided by this editor
-        // ... The property sheet page
-        if (mPropertySheetPage != null) {
-            mPropertySheetPage.dispose();
-        }
-
-        super.dispose();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implementation sets the editor site to the given site, its
-     * input to the given input, and the site's selection provider this editor instance.
-     */
-    @Override
-    public void init(final IEditorSite pSite, final IEditorInput pEditorInput) {
-        // Set the editor site
-        setSite(pSite);
-
-        // Set the editor input and launch an notification for this update
-        setInputWithNotify(pEditorInput);
-
-        // Set the editor title, with the input name
-        setPartName(pEditorInput.getName());
-
-        // Set this instance as selection provider of the site
-        pSite.setSelectionProvider(this);
-
-        // If a part listener is created, register it
-        if (mPartListener != null) {
-            pSite.getPage().addPartListener(mPartListener);
-        }
-
-        // Register to listen to the problems indication
-        mProblemIndicationAdapter.addProblemIndicationListener(this);
-
-        // Finally, add a listener to the workspace resources
-        ResourcesPlugin.getWorkspace().addResourceChangeListener(
-            mWorkspaceChangeListener,
-            IResourceChangeEvent.POST_CHANGE);
-    }
-
-    /**
-     * This sets up the editing domain for the model editor.
-     */
-    protected void initializeEditingDomain() {
-        // Create the adapter factory
-        mAdapterFactory = createAdapterFactory();
-
-        // Create the command stack used to notify this editor as commands are executed
-        CommandStack vCommandStack = createCommandStack();
-
-        // Create the editing domain with the created command stack
-        mEditingDomain =
-            new AdapterFactoryEditingDomain(mAdapterFactory, vCommandStack, new HashMap<Resource, Boolean>());
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} and for supporting
-     * {@link org.eclipse.emf.edit.ui.action.CommandAction}.
-     */
-    @Override
-    public EditingDomain getEditingDomain() {
-        return mEditingDomain;
-    }
-
-    /**
-     * Create and return an instance of {@link AdapterFactory} and initialise it with the adapter factories
-     * linked to the manipulated resources.
-     *
-     * @return The created {@link ComposedAdapterFactory}
-     */
-    protected abstract AdapterFactory createAdapterFactory();
-
-    /**
-     * Create and return a default command stack, which allow to react to its changes
-     * using the {@link AbstractMultiPageEditor#handleCommandStackChanged(Command)} method.
-     *
-     * @return The command stack created
-     */
-    protected CommandStack createCommandStack() {
-        // Create the command stack that will notify this editor as commands are executed
-        BasicCommandStack vCommandStack = new BasicCommandStack();
-
-        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus
-        vCommandStack.addCommandStackListener(mCommandStackListener);
-
-        return vCommandStack;
-    }
-
-    /**
-     * This method is called when the command stack is changed, to allow the
-     * page to react. By default, this will simply select the objects
-     * affected by the command in the viewer, and refresh the provided property
-     * sheet page.
-     *
-     * @param pMostRecentCommand The most recent command
-     */
-    protected void handleCommandStackChanged(final Command pMostRecentCommand) {
-
-        // Change the editor state to dirty
-        firePropertyChange(IEditorPart.PROP_DIRTY);
-
-        if (pMostRecentCommand != null) {
-
-            // Refresh the tree content
-            // NB : As a same object can be displayed several times in the tree,
-            // the standard refresh which uses the first affected object instance
-            // is not sufficient. A full refresh is mandatory, for example to display
-            // correctly a new child on each object representation, and not only on the first one
-            if (mEditorTreeViewer != null) {
-                mEditorTreeViewer.refresh();
-            }
-
-            // Try to select the objects affected by the last command
-            setSelectionToViewer(pMostRecentCommand.getAffectedObjects());
-        }
-
-        // Refresh the property sheet page content with the new selection
-        if (mPropertySheetPage != null && !mPropertySheetPage.getControl().isDisposed()) {
-            mPropertySheetPage.refresh();
-        }
-    }
-
-    /**
-     * Handles activation of the editor or it's associated views, like the properties view.
-     */
-    protected void handleActivate() {
-
-        // Recompute the read only state of the resources
-        if (mEditingDomain.getResourceToReadOnlyMap() != null) {
-            mEditingDomain.getResourceToReadOnlyMap().clear();
-
-            // Refresh any actions that may become enabled or disabled
-            setSelection(getSelection());
-        }
-
-        if (!mRemovedResourcesList.isEmpty()) {
-            // If some resources have been removed since
-            // the last activation, ask the user if the changes
-            // must be discarded
-            if (handleDirtyConflict()) {
-                // The user has chosen to close the editor and discard the changes
-                getSite().getPage().closeEditor(AbstractMultiPageEditor.this, false);
-            } else {
-                // The user wants to keep the changes, so clear the changes collections
-                mRemovedResourcesList.clear();
-                mChangedResourcesList.clear();
-                mSavedResourcesList.clear();
-            }
-
-        } else if (!mChangedResourcesList.isEmpty()) {
-            // If some resources have been changed since
-            // the last activation, handle it
-
-            // ... First remove form the changes all what has been saved
-            mChangedResourcesList.removeAll(mSavedResourcesList);
-
-            // ... Then handle the changes
-            handleChangedResources();
-
-            // ... And finally clear the changes collections
-            mChangedResourcesList.clear();
-            mSavedResourcesList.clear();
-        }
-    }
-
-    /**
-     * Handles what to do with changed resources on activation.
-     */
-    protected void handleChangedResources() {
-        // Check if some changes have been identified since last activation
-        if (!mChangedResourcesList.isEmpty()) {
-
-            if (!isDirty() || handleDirtyConflict()) {
-                // If the editor is not dirty or if the user has chosen
-                // to discard the changes, the editor resources must be
-                // reloaded, and revalidated
-
-                if (isDirty()) {
-                    // If the editor is dirty, all the resources of the
-                    // current resources set are considered as changed
-                    mChangedResourcesList.addAll(mEditingDomain.getResourceSet().getResources());
-                }
-
-                // Dispose all the commands of the stack
-                mEditingDomain.getCommandStack().flush();
-
-                // Temporary disable the problems indication, while the
-                // diagnostics are updated
-                mUpdateProblemIndication = false;
-
-                // Loop on the resources considered as changed since the last activation
-                // to try to load them and ensure that they are valid
-                for (Resource vResource : mChangedResourcesList) {
-                    if (vResource.isLoaded()) {
-                        // If the resource is already loaded, unload it
-                        vResource.unload();
-
-                        try {
-                            // Then try to reload it
-                            vResource.load(Collections.EMPTY_MAP);
-                        } catch (final IOException pException) {
-                            // An exception as been thrown during the resource load,
-                            // remember of the resource problem
-                            mProblemIndicationAdapter.analyzeResource(vResource, pException);
-                        }
-                    }
-                }
-
-                // If the editor selection points to something which is unloaded,
-                // reset the selection
-                if (AdapterFactoryEditingDomain.isStale(mEditorSelection)) {
-                    setSelection(StructuredSelection.EMPTY);
-                }
-
-                // Finally, reactivate the problems indication
-                mUpdateProblemIndication = true;
-
-                // Finally, get the diagnostic from the problem indication adapter
-                // and update its content
-                updateProblemIndication(mProblemIndicationAdapter.getDiagnostic());
-            }
-        }
-    }
-
-    /**
-     * Shows a dialog that asks if conflicting changes should be discarded.
-     *
-     * @return <code>true</code> if the changes in the editor must be discarded
-     */
-    protected boolean handleDirtyConflict() {
-        return MessageDialog.openQuestion(
-            getSite().getShell(),
-            CommonUIActivator.getMessages().getString("AbstractMultiPageEditor.fileconflict.title"), //$NON-NLS-1$
-            CommonUIActivator.getMessages().getString("AbstractMultiPageEditor.fileconflict.message")); //$NON-NLS-1$
-    }
-
-    /**
-     * This sets the selection into whichever viewer is active.
-     * It can be the viewer in the editor or in one of its linked view.
-     *
-     * @param pSelectionCollection The collection of elements to select
-     */
-    protected void setSelectionToViewer(final Collection<?> pSelectionCollection) {
-
-        // Ensure that the collection to select is valid
-        if (pSelectionCollection != null && !pSelectionCollection.isEmpty()) {
-
-            // Use an asynchronous UI thread to update the selection
-            getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void run() {
-                    // Try to select the items in the editor content viewer
-                    if (mEditorTreeViewer != null) {
-                        mEditorTreeViewer.setSelection(new StructuredSelection(pSelectionCollection.toArray()), true);
-                    }
-                }
-            });
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This returns the viewer used to edit the resource content,
-     * as required by the {@link IViewerProvider} interface.
-     *
-     * Moreover, it's overridden to return a {@link TreeViewer} instead of a {@link Viewer}.
-     *
-     */
-    @Override
-    public TreeViewer getViewer() {
-        return mEditorTreeViewer;
-    }
-
-    /**
-     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
-     *
-     * @param pViewer The viewer for which the context menu will be created
-     */
-    protected void createContextMenuFor(final StructuredViewer pViewer) {
-        // Create the context menu manager
-        MenuManager vContextMenuManager = new MenuManager("#PopUp"); //$NON-NLS-1$
-
-        vContextMenuManager.add(new Separator("additions")); //$NON-NLS-1$
-        vContextMenuManager.setRemoveAllWhenShown(true);
-        vContextMenuManager.addMenuListener(this);
-
-        // Register the menu manager created as the viewer context menu
-        Menu vContextMenu = vContextMenuManager.createContextMenu(pViewer.getControl());
-        pViewer.getControl().setMenu(vContextMenu);
-        getSite().registerContextMenu(vContextMenuManager, new UnwrappingSelectionProvider(pViewer));
-    }
-
-    /**
-     * This creates the drag and drop support mechanisms for the given viewer.
-     *
-     * @param pViewer The viewer for which the drag and drop supports will be created
-     */
-    protected void createDragAndDropSupportFor(final StructuredViewer pViewer) {
-        // Get the drag and drop operations supported
-        int vDndOperations = getDragAndDropSupportedOperations();
-
-        Transfer[] vTransfersArray = new Transfer[] {LocalTransfer.getInstance()};
-
-        // Add the drag and drop support to the viewer
-        pViewer.addDragSupport(vDndOperations, vTransfersArray, new ViewerDragAdapter(pViewer));
-
-        pViewer.addDropSupport(vDndOperations, vTransfersArray, new EditingDomainViewerDropAdapter(
-            mEditingDomain,
-            pViewer));
-    }
-
-    /**
-     * Return an <code>int</code> corresponding to the operations
-     * supported by the drag and drop actions.
-     *
-     * By default, the drag and drop are allowed for a 'move' action only.
-     *
-     * @return The supported drag and drop operation flag
-     */
-    protected int getDragAndDropSupportedOperations() {
-        return DND.DROP_MOVE;
-    }
-
-    /**
-     * This is the method called to load the resource used as input
-     * from the editing domain's resource set.
-     *
-     * This will analyse the resource to find any problem.
-     */
-    protected void initializeInputResource() {
-        // Get the URI of the resource used as input for the editor
-        URI vResourceURI = EditUIUtil.getURI(getEditorInput());
-
-        Exception vException = null;
-        Resource vResource = null;
-
-        try {
-            // Try to load the resource through the editing domain
-            vResource = mEditingDomain.getResourceSet().getResource(vResourceURI, true);
-
-        } catch (final WrappedException pException) {
-            // An exception is thrown during the load, get the resource without loading it
-            vException = pException;
-            vResource = mEditingDomain.getResourceSet().getResource(vResourceURI, false);
-        }
-
-        // Analyse the resource and remember of the resulting diagnostic if there is any error
-        mProblemIndicationAdapter.analyzeResource(vResource, vException);
-
-        // Finally, register the problem indication adapter to the resource set adapter
-        // to listen to the events on the resources
-        mEditingDomain.getResourceSet().eAdapters().add(mProblemIndicationAdapter);
-    }
-
-    /**
-     * Find the initial input used in the viewer of this editor.
-     *
-     * @return The initial input found
-     */
-    protected abstract Object getInitialInput();
-
-    /**
-     * {@inheritDoc}
-     *
-     * This is the method used by the framework to install your own pages
-     * in the editor. This default implementation will create and add a main page,
-     * and prepare the editor to be able to display tabs if other pages are added.
-     */
-    @Override
-    public void createPages() {
-        // Creates the model from the editor input
-        initializeInputResource();
-
-        // Only creates the other pages if there is something that can be edited
-        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
-
-            // Create the main page, used to edit the resource content
-            Composite vMainPage = createMainPage();
-
-            // Then add the new page to the editor and set its title
-            final int vPageIndex = addPage(vMainPage);
-            setPageText(vPageIndex, getMainPageTitle());
-
-            // Add optionally others pages
-            createOptionalPages();
-
-            // Use and asynchronous UI thread to activate the new page
-            getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void run() {
-                    setActivePage(vPageIndex);
-                }
-            });
-
-        }
-
-        // Ensures that this editor will only display the page's tab
-        // area if there are more than one page
-        getContainer().addControlListener(new ControlAdapter() {
-
-            /** Flag used to prevent from untimely resized events. */
-            private boolean mGuard = false;
-
-            /**
-             * {@inheritDoc}
-             *
-             * Hide the tabs during the resizing.
-             */
-            @Override
-            public void controlResized(final ControlEvent pEvent) {
-                // Use a guard to prevent from untimely events as the
-                // tabs hiding will launch resized events
-                if (!mGuard) {
-                    mGuard = true;
-                    hideTabs();
-                    mGuard = false;
-                }
-            }
-        });
-
-        // Finally, get the diagnostic from the problem indication adapter
-        // and update its content
-        updateProblemIndication(mProblemIndicationAdapter.getDiagnostic());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setFocus() {
-        // Set the focus to the active page
-        getControl(getActivePage()).setFocus();
-    }
-
-    /**
-     * If there is just one page in the multi-page editor part,
-     * this hides the single tab at the bottom.
-     */
-    private void hideTabs() {
-        // Ensure that there is just one page
-        if (getPageCount() <= 1) {
-            // Reset the first page text
-            setPageText(0, StringUtils.EMPTY);
-
-            if (getContainer() instanceof CTabFolder) {
-                // Remove the tabs from the container
-                ((CTabFolder) getContainer()).setTabHeight(1);
-                Point vPoint = getContainer().getSize();
-                getContainer().setSize(vPoint.x, vPoint.y + 6);
-            }
-        }
-    }
-
-    /**
-     * If there is more than one page in the multi-page editor part,
-     * this shows the tabs at the bottom.
-     */
-    private void showTabs() {
-        // Ensure that there is more than one page
-        if (getPageCount() > 1) {
-            // Update the page text
-            setPageText(0, getMainPageTitle());
-
-            if (getContainer() instanceof CTabFolder) {
-                // Display the tabs in the container
-                ((CTabFolder) getContainer()).setTabHeight(SWT.DEFAULT);
-                Point vPoint = getContainer().getSize();
-                getContainer().setSize(vPoint.x, vPoint.y - 6);
-            }
-        }
-    }
-
-    /**
-     * Create optional pages. By default, nothing is done.
-     */
-    protected void createOptionalPages() {
-        // Nothing to do
-    }
-
-    /**
-     * Create a composite corresponding to the main page of the editor, containing a
-     * custom toolbar and a tree viewer used to edit the resource content.
-     *
-     * @return The main composite corresponding to the page created
-     */
-    protected Composite createMainPage() {
-        // Create the page main composite
-        Composite vMainComposite = new Composite(getContainer(), SWT.NONE);
-
-        // Set the main composite layout
-        GridLayout vMainLayout = new GridLayout();
-        vMainLayout.horizontalSpacing = 0;
-        vMainLayout.verticalSpacing = 0;
-        vMainLayout.marginHeight = 0;
-        vMainLayout.marginWidth = 0;
-        vMainComposite.setLayout(vMainLayout);
-        vMainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-        // Create the editor toolbar
-        createMainToolbar(vMainComposite);
-
-        // Create and initialise the tree viewer
-        createMainTreeViewer(vMainComposite);
-
-        // Create the context menu for the viewer, once the selection is updated
-        createContextMenuFor(mEditorTreeViewer);
-
-        // Create the drag and drop support for the new viewer
-        createDragAndDropSupportFor(mEditorTreeViewer);
-
-        return vMainComposite;
-    }
-
-    /**
-     * Return the title for the main page created by the method {@link AbstractMultiPageEditor#createMainPage()}.
-     *
-     * @return The main page title
-     */
-    protected abstract String getMainPageTitle();
-
-    /**
-     * Create the tool bar for the main page, in the parent composite
-     * given. This will also create the tool bar manager used to add
-     * the actions in the toolbar.
-     *
-     * @param pParent The parent composite where the toolbar must be created
-     */
-    protected void createMainToolbar(final Composite pParent) {
-        // Create the toolbar at the top of the page main composite
-        // NB : Use the flat style, to allow the display of separator bars, and don't
-        //      set any layout to avoid UI bugs (see ToolBar javadoc)
-        ToolBar vEditorToolBar = new ToolBar(pParent, SWT.FLAT | SWT.RIGHT | SWT.HORIZONTAL);
-        vEditorToolBar.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false));
-
-        // Create the toolbar manager, linked to the tool bar
-        // It will be this manager which will be used to add actions in the toolbar
-        mEditorToolBarManager = new ToolBarManager(vEditorToolBar);
-    }
-
-    /**
-     * Create the tree viewer in the main page to edit the resource content.
-     * The tree viewer is created in the parent composite given.
-     *
-     * This will also create the selection change listener and attach it to the
-     * tree viewer created.
-     *
-     * Moreover, the tree viewer is directly initialised with the needed label and
-     * content provider, and with its input.
-     *
-     * @param pParent The parent composite where the toolbar must be created
-     */
-    protected void createMainTreeViewer(final Composite pParent) {
-        // Create a tree viewer, allowing multiple selection
-        mEditorTreeViewer = new TreeViewer(pParent, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
-
-        mEditorTreeViewer.getTree().setLayout(new GridLayout());
-        mEditorTreeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-        mEditorTreeViewer.getTree().setLinesVisible(true);
-
-        // Add all the known filters to the tree viewer
-        for (AbstractFilter vFilter : getFilters()) {
-            mEditorTreeViewer.addFilter(vFilter);
-        }
-
-        // Create the selection changed listener on the new tree viewer
-        if (mSelectionChangedListener == null) {
-            mSelectionChangedListener = new ISelectionChangedListener() {
-
-                /**
-                 * {@inheritDoc}
-                 *
-                 * This just notifies those things that are affected by the section.
-                 */
-                @Override
-                public void selectionChanged(final SelectionChangedEvent pSelectionChangedEvent) {
-                    setSelection(pSelectionChangedEvent.getSelection());
-                }
-            };
-        }
-
-        // Start listening to the new tree viewer
-        mEditorTreeViewer.addSelectionChangedListener(mSelectionChangedListener);
-
-        // Create the required column for the tree viewer
-        // NB : This column will use the label provider which will be set the
-        // the tree viewer hereafter
-        int vFirstColumnSize = FIRST_COLUMN_DEFAULT_SIZE;
-        if (1 == getFinalColumnNumber()) {
-            // There will be only one column, take a maximum size
-            vFirstColumnSize = FIRST_COLUMN_DEFAULT_SIZE * 2;
-        }
-        createMainTreeViewerRequiredColumn(vFirstColumnSize);
-
-        // Set the behaviour of the tree viewer, to customise how the elements are displayed
-        // and what is the content of the tree
-        mEditorTreeViewer.setContentProvider(createContentProvider());
-        mEditorTreeViewer.setLabelProvider(createLabelProvider());
-
-        // Create the optional columns
-        // NB : These columns will use their own label provider,
-        // defined from the property that they will display
-        createMainTreeViewerOptionalColumns();
-
-        // Once all the columns are added, ensure that the header will be displayed
-        mEditorTreeViewer.getTree().setHeaderVisible(true);
-
-        // Set the viewer input
-        mEditorTreeViewer.setInput(getInitialInput());
-
-        // Then expand the first level if possible to don't display
-        // only the root element by default
-        mEditorTreeViewer.expandToLevel(2);
-    }
-
-    /**
-     * Create the first required column in the tree viewer of the main page.
-     * This column will use the tree viewer label provider.
-     *
-     * In the default implementation, the required column is used to display
-     * the value of the 'name' property, for all the elements.
-     *
-     * @param pInitialSize The initial width of column
-     */
-    protected void createMainTreeViewerRequiredColumn(final int pInitialSize) {
-        // Create the required column, to display the object name
-        createMainTreeViewerColumn(
-            CommonUIActivator.getMessages().getString("AbstractMultiPageEditor.requiredcolumn.header"), //$NON-NLS-1$
-            SWT.LEFT,
-            pInitialSize,
-            UMLPackage.Literals.NAMED_ELEMENT__NAME.getName());
-    }
-
-    /**
-     * Create the others columns in the tree viewer of the main page.
-     * Theses columns will use their own label provider.
-     *
-     * In the default implementation, no column is added.
-     */
-    protected void createMainTreeViewerOptionalColumns() {
-        // Nothing to do by default
-    }
-
-    /**
-     * Return the property source provider to associate to the viewer.
-     * If no property source provider is known, create a default one.
-     *
-     * @return Return the property source provider to associate to the viewer
-     */
-    protected IPropertySourceProvider getPropertySourceProvider() {
-        if (mPropertySourceProvider == null) {
-            mPropertySourceProvider = createPropertySourceProvider();
-        }
-        return mPropertySourceProvider;
-    }
-
-    /**
-     * Create and return a default property source provider based on the adapter factory.
-     *
-     * @return The created property source provider
-     */
-    protected IPropertySourceProvider createPropertySourceProvider() {
-        return new PropertySourceProvider(getAdapterFactory());
-    }
-
-    /**
-     * Create a new column in the tree viewer of the main page.
-     * This column will be initialised with the given name, width and alignment.
-     *
-     * Moreover, if a property Id is given, the column content and behaviour will
-     * be adapted to work on this property.
-     *
-     * @param pColumnName The name of the column
-     * @param pAlignment The column alignment
-     * @param pColumnWidth The column width
-     * @param pPropertyID The ID of the property that this column will display
-     * @return The column created
-     */
-    protected TreeViewerColumn createMainTreeViewerColumn(
-        final String pColumnName,
-        final int pAlignment,
-        final int pColumnWidth,
-        final String pPropertyID) {
-
-        PropertyColumnLabelProvider vLabelProvider = null;
-
-        if (pPropertyID != null) {
-            // Build the label provider, based on the property whose
-            // id is given in parameter
-            vLabelProvider = new PropertyColumnLabelProvider(getPropertySourceProvider(), pPropertyID);
-        }
-
-        // Finally, create the new column
-        // NB : Doesn't set an editing support : the main column is voluntary never editable
-        final TreeViewerColumn vTreeViewerColumn =
-            TreeViewerUtils.createViewerColumn(getViewer(), pColumnName, pAlignment, pColumnWidth, vLabelProvider);
-
-        return vTreeViewerColumn;
-    }
-
-    /**
-     * Create and return a label provider based on the adapter factory
-     * to be able to find the texts and images to display in the viewer.
-     *
-     * @return The created label provider
-     */
-    protected IBaseLabelProvider createLabelProvider() {
-        // Create a custom label provider which is able to
-        // manage the tree viewer with columns
-        IBaseLabelProvider vLabelProvider = new AdapterFactoryColumnLabelProvider(getAdapterFactory());
-
-        return vLabelProvider;
-    }
-
-    /**
-     * Create and return a default content provider.
-     * This will manage directly different kinds of input, like a resource, or
-     * an array, to display their content directly in the viewer.
-     *
-     * @return The created content provider
-     */
-    protected IContentProvider createContentProvider() {
-        return new ArrayInputPropertySourceProvider(getAdapterFactory());
-    }
-
-    /**
-     * Create a new part listener specific to the behaviour of this instance.
-     *
-     * The default implementation will react to the activation of this editor instance
-     * or to the activation of the property sheet page provided.
-     *
-     * @return The part listener created
-     */
-    protected IPartListener createPartListener() {
-        return new PartListenerAdapter() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void partActivated(final IWorkbenchPart pPart) {
-                // Check what is the part activated ...
-                if (pPart instanceof PropertySheet) {
-                    // ... The properties view is activated, check if the page
-                    // activated is the one provided by this editor
-                    if (((PropertySheet) pPart).getCurrentPage().equals(mPropertySheetPage)) {
-                        // Activate the actions linked to this editor instance
-                        getActionBarContributor().setActiveEditor(AbstractMultiPageEditor.this);
-
-                        // React to the associated page activation
-                        handleActivate();
-                    }
-
-                } else if (pPart.equals(AbstractMultiPageEditor.this)) {
-                    // ... The current editor instance is activated
-
-                    // Activate the actions linked to this editor instance
-                    getActionBarContributor().setActiveEditor(AbstractMultiPageEditor.this);
-
-                    // React to the editor instance activation
-                    handleActivate();
-                }
-            }
-        };
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This is how the framework determines which interfaces we implement.
-     */
-    @SuppressWarnings("rawtypes")
-    @Override
-    public Object getAdapter(final Class pKeyClass) {
-        Object vAdapter = null;
-
-        if (pKeyClass.equals(IPropertySheetPage.class)) {
-            // If the expecting result is a properties page, provide
-            // the page corresponding
-            vAdapter = getPropertySheetPage();
-
-        } else if (pKeyClass.equals(IGotoMarker.class)) {
-            // If the expecting result is a marker provider
-            // return the editor instance
-            vAdapter = this;
-
-        } else {
-            // For all the others cases, call the parent method to find an adapter
-            vAdapter = super.getAdapter(pKeyClass);
-        }
-
-        return vAdapter;
-    }
-
-    /**
-     * This accesses a cached version of the property sheet.
-     * If the page doesn't exist, it can be created.
-     *
-     * @return The property sheet page provided by the editor
-     */
-    protected IPropertySheetPage getPropertySheetPage() {
-        // Check if the page already exists
-        if (mPropertySheetPage == null) {
-
-            // Create a new property sheet page, which
-            // will use the editor editing domain
-            mPropertySheetPage = new ExtendedPropertySheetPage(mEditingDomain) {
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void setSelectionToViewer(final List<?> pSelection) {
-                    // Set the selection to the editor viewer
-                    AbstractMultiPageEditor.this.setSelectionToViewer(pSelection);
-                    AbstractMultiPageEditor.this.setFocus();
-                }
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void setActionBars(final IActionBars pActionBars) {
-                    // Call the parent method to prepare the standard actions
-                    super.setActionBars(pActionBars);
-
-                    // Add the global actions (undo, redo, etc.)
-                    getActionBarContributor().shareGlobalActions(this, pActionBars);
-                }
-            };
-
-            // Set the property source provider to the property sheet page,
-            // using the editor adapter factory
-            mPropertySheetPage.setPropertySourceProvider(new PropertySourceProvider(mAdapterFactory));
-        }
-
-        return mPropertySheetPage;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This simply tests the command stack to known if there is unsaved changes.
-     */
-    @Override
-    public boolean isDirty() {
-        return ((BasicCommandStack) mEditingDomain.getCommandStack()).isSaveNeeded();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This simply saves the resources of the managed editing domain, which are not opened in read-only.
-     */
-    @Override
-    public void doSave(final IProgressMonitor pProgressMonitor) {
-        // Save only resources that have actually changed
-        final Map<Object, Object> vSaveOptions = new HashMap<Object, Object>();
-        vSaveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
-
-        // Do the work within an operation because this is a long running activity that modifies the workbench
-        WorkspaceModifyOperation vWorkspaceModifyOperation = new WorkspaceModifyOperation() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void execute(final IProgressMonitor pMonitor) {
-                // Loop on the resources to save them to the file system
-                boolean vIsFirstResource = true;
-                for (Resource vResource : mEditingDomain.getResourceSet().getResources()) {
-                    // Check if the resource is not in read only mode, and if the resource content
-                    // is not empty and is persisted. Moreover, the first resource not in read only
-                    // is always saved
-                    if (!mEditingDomain.isReadOnly(vResource)
-                        && (vIsFirstResource || !vResource.getContents().isEmpty() || isPersisted(vResource))) {
-
-                        try {
-                            // Get the time when the resource was previously saved or loaded
-                            long vTimeStamp = vResource.getTimeStamp();
-
-                            // Try to save the resource
-                            vResource.save(vSaveOptions);
-
-                            // Check if the resource time stamp changed, this means that the save
-                            // was really effective, and thus remember the resource in the
-                            // saved resources collection
-                            if (vResource.getTimeStamp() != vTimeStamp) {
-                                mSavedResourcesList.add(vResource);
-                            }
-
-                        } catch (final IOException pException) {
-                            // An error occurred during the save, analyse the resource and add the
-                            // result to the diagnostics map
-                            mProblemIndicationAdapter.analyzeResource(vResource, pException);
-                        }
-
-                        // Remember that a resource has been saved, the followings won't be the first one
-                        vIsFirstResource = false;
-                    }
-                }
-            }
-        };
-
-        // Temporary disable the problems update while the save will be performed
-        mUpdateProblemIndication = false;
-
-        // Run the save action, and show progress
-        try {
-            new ProgressMonitorDialog(getSite().getShell()).run(true, false, vWorkspaceModifyOperation);
-
-            // Refresh the dirty state once the save is done
-            ((BasicCommandStack) mEditingDomain.getCommandStack()).saveIsDone();
-            firePropertyChange(IEditorPart.PROP_DIRTY);
-
-        } catch (final InvocationTargetException pException) {
-            CommonUIActivator.logError("Error during the save of the resource", pException); //$NON-NLS-1$
-        } catch (final InterruptedException pException) {
-            CommonUIActivator.logError("Save of the resource interrupted", pException); //$NON-NLS-1$
-        }
-
-        // Re-enable the problems update and do it
-        mUpdateProblemIndication = true;
-
-        // Finally, get the diagnostic from the problem indication adapter
-        // and update its content
-        updateProblemIndication(mProblemIndicationAdapter.getDiagnostic());
-    }
-
-    /**
-     * This returns whether something has been persisted to the URI of the specified resource.
-     * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
-     *
-     * This means that if a file already exists at the resource URI location, the resource is considered as persisted.
-     *
-     * @param pResource The resource to check
-     * @return <code>true</code> if the resource is persisted, this means if a file exists at the resource URI location
-     */
-    private boolean isPersisted(final Resource pResource) {
-        boolean vIsPersisted = false;
-
-        InputStream vResourceStream = null;
-        try {
-            // Try to open a stream to the resource URI location
-            vResourceStream = mEditingDomain.getResourceSet().getURIConverter().createInputStream(pResource.getURI());
-            if (vResourceStream != null) {
-                // The stream can be opened, the resource is thus rightly persisted to a file
-                vIsPersisted = true;
-            }
-
-        } catch (final IOException pException) {
-            // A stream can't be opened to the resource URI location, just
-            // set the flag value but don't log anything
-            vIsPersisted = false;
-
-        } finally {
-            // Close the stream
-            if (vResourceStream != null) {
-                try {
-                    vResourceStream.close();
-                } catch (final IOException pException) {
-                    CommonUIActivator.logError("Error during the close of a stream", //$NON-NLS-1$
-                        pException);
-                }
-            }
-        }
-
-        return vIsPersisted;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This always returns false because it is not currently supported.
-     */
-    @Override
-    public boolean isSaveAsAllowed() {
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Not implemented for this editor.
-     */
-    @Override
-    public void doSaveAs() {
-        // Not implemented
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void gotoMarker(final IMarker pMarker) {
-        // Get the objects pointed by the given marker
-        List<?> vTargetObjects = mMarkerHelper.getTargetObjects(mEditingDomain, pMarker);
-
-        if (!vTargetObjects.isEmpty()) {
-            // Update the selection to focus on the objects corresponding to the marker
-            setSelectionToViewer(vTargetObjects);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addSelectionChangedListener(final ISelectionChangedListener pListener) {
-        mSelectionChangedListenersList.add(pListener);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void removeSelectionChangedListener(final ISelectionChangedListener pListener) {
-        mSelectionChangedListenersList.remove(pListener);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ISelection getSelection() {
-        return mEditorSelection;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Calling this result will notify the listeners, and update the status line content.
-     */
-    @Override
-    public void setSelection(final ISelection pSelection) {
-        // Update the selection
-        mEditorSelection = pSelection;
-
-        // Warn all the registered listeners
-        for (ISelectionChangedListener vListener : mSelectionChangedListenersList) {
-            vListener.selectionChanged(new SelectionChangedEvent(this, pSelection));
-        }
-
-        // Update the status line content
-        updateStatusLineManager(pSelection);
-    }
-
-    /**
-     * Update the status line manager according to the selection given in parameter.
-     *
-     * @param pSelection The selection used to build the status line message
-     */
-    protected void updateStatusLineManager(final ISelection pSelection) {
-
-        // Find the status line manager from the action bar
-        IStatusLineManager vStatusLineManager = getActionBars().getStatusLineManager();
-
-        if (vStatusLineManager != null) {
-            String vMessage = StringUtils.EMPTY;
-
-            if (pSelection instanceof IStructuredSelection) {
-                // Cast the selection
-                IStructuredSelection vStructuredSelection = (IStructuredSelection) pSelection;
-                int vSelectionSize = vStructuredSelection.size();
-
-                // Adapt the status message according to the selection size
-                switch (vStructuredSelection.size()) {
-                    case 0:
-                        vMessage =
-                            CommonUIActivator.getMessages().getString(
-                                "AbstractMultiPageEditor.statusline.noobjectselected"); //$NON-NLS-1$
-                        break;
-
-                    case 1:
-                        // Get the text corresponding to the selected object
-                        String vText =
-                            new AdapterFactoryItemDelegator(mAdapterFactory).getText(vStructuredSelection
-                                .getFirstElement());
-
-                        vMessage =
-                            CommonUIActivator.getMessages().getString(
-                                "AbstractMultiPageEditor.statusline.singleobjectselected", //$NON-NLS-1$
-                                new Object[] {vText});
-                        break;
-
-                    default:
-                        vMessage =
-                            CommonUIActivator.getMessages().getString(
-                                "AbstractMultiPageEditor.statusline.multiobjectsselected", //$NON-NLS-1$
-                                new Object[] {vSelectionSize});
-                        break;
-                }
-            }
-
-            // Update the status line message
-            vStatusLineManager.setMessage(vMessage);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * This implementation will notify the action bar contributor that the menu is about to be shown.
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        ((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(pMenuManager);
-    }
-
-    /**
-     * @return The action bar contributor managed by this editor site.
-     */
-    protected EditingDomainActionBarContributor getActionBarContributor() {
-        return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor();
-    }
-
-    /**
-     * @return The action bar managed by the action bar contributor of this editor.
-     */
-    protected IActionBars getActionBars() {
-        return getActionBarContributor().getActionBars();
-    }
-
-    /**
-     * @return The adapter factory used in this editor.
-     */
-    protected AdapterFactory getAdapterFactory() {
-        return mAdapterFactory;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ToolBarManager getToolBarManager() {
-        return mEditorToolBarManager;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Updates the problems indication with the information described in the specified diagnostic.
-     */
-    @Override
-    public void updateProblemIndication(final Diagnostic pDiagnostic) {
-        // Ensure that the problems indication can be updated
-        if (mUpdateProblemIndication) {
-
-            // Use and asynchronous UI thread to update the problems indication if needed
-            // This can create a second page for the problems
-            getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void run() {
-
-                    // Get the last editor page index
-                    int vLastEditorPageIndex = getPageCount() - 1;
-
-                    // Check if the last editor page is a already 'Problems' page
-                    if (vLastEditorPageIndex >= 0 && getEditor(vLastEditorPageIndex) instanceof ProblemEditorPart) {
-                        // The problem page is ready, update its content with the root diagnostic,
-                        // and if it corresponds to an error, activate the problem page
-                        ((ProblemEditorPart) getEditor(vLastEditorPageIndex)).setDiagnostic(pDiagnostic);
-                        if (pDiagnostic.getSeverity() != Diagnostic.OK) {
-                            setActivePage(vLastEditorPageIndex);
-                        }
-
-                    } else if (pDiagnostic.getSeverity() != Diagnostic.OK) {
-                        // The problem page is not already created, so do it
-                        ProblemEditorPart vProblemEditorPart = new ProblemEditorPart();
-
-                        // Update the problem page content with the root diagnostic
-                        vProblemEditorPart.setDiagnostic(pDiagnostic);
-                        vProblemEditorPart.setMarkerHelper(mMarkerHelper);
-
-                        try {
-                            // Once that the problem page has been created, add it to the editor,
-                            // activate it and display the tabs to allow the user to navigate between
-                            // the different pages
-                            addPage(++vLastEditorPageIndex, vProblemEditorPart, getEditorInput());
-                            setPageText(vLastEditorPageIndex, vProblemEditorPart.getPartName());
-                            setActivePage(vLastEditorPageIndex);
-                            showTabs();
-
-                        } catch (final PartInitException pException) {
-                            CommonUIActivator.logError("Error during the problem page creation", //$NON-NLS-1$
-                                pException);
-                        }
-                    }
-
-                    // Finally, manage the markers
-                    if (mMarkerHelper.hasMarkers(mEditingDomain.getResourceSet())) {
-                        mMarkerHelper.deleteMarkers(mEditingDomain.getResourceSet());
-                        if (pDiagnostic.getSeverity() != Diagnostic.OK) {
-                            try {
-                                mMarkerHelper.createMarkers(pDiagnostic);
-                            } catch (final CoreException pException) {
-                                CommonUIActivator.logError("Error during the markers creation", //$NON-NLS-1$
-                                    pException);
-                            }
-                        }
-                    }
-
-                }
-            });
-        }
-    }
-
-    /**
-     * Return the filters that will be associated to the viewer during its creation.
-     * By default, this returns a table of filters containing a new {@link NamePropertyFilter} filter.
-     *
-     * @return The table of filters to associate to the viewer
-     */
-    protected AbstractFilter[] getFilters() {
-        return new AbstractFilter[] {new NamePropertyFilter()};
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * For a multi page editor, the filter is applied on the
-     * current viewer.
-     */
-    @Override
-    public void filterTextChanged(final String pNewFilterText) {
-        TreeViewer vViewer = getViewer();
-
-        if (vViewer != null) {
-            // Loop on the registered filters to apply the new text
-            for (final ViewerFilter vViewerFilter : vViewer.getFilters()) {
-                if (vViewerFilter instanceof AbstractFilter) {
-                    ((AbstractFilter) vViewerFilter).setFilter(pNewFilterText);
-                }
-            }
-
-            // Finally refresh the viewer content
-            refreshViewer();
-        }
-    }
-
-    /**
-     * Refresh the viewer.
-     */
-    protected void refreshViewer() {
-        // Use an asynchronous UI thread to refresh the viewer
-        getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                TreeViewer vViewer = getViewer();
-
-                // Ensure that the viewer is still available
-                if (vViewer != null && !vViewer.getControl().isDisposed()) {
-                    synchronized (vViewer) {
-                        vViewer.refresh();
-                    }
-                }
-            }
-        });
-    }
-
-    /**
-     * @return The final number of column, including the first one. This is used to calculate a correct size even for
-     * first column
-     */
-    protected int getFinalColumnNumber() {
-        return 1;
-    }
-
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/ArchiveActionBarContributor.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/ArchiveActionBarContributor.java
deleted file mode 100644
index 7f74e21..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/ArchiveActionBarContributor.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.editor;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.UnexecutableCommand;
-import org.eclipse.emf.edit.ui.action.CopyAction;
-import org.eclipse.emf.edit.ui.action.CutAction;
-import org.eclipse.emf.edit.ui.action.PasteAction;
-import org.eclipse.emf.edit.ui.action.RedoAction;
-import org.eclipse.emf.edit.ui.action.UndoAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-import org.polarsys.esf.core.common.ui.actions.ActionBarContributorUtils;
-
-/**
- * This is the action bar contributor used to edit the archived files.
- * 
- * This contributor avoid any action which can modify the archive content.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class ArchiveActionBarContributor
-    extends EmptyActionBarContributor {
-
-    /**
-     * Default constructor.
-     */
-    public ArchiveActionBarContributor() {
-        // Call the parent constructor
-        super();
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Overridden to hide all the edit actions like undo, redo, cut, copy, paste, etc.
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        // Add the standard addition marker at the beginning if needed
-        if ((style & ADDITIONS_LAST_STYLE) == 0) {
-            pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_SEPARATOR_ID));
-        }
-
-        // Add the standard edit marker but not all the related actions
-        pMenuManager.add(new Separator(ActionBarContributorUtils.EDIT_SEPARATOR_ID));
-
-        // Add the standard addition marker at the end if needed
-        if ((style & ADDITIONS_LAST_STYLE) != 0) {
-            pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_SEPARATOR_ID));
-        }
-
-        // Add the standard additions-end marker
-        pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_END_SEPARATOR_ID));
-
-        // Finally add all the global actions
-        addGlobalActions(pMenuManager);
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Avoid the copy action.
-     */
-    @Override
-    protected CopyAction createCopyAction() {
-
-        CopyAction vAction = new CopyAction() {
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-        
-        return vAction;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Avoid the paste action.
-     */
-    @Override
-    protected PasteAction createPasteAction() {
-        
-        PasteAction vAction = new PasteAction() {
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-        
-        return vAction;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Avoid the cut action.
-     */
-    @Override
-    protected CutAction createCutAction() {
-        
-        CutAction vAction = new CutAction() {
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-        
-        return vAction;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Avoid the undo action.
-     */
-    @Override
-    protected UndoAction createUndoAction() {
-        
-        // Create the action and disable it
-        UndoAction vAction = super.createUndoAction();
-        vAction.setEnabled(false);
-        
-        return vAction;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Avoid the redo action.
-     */
-    @Override
-    protected RedoAction createRedoAction() {
-        
-        // Create the action and disable it
-        RedoAction vAction = super.createRedoAction();
-        vAction.setEnabled(false);
-        
-        return vAction;
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/EmptyActionBarContributor.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/EmptyActionBarContributor.java
deleted file mode 100644
index 9616e09..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/editor/EmptyActionBarContributor.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.editor;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.UnexecutableCommand;
-import org.eclipse.emf.edit.ui.action.DeleteAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.actions.ActionFactory;
-import org.polarsys.esf.core.common.ui.actions.ActionBarContributorUtils;
-
-/**
- * This is the empty action bar contributor.
- * It doesn't allow to add or delete elements from the input model.
- * 
- * It's primary used is for the propagation tree editor, and overridden
- * for the archived file editors.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class EmptyActionBarContributor
-    extends AbstractActionBarContributor {
-
-    /**
-     * Default constructor.
-     */
-    public EmptyActionBarContributor() {
-        // Call the parent constructor
-        super();
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Overridden to avoid the creation of new elements in the model.
-     * This implementation disable the creation of action in the context menu
-     * and in the editor tool bar.
-     */
-    @Override
-    protected void addCreateSelectChildActions(final ISelection pSelection) {
-        // Do nothing voluntary
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Overridden to ensure there is no delete action possible.
-     */
-    @Override
-    protected DeleteAction createDeleteAction() {
-
-        DeleteAction vAction = new DeleteAction(removeAllReferencesOnDelete()) {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public Command createCommand(final Collection<?> pSelection) {
-                return UnexecutableCommand.INSTANCE;
-            }
-        };
-
-        vAction.setId(ActionFactory.DELETE.getId());
-
-        return vAction;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Overridden to hide all the edit actions like undo, redo, cut, copy, paste, etc.
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        // Add the standard addition marker at the beginning if needed
-        if ((style & ADDITIONS_LAST_STYLE) == 0) {
-            pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_SEPARATOR_ID));
-        }
-
-        // Add the standard edit marker but not all the related actions
-        pMenuManager.add(new Separator(ActionBarContributorUtils.EDIT_SEPARATOR_ID));
-
-        // Add the standard addition marker at the end if needed
-        if ((style & ADDITIONS_LAST_STYLE) != 0) {
-            pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_SEPARATOR_ID));
-        }
-
-        // Add the standard additions-end marker
-        pMenuManager.add(new Separator(ActionBarContributorUtils.ADDITIONS_END_SEPARATOR_ID));
-
-        // Finally add all the global actions
-        addGlobalActions(pMenuManager);
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractColumnViewerPage.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractColumnViewerPage.java
deleted file mode 100644
index f6da1a4..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractColumnViewerPage.java
+++ /dev/null
@@ -1,533 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.view;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.ViewerColumn;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.ListSelectionDialog;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-
-/**
- * Abstract base of all the Pages to use in a PageBookView,
- * and which includes a tree.
- *
- * This implementation doesn't manage the columns in the tree,
- * but it inherits of all the standard mechanisms like the filters, the editing domain mechanisms, etc.
- *
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractColumnViewerPage
-    extends AbstractPage {
-
-    /**
-     * Name of the required column.
-     * The required column is mandatory and can't be hidden.
-     */
-    private String mRequiredColumnName = null;
-
-    /** Arrays of the optional columns names, which can be displayed in the tree view. */
-    private String[] mColumnsNamesArray = null;
-
-    /**
-     * Default constructor, which allows to specify if the viewer must be read only or not.
-     *
-     * @param pReadOnlyMode <code>true</code> if this view is in read only mode, <code>false</code> otherwise
-     */
-    public AbstractColumnViewerPage(final boolean pReadOnlyMode) {
-        // Call the advanced constructor with default values
-        this(StringUtils.EMPTY, new String[0], pReadOnlyMode);
-    }
-
-    /**
-     * Advanced constructor which takes the name of the required column, an array with the optional columns name,
-     * and a boolean which specifies if the viewer must be in read only mode or not.
-     *
-     * The required column will mandatory be visible and can't be hidden.
-     *
-     * @param pRequiredColumnName The name of the required column name
-     * @param pColumnsName The array of optional columns name. This list must not contain the required column name
-     * @param pReadOnlyMode <code>true</code> if this view is in read only mode, <code>false</code> otherwise
-     */
-    public AbstractColumnViewerPage(
-        final String pRequiredColumnName,
-        final String[] pColumnsName,
-        final boolean pReadOnlyMode) {
-
-        // Call the parent constructor
-        super(pReadOnlyMode);
-
-        // Remember the given columns names
-        mRequiredColumnName = pRequiredColumnName;
-        mColumnsNamesArray = pColumnsName.clone();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void setViewerProviders() {
-        // We call the createRequiredViewerColumn() and then we associate
-        // the providers to associate the default label provider to the required column
-        createRequiredViewerColumn();
-        super.setViewerProviders();
-        createInitialViewerColumns();
-    }
-
-    /**
-     * Create the required column in the viewer.
-     * @return The created column
-     */
-    protected abstract ViewerColumn createRequiredViewerColumn();
-
-    /**
-     * Create the initial viewer columns, from the optional ones, which must be initially displayed.
-     * By default, no optional columns are initially displayed.
-     */
-    protected void createInitialViewerColumns() {
-        // Nothing to do
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected abstract ColumnViewer createViewer(final Composite pParent);
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ColumnViewer getViewer() {
-        return (ColumnViewer) super.getViewer();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Overridden to add the actions for the columns, the headers and the lines visibility.
-     */
-    @Override
-    protected void addMenuBarActions() {
-        addColumnsVisibilityAction();
-        addMenuBarSeparator();
-        addHideHeaderAction();
-        addHideLinesAction();
-        super.addMenuBarActions();
-    }
-
-    /**
-     * Add the columns visibility action to the menu bar.
-     */
-    protected void addColumnsVisibilityAction() {
-        addMenuBarAction(createColumnsVisibilityAction());
-    }
-
-    /**
-     * Add the hide header action to the menu bar.
-     */
-    protected void addHideHeaderAction() {
-        addMenuBarAction(createHideHeaderAction(isViewerHeaderInitiallyVisible()));
-    }
-
-    /**
-     * Add the hide lines action to the menu bar.
-     */
-    protected void addHideLinesAction() {
-        addMenuBarAction(createHideLinesAction(isViewerLinesInitiallyVisible()));
-    }
-
-    /**
-     * Return <code>true</code>if the header of the viewer is initially visible.
-     * @return <code>true</code>if the header of the viewer is initially visible.
-     */
-    protected abstract boolean isViewerHeaderInitiallyVisible();
-
-    /**
-     * Return <code>true</code>if the lines of the viewer are initially visible.
-     * @return <code>true</code>if the lines of the viewer are initially visible.
-     */
-    protected abstract boolean isViewerLinesInitiallyVisible();
-
-    /**
-     * Create and return the columns visibility action
-     * linked to the managed viewer.
-     *
-     * @return A new instance of the column visibility action
-     */
-    protected IAction createColumnsVisibilityAction() {
-        return new ColumnsVisibilityAction();
-    }
-
-    /**
-     * Create and return the hide lines action.
-     *
-     * @param pVisible <code>true</code> if the lines are visible by default, <code>false</code> otherwise
-     * @return A new instance of the hide lines action
-     */
-    protected IAction createHideLinesAction(final boolean pVisible) {
-        // Create the action, with the right label and display it as a checkbox
-        final Action vHideLinesAction = new Action(
-            CommonUIActivator.getMessages().getString("AbstractColumnViewerPage.action.showlines"), //$NON-NLS-1$
-            IAction.AS_CHECK_BOX) {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                AbstractColumnViewerPage.this.setLinesVisible(isChecked());
-            }
-        };
-
-        // Set the initial state to the action
-        vHideLinesAction.setChecked(pVisible);
-
-        return vHideLinesAction;
-    }
-
-    /**
-     * Create and return the hide header action.
-     *
-     * @param pVisible <code>true</code> if the header is visible by default, <code>false</code> otherwise
-     * @return A new instance of the hide header action
-     */
-    protected IAction createHideHeaderAction(final boolean pVisible) {
-        // Create the action, with the right label and display it as a checkbox
-        final Action vHideHeaderAction = new Action(
-            CommonUIActivator.getMessages().getString("AbstractColumnViewerPage.action.showheaders"), //$NON-NLS-1$
-            IAction.AS_CHECK_BOX) {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                AbstractColumnViewerPage.this.setHeaderVisible(isChecked());
-            }
-        };
-
-        // Set the initial state to the action
-        vHideHeaderAction.setChecked(pVisible);
-
-        return vHideHeaderAction;
-    }
-
-    /**
-     * Set the visibility of the lines in the viewer.
-     *
-     * @param pVisible <code>true</code> if the lines must be visible, <code>false</code> otherwise
-     */
-    public abstract void setLinesVisible(final boolean pVisible);
-
-    /**
-     * Set the visibility of the header in the viewer.
-     *
-     * @param pVisible <code>true</code> if the header must be visible, <code>false</code> otherwise
-     */
-    public abstract void setHeaderVisible(final boolean pVisible);
-
-    /**
-     * Create a new column at the end of the viewer, with the name given in parameter.
-     *
-     * @param pColumnName The name of the column
-     * @return The created tree viewer column, or null if the concrete implementation of this page doesn't support
-     *         the column viewers
-     */
-    protected abstract ViewerColumn createViewerColumn(final String pColumnName);
-
-    /**
-     * Create a new column in the viewer, at the specified location, with the name given in parameter.
-     *
-     * @param pColumnName The name of the column
-     * @param pIndex The location index where the column must be created in the viewer
-     * @return The created tree viewer column, or null if the concrete implementation of this page doesn't support
-     *         the column viewers
-     */
-    protected abstract ViewerColumn createViewerColumn(final String pColumnName, final int pIndex);
-
-    /**
-     * Create a new column at the end of the viewer, with the name given in parameter, and associate to it a
-     * label provider also given in parameter.
-     *
-     * @param pColumnName The name of the column
-     * @param pColumnLabelProvider The column label provider to use in the column
-     *
-     * @return The created tree viewer column, or null if the concrete implementation of this page doesn't support
-     *         the column viewers
-     */
-    protected abstract ViewerColumn createViewerColumn(
-        final String pColumnName,
-        final ColumnLabelProvider pColumnLabelProvider);
-
-    /**
-     * Create a new column at the end of the viewer, with the name given in parameter, and associate to it a
-     * label provider and an editing support also given in parameter.
-     *
-     * @param pColumnName The name of the column
-     * @param pColumnLabelProvider The column label provider to use in the column
-     * @param pEditingSupport The editing support to use in the column
-     *
-     * @return The created tree viewer column, or null if the concrete implementation of this page doesn't support
-     *         the column viewers
-     */
-    protected abstract ViewerColumn createViewerColumn(
-        final String pColumnName,
-        final ColumnLabelProvider pColumnLabelProvider,
-        final EditingSupport pEditingSupport);
-
-    /**
-     * Create a new column at the end of the viewer, with the name given in parameter, and associate to it a
-     * label provider and an editing support according to the property whose ID is given in parameter.
-     *
-     * @param pColumnName The name of the column
-     * @param pPropertyID The id of the property to display in the column
-     *
-     * @return The created tree viewer column, or null if the concrete implementation of this page doesn't support
-     *         the column viewers
-     */
-    protected abstract ViewerColumn createViewerColumn(final String pColumnName, final String pPropertyID);
-
-    /**
-     * Show a list of columns whose name is given in parameter.
-     *
-     * @param pColumnsNamesArray The array of the columns names to display.
-     */
-    protected void showColumns(final String[] pColumnsNamesArray) {
-        boolean vRefreshNeeded = false;
-
-        if (pColumnsNamesArray != null) {
-            // Loop on the names to find and display the corresponding column
-            for (String vColumnName : pColumnsNamesArray) {
-                // Check if the column in not already visible
-                if (!isColumnVisible(vColumnName)) {
-                    // Show the column and remember that a refresh is needed on the tree
-                    vRefreshNeeded = showColumn(vColumnName) || vRefreshNeeded;
-                }
-            }
-
-            // Refresh the tree content if at least one new column is displayed
-            if (vRefreshNeeded) {
-                getViewer().refresh();
-            }
-        }
-    }
-
-    /**
-     * Hide a list of columns, whose name is given in parameter.
-     *
-     * @param pColumnsNamesArray The array of the columns names to hide.
-     */
-    protected void hideColumns(final String[] pColumnsNamesArray) {
-        if (pColumnsNamesArray != null) {
-            // Loop on the names to find and hide the corresponding column
-            for (final String vColumnName : pColumnsNamesArray) {
-                // Check if the column is really visible and then hide it
-                if (isColumnVisible(vColumnName)) {
-                    hideColumn(vColumnName);
-                }
-            }
-        }
-    }
-
-    /**
-     * Show a column, whose name is given in parameter.
-     * The column may be created if needed.
-     *
-     * @param pColumnName The column name
-     * @return <code>true</code> if a column was found and shown, <code>false</code> otherwise
-     */
-    protected abstract boolean showColumn(final String pColumnName);
-
-    /**
-     * Hide the column whose name is given in parameter.
-     *
-     * @param pColumnName The column name
-     * @return <code>true</code> if a column was found and hidden, <code>false</code> otherwise
-     */
-    protected abstract boolean hideColumn(final String pColumnName);
-
-    /**
-     * Return a map containing in key the name of the columns
-     * and in value a flag specifying if it is currently visible or not.
-     *
-     * This map will contain the name of all the optional columns which may
-     * be added in the viewer, but not the required column which is considered
-     * as always visible.
-     *
-     * @return A map containing in key the name of the columns in the viewer,
-     *         and in value a flag specifying if the column is visible or not
-     */
-    protected Map<String, Boolean> getColumnsVisibility() {
-        // Create the returned map
-        final Map<String, Boolean> vColumnsVisibilityMap = new HashMap<String, Boolean>(mColumnsNamesArray.length);
-
-        // Loop on the names of optional columns
-        for (final String vColumnName : mColumnsNamesArray) {
-            // Add in the map the corresponding key and flag value
-            vColumnsVisibilityMap.put(vColumnName, isColumnVisible(vColumnName));
-        }
-
-        return vColumnsVisibilityMap;
-    }
-
-    /**
-     * Return the names of the optional columns which can be displayed in the tree view.
-     *
-     * @return The names of the optional columns which can be displayed in the tree view.
-     */
-    public String[] getColumnsName() {
-        return mColumnsNamesArray;
-    }
-
-    /**
-     * Return the name of the required column for the tree view.
-     *
-     * @return The required column name
-     */
-    public String getRequiredColumnName() {
-        return mRequiredColumnName;
-    }
-
-    /**
-     * Return <code>true</code> if a column exists in the viewer,
-     * and <code>false</code> otherwise.
-     *
-     * @param pColumnName The name of the column to check
-     * @return <code>true</code> if the table column is visible, <code>false</code> otherwise
-     */
-    protected abstract boolean isColumnVisible(final String pColumnName);
-
-    /**
-     * Custom action used to manage and change the visibility of the columns of the viewer.
-     *
-     * @author  $Author: jdumont $
-     * @version $Revision: 83 $
-     */
-    private class ColumnsVisibilityAction
-        extends Action {
-
-        /**
-         * Default constructor.
-         */
-        ColumnsVisibilityAction() {
-            super(CommonUIActivator.getMessages()
-                .getString("AbstractColumnViewerPage.menu.columnsvisibility")); //$NON-NLS-1$
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void run() {
-            final List<String> vColumnsNameArray = new ArrayList<String>();
-            final List<String> vVisibleColumnsNamesArray = new ArrayList<String>();
-
-            // Get the map specifying the visibility of each column
-            final Map<String, Boolean> vColumnsVisibilityMap = getColumnsVisibility();
-
-            // Loop on all the column visibility map to build two arrays :
-            // - one for all the columns names
-            // - one with only the name of visible columns
-            for (final String vColumnName : vColumnsVisibilityMap.keySet()) {
-                // Remember the column name
-                vColumnsNameArray.add(vColumnName);
-
-                // Remember the name of the visible column
-                if (vColumnsVisibilityMap.get(vColumnName)) {
-                    vVisibleColumnsNamesArray.add(vColumnName);
-                }
-            }
-
-            // Open a dialog to allow the user which columns must be visible
-            final Object[] vResultsArray = openColumnsSelectionDialog(
-                vColumnsNameArray,
-                vVisibleColumnsNamesArray);
-
-            if (vResultsArray != null) {
-
-                // Loop on the results array to build a set containing all the
-                // names of the column to show
-                Set<String> vShownColumnsNamesSet = new HashSet<String>();
-                for (final Object vResult : vResultsArray) {
-                    // NB : The result is normally already a String with the column name
-                    vShownColumnsNamesSet.add(vResult.toString());
-                }
-
-                // Then build the list of columns to hide, by removing from the whole list
-                // of columns, those to hide
-                Set<String> vHiddenColumnsNamesSet = new HashSet<String>(vColumnsVisibilityMap.keySet());
-                vHiddenColumnsNamesSet.removeAll(vShownColumnsNamesSet);
-
-                // Finally, hide and show the columns according to the user choices
-                hideColumns(vHiddenColumnsNamesSet.toArray(new String[vHiddenColumnsNamesSet.size()]));
-                showColumns(vShownColumnsNamesSet.toArray(new String[vShownColumnsNamesSet.size()]));
-            }
-        }
-
-        /**
-         * Open a dialog allowing the user to select which columns must
-         * be visible in the viewer.
-         *
-         * The array of selected columns is directly returned.
-         *
-         * @param pColumnsNamesArray The array of all the column names
-         * @param pVisibleColumnsNamesArray The array of all the columns names already currently visible
-         * @return The array of all the columns names to show
-         */
-        private Object[] openColumnsSelectionDialog(
-            final List<String> pColumnsNamesArray,
-            final List<String> pVisibleColumnsNamesArray) {
-
-            Object[] vResultsArray = null;
-
-            // Build the selection dialog
-            final ListSelectionDialog vDialog = new ListSelectionDialog(
-                PlatformUI.getWorkbench().getDisplay().getActiveShell(),
-                pColumnsNamesArray,
-                new ArrayContentProvider(),
-                new LabelProvider(),
-                CommonUIActivator.getMessages()
-                    .getString("AbstractColumnViewerPage.label.columnsvisibility")); //$NON-NLS-1$
-
-            // Set the dialog title and select by default the columns which are currently visible
-            vDialog.setTitle(CommonUIActivator.getMessages()
-                .getString("AbstractColumnViewerPage.title.columnsvisibility")); //$NON-NLS-1$
-            vDialog.setInitialElementSelections(pVisibleColumnsNamesArray);
-
-            // Finally open the dialog and remember of its result if the user validate its choice
-            if (vDialog.open() == Window.OK) {
-                vResultsArray = vDialog.getResult();
-            }
-
-            return vResultsArray;
-        }
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractModelPage.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractModelPage.java
deleted file mode 100644
index c0d4c60..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractModelPage.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.view;
-
-import java.util.Iterator;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.views.properties.PropertyColumnLabelProvider;
-import org.polarsys.esf.core.common.ui.actions.NoModifiesActionBarContributor;
-import org.polarsys.esf.core.common.ui.actions.ViewActionBarContributor;
-import org.polarsys.esf.core.common.ui.editingsupport.ValidatedPropertyEditingSupport;
-import org.polarsys.esf.core.common.ui.provider.FirstColumnLabelProvider;
-
-/**
- * Base for pages which are looking at a ESF Model,
- * and which will be displayed in a page book view.
- *
- * This allows to put several pages in a same view, in order
- * to link the view content to the active editor for example.
- *
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractModelPage
-    extends AbstractTreeTablePage {
-
-    /** Default column width. */
-    private static final int COLUMN_WIDTH = 150;
-
-    /** The resource set on which the page will be plugged. */
-    private ResourceSet mResourceSet = null;
-
-    /** The resource, contained in the resource set, which will be used as input for the page viewer. */
-    private Resource mResource = null;
-
-    /** The source part, containing the resource set and the editing domain, to link to this page. */
-    private IWorkbenchPart mSourcePart = null;
-
-    /**
-     * Default constructor.
-     *
-     * @param pSourcePart The source part to link to this page
-     * @param pRequiredColumnName Name of the required columns for the viewer
-     * @param pColumnsName Names of other columns
-     * @param pReadOnlyMode <code>true</code> if the page must be in read only mode
-     */
-    public AbstractModelPage(
-        final IWorkbenchPart pSourcePart,
-        final String pRequiredColumnName,
-        final String[] pColumnsName,
-        final boolean pReadOnlyMode) {
-
-        super(pRequiredColumnName, pColumnsName, pReadOnlyMode);
-        mSourcePart = pSourcePart;
-    }
-
-    /**
-     * Return the part linked to this page instance and used
-     * to get the source model.
-     *
-     * @return The sourcePart
-     */
-    public IWorkbenchPart getSourcePart() {
-        return mSourcePart;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected IBaseLabelProvider createLabelProvider() {
-        return new FirstColumnLabelProvider(getAdapterFactory());
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * For a page used to display an ESF model content, from the source editor linked
-     * to this instance, the initial input is the resource found in this editor.
-     *
-     * Thus, this method will initialise the {@link #mResource} and {@link #mResourceSet} properties
-     * to ensure that the page is plugged to the editor data.
-     */
-    @Override
-    protected Object getInitialInput() {
-        // Check if the source part is able to provide an editing domain provider
-        // If this is not the case, no input can be found
-        if (mSourcePart instanceof IEditingDomainProvider) {
-
-            // Get the resource set on which works the source part
-            mResourceSet = ((IEditingDomainProvider) mSourcePart).getEditingDomain().getResourceSet();
-
-            // Then loop on the resource set to find the ESF Resource to use as input
-            Iterator<Resource> vIterator = mResourceSet.getResources().iterator();
-            while (vIterator.hasNext() && mResource == null) {
-                Resource vResource = (Resource) vIterator.next();
-
-                // Check if the current resource is a ESF model
-                // TODO : Check the right resource type
-                if (vResource instanceof Resource) {
-                    // Remember of this resource to use it as input
-                    mResource = vResource;
-                }
-            }
-        }
-
-        return mResource;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected ResourceSet getResourceSet() {
-        return mResourceSet;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     *
-     * This method is overridden to ensure that the source part editing domain will be used if possible
-     * instead of creating a new one.
-     */
-    @Override
-    protected EditingDomain createEditingDomain() {
-        EditingDomain vEditingDomain = null;
-
-        if (mSourcePart instanceof IEditingDomainProvider) {
-            // Get the editing domain of the source part if possible
-            vEditingDomain = (AdapterFactoryEditingDomain) ((IEditingDomainProvider) mSourcePart).getEditingDomain();
-
-            // Get the command stack of the editing domain to add a listener on it
-            addCommandStackListener(vEditingDomain.getCommandStack());
-
-        } else {
-            // Call the parent method otherwise to create a default editing domain
-            vEditingDomain = super.createEditingDomain();
-        }
-
-        return vEditingDomain;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Overridden to add an action bar contributor without any action able to modify model.
-     */
-    @Override
-    protected ViewActionBarContributor createActionBarContributor() {
-        return new NoModifiesActionBarContributor();
-    }
-
-    /**
-     * Initialise the width of the viewer columns, only if their actual size is less than column width constant.
-     * Moreover, the column alignment is set to center.
-     */
-    protected void setColumnsWidthAndAlignment() {
-        TreeColumn[] vColummnsArray = getViewer().getTree().getColumns();
-
-        for (TreeColumn vColumn : vColummnsArray) {
-            vColumn.setAlignment(SWT.CENTER);
-
-            if (vColumn.getWidth() < COLUMN_WIDTH) {
-                vColumn.setWidth(COLUMN_WIDTH);
-            }
-        }
-    }
-
-    /**
-     * Add a column in view, and initialise it, to ensure that :
-     * <ul>
-     *  <li>it's editable if needed.</li>
-     *  <li>it's linked to to right properties.</li>
-     *  <li>its width is set.</li>
-     * </ul>
-     *
-     * @param pColumnName The column name, used to identify it
-     */
-    protected void addColumnViewer(final String pColumnName) {
-
-        // Get the editable state for the column given
-        boolean vIsEditable = isColumnEditable(pColumnName);
-
-        // Create a column label provider in function of the target column
-        ColumnLabelProvider vColumnLabelProvider = createColumnLabelProvider(pColumnName);
-
-        // Get the property id associated to the given column
-        String vPropertyId = getAssociatedColumnPropertyID(pColumnName);
-
-        // Try to create an editing support if the column is editable,
-        // and associated to a property in the model
-        if (vIsEditable && StringUtils.isNotEmpty(vPropertyId)) {
-
-            // Create an editing support for column which can be modified
-            EditingSupport vEditingSupport =
-                new ValidatedPropertyEditingSupport(
-                    getViewer(),
-                    getPropertySourceProvider(),
-                    vPropertyId,
-                    getActionBars().getStatusLineManager());
-
-            // Then create the column with this editing support
-            createViewerColumn(pColumnName, vColumnLabelProvider, vEditingSupport);
-
-        } else {
-            // Create a non editable column
-            createViewerColumn(pColumnName, vColumnLabelProvider);
-        }
-
-        // Once that a column has been added, reset the width
-        // and alignment of each of them
-        setColumnsWidthAndAlignment();
-    }
-
-    /**
-     * Create a column label provider in function of the target column.
-     * The label provider may built by default is based on the property id associated
-     * to the given column.
-     *
-     * @param pColumnName The name of the column concerned
-     * @return The created column label provider
-     */
-    protected ColumnLabelProvider createColumnLabelProvider(final String pColumnName) {
-        ColumnLabelProvider vColumnLabelProvider = null;
-
-        // Get the id of the property linked to this column
-        String vPropertyId = getAssociatedColumnPropertyID(pColumnName);
-
-        if (StringUtils.isNotEmpty(vPropertyId)) {
-            // Create a new label provider for this property
-            vColumnLabelProvider = new PropertyColumnLabelProvider(
-                    getPropertySourceProvider(),
-                    vPropertyId);
-
-        } else {
-            // Create a default label provider
-            vColumnLabelProvider = new ColumnLabelProvider();
-        }
-
-        return vColumnLabelProvider;
-    }
-
-    /**
-     * Return a boolean specifying if the column, identified by the name given in parameter
-     * is editable or not.
-     *
-     * Return false by default.
-     *
-     * @param pColumnName The column name
-     * @return <code>true</code> if the column is editable
-     */
-    protected boolean isColumnEditable(final String pColumnName) {
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * In the model pages implementations, the drag and drop actions are disabled, as
-     * these pages are made to view to model, not to modify its structure.
-     */
-    @Override
-    protected void addDragSupport() {
-        // Nothing to do
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * In the model pages implementations, the drag and drop actions are disabled, as
-     * these pages are made to view to model, not to modify its structure.
-     */
-    @Override
-    protected void addDropSupport() {
-        // Nothing to do
-    }
-
-    /**
-     * Get the associated property Id for a column whose name is given in parameter.
-     *
-     * Return an empty String by default.
-     *
-     * @param pColumnName Column name
-     * @return The associated property Id found, or an empty String if no property is associated
-     */
-    protected String getAssociatedColumnPropertyID(final String pColumnName) {
-        return StringUtils.EMPTY;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     *
-     * This default implementation create a new column for each name returned
-     * by the method {@link #getColumnsName()}.
-     */
-    @Override
-    protected void createInitialViewerColumns() {
-        // Loop on all the columns name to create a new one for each
-        for (String vColumnName : getColumnsName()) {
-            // Only the analysis closed column can be edited
-            addColumnViewer(vColumnName);
-        }
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractModelPageBookView.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractModelPageBookView.java
deleted file mode 100644
index 245def2..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractModelPageBookView.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.view;
-
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.IPage;
-import org.eclipse.ui.part.MessagePage;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.PageBookView;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.filter.IFilterPartListener;
-
-/**
- * Abstract base for the views which are looking at the content of an ESF Model
- * opened in any type of editor (Graphical, EMF tree table, etc.).
- * 
- * These views are also listening to the changes on the filter to adapt the content
- * of their pages. 
- * 
- * Moreover, they must implements the interface IEditingDomainProvider to return the editing
- * domain used by the current page. This is mandatory to enable the actions activation with 
- * the action bars contributor.
- * To enable the refresh contextual action, the view must provide a viewer, and implements
- * the IViewerProvider interface. The viewer search is delegated to the current page.
- * 
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractModelPageBookView
-    extends PageBookView
-    implements IFilterPartListener, IEditingDomainProvider, IViewerProvider {
-    
-    /** Message to show on the default page. */
-    private static final String DEFAULT_TEXT = CommonUIActivator.getMessages()
-        .getString("AbstractSAModelPageBookView.defaultPage.label"); //$NON-NLS-1$
-
-    /**
-     * Default constructor.
-     */
-    public AbstractModelPageBookView() {
-        super();
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * The default page displays only a message to warn the user that 
-     * he must open an editor to link a new page to its content.
-     */
-    @Override
-    protected IPage createDefaultPage(final PageBook pBook) {
-        
-        // Create the default page, which will contains only an information message
-        MessagePage vPage = new MessagePage();
-        
-        // Initialise the page and create its controls
-        initPage(vPage);
-        vPage.createControl(pBook);
-        
-        // Set the default message to the page
-        vPage.setMessage(DEFAULT_TEXT);
-        
-        return vPage;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Track only the editors to synchronise the view pages.
-     */
-    @Override
-    protected boolean isImportant(final IWorkbenchPart pPart) {
-        // Only cares about editors
-        return pPart instanceof IEditorPart;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void doDestroyPage(final IWorkbenchPart pPart, final PageRec pPageRec) {
-        // Get the page from the page record
-        IPage vPage = pPageRec.page;
-        
-        // Dispose the page, and the record
-        vPage.dispose();
-        pPageRec.dispose();
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Return the active editor for the current page. 
-     */
-    @Override
-    protected IWorkbenchPart getBootstrapPart() {
-        IWorkbenchPart vBootStrapPart = null;
-        
-        // Get the current page shown
-        IWorkbenchPage vPage = getSite().getPage();
-        if (vPage != null) {
-            // Get the active editor linked to this page
-            vBootStrapPart = vPage.getActiveEditor();
-        }
-
-        return vBootStrapPart;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Treat this event as a part activation.
-     * Otherwise, nothing is done by default.
-     */
-    @Override
-    public void partBroughtToTop(final IWorkbenchPart pPart) {
-        partActivated(pPart);
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * This method is overridden to register this current page book view as selection provider 
-     * in the page action bar contributor, to enable the contextual actions.
-     * 
-     * This must be done on each activation, and not only once when the page is initialised,
-     * as in this case, the {@link #getEditingDomain()} method will be called only once, and
-     * the actions won't be linked to the right editing domain. 
-     */
-    @Override
-    public void partActivated(final IWorkbenchPart pPart) {
-        // Call the parent method
-        super.partActivated(pPart);
-        
-        // If the current page in a instance of model page, update its action bar contributor
-        // to use this view as selection listener
-        if (getCurrentPage() instanceof AbstractModelPage) {                
-            ((AbstractModelPage) getCurrentPage()).updateActionBarContributorActivePart(this);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * For a page book view, the event treatment is delegated to the current page.
-     */
-    @Override
-    public void filterTextChanged(final String pNewFilterText) {
-        IPage vCurrentPage = getCurrentPage();
-        
-        if (vCurrentPage instanceof AbstractModelPage) {
-            ((AbstractModelPage) vCurrentPage).filterTextChanged(pNewFilterText);
-        }        
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Return the editing domain of the current page displayed.
-     */
-    @Override
-    public EditingDomain getEditingDomain() {
-        
-        EditingDomain vEditingDomain = null;
-        
-        // Delegate the editing domain providing to the current page
-        if (getCurrentPage() instanceof IEditingDomainProvider) {
-            vEditingDomain = ((IEditingDomainProvider) getCurrentPage()).getEditingDomain();
-        }
-        
-        return vEditingDomain;
-    }
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Return the viewer current page displayed if possible, null otherwise.
-     */
-    @Override
-    public Viewer getViewer() {
-        
-        Viewer vViewer = null;
-        
-        // Delegate the viewer providing to the current page
-        if (getCurrentPage() instanceof IViewerProvider) {
-            vViewer = ((IViewerProvider) getCurrentPage()).getViewer();
-        }
-        
-        return vViewer;
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractPage.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractPage.java
deleted file mode 100644
index ed847ee..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractPage.java
+++ /dev/null
@@ -1,1189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.view;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.CommandStack;
-import org.eclipse.emf.common.command.CommandStackListener;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain.EditingDomainProvider;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
-import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
-import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
-import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.part.Page;
-import org.eclipse.ui.views.properties.IPropertySourceProvider;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.actions.ViewActionBarContributor;
-import org.polarsys.esf.core.common.ui.constants.ImageConstants;
-import org.polarsys.esf.core.common.ui.filter.AbstractFilter;
-import org.polarsys.esf.core.common.ui.filter.NamePropertyFilter;
-import org.polarsys.esf.core.common.ui.view.properties.PropertySourceProvider;
-
-/**
- * Abstract base of all the Pages to use in a PageBookView,
- * with the filters, the editing domain mechanisms, etc.
- * 
- * This abstract page implement the following interfaces :
- * - IEditingDomainProvider : to allow other classes to access to its editing domain
- * - IMenuListener : to be warned when a menu is about to show
- * - IViewerProvider : to allow other classes to access to its viewer
- * - IFiltrePageListener : to enable the filter mechanisms
- * 
- * NB : This kind of page doesn't manage a link with the Properties view, nor a save action
- * as its behaviour is to be dependent of an opened editor. Thus, it's the editor
- * selection with is displayed in the Properties view, and the dirty state is also managed
- * by the editor.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractPage
-    extends Page
-    implements IEditingDomainProvider, IMenuListener, IViewerProvider {
-
-    /** The pop-up menu id. */
-    private static final String POP_UP_ID = "#PopUp"; //$NON-NLS-1$
-
-    /** The additions menu section id. */
-    private static final String ADDITIONS_SEPARATOR_ID = "additions"; //$NON-NLS-1$
-
-    /** The adapter factory used to provide the views of the model elements. */
-    private ComposedAdapterFactory mComposedAdapterFactory = null;
-
-    /** The editing domain used to track all the changes to the model elements, if this view is editable. */
-    private EditingDomain mEditingDomain = null;
-
-    /**
-     * The command stack listener to plug to the command stack of the used editing domain,
-     * to be warned the changes happend.
-     */
-    private CommandStackListener mCommandStackListener = new CommandStackListener() {
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void commandStackChanged(final EventObject pEvent) {
-            AbstractPage.this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                /**
-                 * {@inheritDoc}
-                 */
-                @Override
-                public void run() {
-                    handleCommandStackChanged(((CommandStack) pEvent.getSource()).getMostRecentCommand());
-                }
-            });
-        }
-    };
-
-    /** The label provider used in the viewer. */
-    private IBaseLabelProvider mLabelProvider = null;
-
-    /** The content provider used in the viewer. */
-    private IContentProvider mContentProvider = null;
-
-    /** The property source provider used in the viewer. */
-    private IPropertySourceProvider mPropertySourceProvider = null;
-
-    /** The view action bar contributor. */
-    private ViewActionBarContributor mActionBarContributor = null;
-
-    /** The viewer used in this page. */
-    private StructuredViewer mViewer = null;
-
-    /** Flag which indicates if this view is in read only mode. */
-    private boolean mReadOnlyMode = true;
-
-    /**
-     * Constructor used to specify if the view is read only or not.
-     * 
-     * @param pReadOnlyMode <code>true</code> if this view is in read only mode, <code>false</code> otherwise
-     */
-    public AbstractPage(final boolean pReadOnlyMode) {
-        super();
-        mReadOnlyMode = pReadOnlyMode;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void dispose() {
-
-        // Remove the potential listener on the command stack used
-        // This is mandatory as the command stack may not be in this instance context only
-        if (mEditingDomain != null && mEditingDomain.getCommandStack() != null) {
-            mEditingDomain.getCommandStack().removeCommandStackListener(mCommandStackListener);
-        }
-
-        if (mLabelProvider != null) {
-            mLabelProvider.dispose();
-            mLabelProvider = null;
-        }
-
-        if (mContentProvider != null) {
-            mContentProvider.dispose();
-            mContentProvider = null;
-        }
-
-        if (mComposedAdapterFactory != null) {
-            mComposedAdapterFactory.dispose();
-            mComposedAdapterFactory = null;
-        }
-
-        if (mActionBarContributor != null) {
-            // Unlink the potential active part registered in the
-            // action bar contributor and dispose it
-            mActionBarContributor.setActivePart(null);
-            mActionBarContributor.dispose();
-            mActionBarContributor = null;
-        }
-
-        super.dispose();
-    }
-
-    /**
-     * @return <code>true</code> if the view is in read only mode, <code>false</code> otherwise.
-     */
-    public boolean isReadOnlyMode() {
-        return mReadOnlyMode;
-    }
-
-    /**
-     * Initialise the editing domain for this page.
-     * 
-     * The default implementation create a new adapter factory, and
-     * a new editing domain for this page instance by calling : {@link AbstractPage#createAdapterFactory()} and
-     * {@link AbstractPage#createEditingDomain()}
-     */
-    protected void initializeEditingDomain() {
-        mComposedAdapterFactory = createAdapterFactory();
-        mEditingDomain = createEditingDomain();
-    }
-
-    /**
-     * Create and return an instance of {@link ComposedAdapterFactory} and initialise it with the adapter factories.
-     * 
-     * @see #getAdapterFactories()
-     * @return The created {@link ComposedAdapterFactory}
-     */
-    protected ComposedAdapterFactory createAdapterFactory() {
-        // Create an adapter factory that yields the needed item providers
-        final ComposedAdapterFactory vComposedAdapterFactory = new ComposedAdapterFactory();
-
-        // Loop on the adapter factories to add each one to the composed adapter factory
-        for (final Class<? extends AdapterFactory> vAdapterFactory : getAdapterFactories()) {
-            try {
-                vComposedAdapterFactory.addAdapterFactory(vAdapterFactory.newInstance());
-            } catch (final InstantiationException e) {
-                CommonUIActivator.INSTANCE.log(e);
-            } catch (final IllegalAccessException e) {
-                CommonUIActivator.INSTANCE.log(e);
-            }
-        }
-
-        return vComposedAdapterFactory;
-    }
-
-    /**
-     * Return the adapter factories that will be added to the composed adapter factory
-     * used by this page.
-     * 
-     * @return Adapter factories to add to the composed adapter factory
-     */
-    protected abstract Collection<Class<? extends AdapterFactory>> getAdapterFactories();
-
-    /**
-     * This sets the selection into the active viewer.
-     * 
-     * @param pSelections The selection elements to set
-     * 
-     */
-    protected void setSelectionToViewer(final Collection<?> pSelections) {
-        // Check if this selection is valid
-        if (pSelections != null && !pSelections.isEmpty()) {
-
-            // Use a runnable in an UI thread to update the viewer selection
-            getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                @Override
-                public void run() {
-                    // Try to select the items in the current content viewer
-                    if (mViewer != null) {
-                        mViewer.setSelection(new StructuredSelection(pSelections.toArray()), true);
-                    }
-                }
-            });
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
-     * This is important to implement several mechanisms as the Commands, etc.
-     * 
-     * @return The current editing domain used
-     */
-    @Override
-    public EditingDomain getEditingDomain() {
-        return mEditingDomain;
-    }
-
-    /**
-     * Create and return an instance of {@link AdapterFactoryEditingDomain}.
-     * 
-     * This base implementation creates a default editing domain and associate it to a new {@link CommandStack}, and to
-     * the resource set returned by the {@link #getResourceSet()} if it's not null. Otherwise, it uses a new resource
-     * set.
-     * 
-     * @return The created instance of {@link EditingDomain}
-     */
-    protected EditingDomain createEditingDomain() {
-
-        AdapterFactoryEditingDomain vEditingDomain = null;
-
-        // Create a default command stack
-        final CommandStack vCommandStack = createCommandStack();
-
-        // Get the resource set used by this page
-        final ResourceSet vResourceSet = getResourceSet();
-
-        if (vResourceSet != null) {
-            // A resource set is known, use it to create the editing domain
-            vEditingDomain = new AdapterFactoryEditingDomain(getAdapterFactory(), vCommandStack, vResourceSet);
-            vEditingDomain.setResourceToReadOnlyMap(new HashMap<Resource, Boolean>());
-
-        } else {
-            // A resource set is not known, create the editing domain with a new resource set
-            vEditingDomain = new AdapterFactoryEditingDomain(
-                getAdapterFactory(),
-                vCommandStack,
-                new HashMap<Resource, Boolean>());
-        }
-
-        return vEditingDomain;
-    }
-
-    /**
-     * Create and return a default command stack, which allow to react to its changes
-     * using the {@link AbstractPage#handleCommandStackChanged(Command)} method.
-     * 
-     * @return The command stack created
-     */
-    protected BasicCommandStack createCommandStack() {
-        // Create the command stack
-        final BasicCommandStack vCommandStack = new BasicCommandStack();
-
-        // Add the listener which will notify this page when commands are executed
-        addCommandStackListener(vCommandStack);
-
-        return vCommandStack;
-    }
-
-    /**
-     * Add a custom listener to the given command stack.
-     * This listener is used to allow to this page to react to a change in the command stack.
-     * 
-     * @param pCommandStack The command stack to listen
-     */
-    protected void addCommandStackListener(final CommandStack pCommandStack) {
-        // Add a listener on the command stack to warn the page when something changed
-        pCommandStack.addCommandStackListener(mCommandStackListener);
-    }
-
-    /**
-     * Remove the custom listener to the given command stack.
-     * This is mandatory to dispose correctly the page.
-     * 
-     * @param pCommandStack The command stack to stop to listen
-     */
-    protected void removeCommandStackListener(final CommandStack pCommandStack) {
-        // Remove the potential listener on the command stack
-        pCommandStack.removeCommandStackListener(mCommandStackListener);
-    }
-
-    /**
-     * This method is called when the command stack is changed, to allow the
-     * page to react. By default, this will simply select the objects
-     * affected by the command in the viewer.
-     * 
-     * @param pMostRecentCommand The most recent command
-     */
-    protected void handleCommandStackChanged(final Command pMostRecentCommand) {
-        if (pMostRecentCommand != null) {
-            // Try to select the affected objects
-            setSelectionToViewer(pMostRecentCommand.getAffectedObjects());
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Returns the viewer as required by the {@link IViewerProvider} interface.
-     * It can be any kind of viewer (tree, table, etc.).
-     * 
-     * @return The viewer of this page
-     */
-    @Override
-    public Viewer getViewer() {
-        return mViewer;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * By default, return this page viewer control.
-     */
-    @Override
-    public Control getControl() {
-        return getViewer().getControl();
-    }
-
-    /**
-     * Creates a default context menu and set it to the viewer.
-     */
-    protected void addContextMenu() {
-        // Create a default context menu
-        final MenuManager vContextMenuManager = new MenuManager();
-        vContextMenuManager.add(new Separator(ADDITIONS_SEPARATOR_ID));
-        vContextMenuManager.setRemoveAllWhenShown(true);
-
-        // Register this page instance as menu listener to ensure
-        // that it will be warn when the menu is opened
-        vContextMenuManager.addMenuListener(this);
-
-        // Create a context menu in the new menu manager, and link it to the viewer
-        final Menu vMenu = vContextMenuManager.createContextMenu(mViewer.getControl());
-        mViewer.getControl().setMenu(vMenu);
-
-        // Register the context menu to the viewer selection
-        getSite().registerContextMenu(POP_UP_ID, vContextMenuManager, new UnwrappingSelectionProvider(mViewer));
-    }
-
-    /**
-     * Add a drag support to the viewer.
-     */
-    protected void addDragSupport() {
-        final int vDndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
-        final Transfer[] vTransfersArray = new Transfer[] {LocalTransfer.getInstance()};
-
-        mViewer.addDragSupport(
-            vDndOperations,
-            vTransfersArray,
-            new ViewerDragAdapter(mViewer));
-    }
-
-    /**
-     * Add a drop support to the viewer.
-     */
-    protected void addDropSupport() {
-        final int vDndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
-        final Transfer[] vTransfersArray = new Transfer[] {LocalTransfer.getInstance()};
-
-        mViewer.addDropSupport(
-            vDndOperations,
-            vTransfersArray,
-            new EditingDomainViewerDropAdapter(mEditingDomain, mViewer));
-    }
-
-    /**
-     * Return the adapter factory content provider to associate to the viewer.
-     * If no content provider is known, create a default one.
-     * 
-     * @return Return the content provider to associate to the viewer
-     */
-    protected IContentProvider getContentProvider() {
-        if (mContentProvider == null) {
-            // Create a default content provider
-            mContentProvider = createContentProvider();
-        }
-
-        return mContentProvider;
-    }
-
-    /**
-     * Create and return a default content provider.
-     * The content provider must call {@link #inputChanged(oldInput,newInput) in the method
-     * 
-     * @return The created content provider
-     */
-    protected IContentProvider createContentProvider() {
-        return new AdapterFactoryContentProvider(getAdapterFactory()) {
-
-            /**
-             * {@inheritDoc}
-             * 
-             * This method is overridden to be able to manage the arrays as input element.
-             */
-            @Override
-            public Object[] getElements(final Object pInputElement) {
-                Object[] vElementsArray = new Object[] {};
-
-                // Check if the input element is an array
-                if (pInputElement instanceof Object[]) {
-                    // If the input is an array, loop on each input object in it
-                    // to get its corresponding elements
-                    final List<Object> vElementsList = new ArrayList<Object>();
-                    for (final Object vInputElement : (Object[]) pInputElement) {
-                        vElementsList.addAll(Arrays.asList(super.getElements(vInputElement)));
-                    }
-
-                    // Build the final elements array from the list
-                    if (!vElementsList.isEmpty()) {
-                        vElementsArray = vElementsList.toArray(new Object[vElementsList.size()]);
-                    }
-
-                } else {
-                    // If the input is a single object, get its element by calling the parent method
-                    vElementsArray = super.getElements(pInputElement);
-                }
-
-                return vElementsArray;
-            }
-
-            /**
-             * {@inheritDoc}
-             * 
-             * This method is overridden to warn the page instance that its input has changed
-             * if the content provider input changes.
-             */
-            @Override
-            public void inputChanged(final Viewer pViewer, final Object pOldInput, final Object pNewInput) {
-                // Call the parent method
-                super.inputChanged(pViewer, pOldInput, pNewInput);
-
-                // Warn the page that its input changed
-                AbstractPage.this.inputChanged(pOldInput, pNewInput);
-            }
-
-            /**
-             * {@inheritDoc}
-             * 
-             * This method is overridden to warn the page instance that its input has been disposed.
-             */
-            @Override
-            public void dispose() {
-                if (viewer != null) {
-                    // Set the page input to null
-                    AbstractPage.this.inputChanged(viewer.getInput(), null);
-                }
-                super.dispose();
-            }
-        };
-    }
-
-    /**
-     * Called when the input is changed to attach the {@link IEditingDomainProvider} if needed.
-     * 
-     * @param pOldInput the old input element, or null if the viewer did not previously have an input
-     * @param pNewInput the new input element, or null if the viewer does not have an input
-     */
-    protected void inputChanged(final Object pOldInput, final Object pNewInput) {
-        disposeOldInput(pOldInput);
-        inputChanged(pNewInput);
-    }
-
-    /**
-     * React to an input change, to link the page content to the new input.
-     * If the input is a resource (or an array of resources), attach all the needed adapters to it.
-     * 
-     * @param pNewInput The new input value
-     */
-    private void inputChanged(final Object pNewInput) {
-
-        // Initialise a list of resource to add as input
-        List<Resource> vInputResourcesList = new ArrayList<Resource>();
-
-        if (pNewInput instanceof Resource) {
-            // If the new input is a resource, add it in the list to manage
-            vInputResourcesList.add((Resource) pNewInput);
-
-        } else if (pNewInput instanceof Object[]) {
-            // The input is an array, look in its content for the potential resources
-            // to use as input
-            for (final Object vInput : (Object[]) pNewInput) {
-                if (vInput instanceof Resource) {
-                    vInputResourcesList.add((Resource) vInput);
-                }
-            }
-        }
-
-        // Finally, loop on the resources to add as input
-        for (Resource vResource : vInputResourcesList) {
-            // Attach all the needed adapters
-            attachAdapterForResource(vResource);
-
-            // Add the resource to the resource set of the used editing domain
-            // but lock its edition if the view is read only, and if the editing
-            // domain allows it
-            if (mReadOnlyMode && mEditingDomain instanceof AdapterFactoryEditingDomain) {
-                // Add the resource in the locked part of the resource set
-                ((AdapterFactoryEditingDomain) mEditingDomain).getResourceToReadOnlyMap().put(vResource, Boolean.TRUE);
-
-            } else {
-                // The view is not in read only, or the editing domain doesn't allow to lock its resource,
-                // thus simply add the resource in the resource set
-                mEditingDomain.getResourceSet().getResources().add(vResource);
-            }
-        }
-    }
-
-    /**
-     * Dispose an old input.
-     * 
-     * A custom treatment is applied if the input was a resource or an
-     * array of resources, to ensure that all the potential listeners or adapters
-     * are also disposed.
-     * 
-     * @param pOldInput The input to dispose
-     */
-    private void disposeOldInput(final Object pOldInput) {
-        if (pOldInput instanceof Resource) {
-            // The old input was a resource, detach all the potential adapters
-            detachAdapterFromResource((Resource) pOldInput);
-
-        } else if (pOldInput instanceof Object[]) {
-            // The old input was an array, check if it contains any resource,
-            // to detach all the potential adapters
-            for (final Object vOldInput : (Object[]) pOldInput) {
-                if (vOldInput instanceof Resource) {
-                    detachAdapterFromResource((Resource) vOldInput);
-                }
-            }
-        }
-    }
-
-    /**
-     * Return the label provider to associate to the viewer.
-     * If no label provider is known, create a default one.
-     * 
-     * @return Return the label provider to associate to the viewer
-     */
-    protected IBaseLabelProvider getLabelProvider() {
-        if (mLabelProvider == null) {
-            mLabelProvider = createLabelProvider();
-        }
-        return mLabelProvider;
-    }
-
-    /**
-     * Create and return a default label provider based on the adapter factory.
-     * 
-     * @return The created label provider
-     */
-    protected IBaseLabelProvider createLabelProvider() {
-        return new AdapterFactoryLabelProvider(getAdapterFactory());
-    }
-
-    /**
-     * Set the input of the viewer.
-     * This will be done in an UI thread, and will ensure that the viewer is still available.
-     * 
-     * @param pInput The new input to set to the viewer
-     */
-    protected void setViewerInput(final Object pInput) {
-        getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                if ((mViewer != null) && !mViewer.getControl().isDisposed()) {
-                    synchronized (mViewer) {
-                        mViewer.setInput(pInput);
-                    }
-                }
-            }
-        });
-    }
-
-    /**
-     * Return the initial input of the viewer.
-     * 
-     * @return The initial input of the viewer
-     */
-    protected abstract Object getInitialInput();
-
-    /**
-     * Return the resource set to associate to the editing domain.
-     * 
-     * If this method return <code>null</code>, a new resource set will be
-     * created by default during the editing domain initialisation.
-     * 
-     * @return The resource set to associate to the editing domain
-     */
-    protected abstract ResourceSet getResourceSet();
-
-    /**
-     * Return the property source provider to associate to the viewer.
-     * If no property source provider is known, create a default one.
-     * 
-     * @return Return the property source provider to associate to the viewer
-     */
-    protected IPropertySourceProvider getPropertySourceProvider() {
-        if (mPropertySourceProvider == null) {
-            mPropertySourceProvider = createPropertySourceProvider();
-        }
-        return mPropertySourceProvider;
-    }
-
-    /**
-     * Create and return a default property source provider based on the adapter factory.
-     * 
-     * @return The created property source provider
-     */
-    protected IPropertySourceProvider createPropertySourceProvider() {
-        return new PropertySourceProvider(getAdapterFactory());
-    }
-
-    /**
-     * Set the message to the status line manager based on the selection count.
-     * 
-     * @param pSelection The selection to take into account
-     */
-    protected void updateStatusBar(final ISelection pSelection) {
-
-        String vMessage = null;
-
-        // Ensure that the selection can be parsed
-        if (pSelection instanceof IStructuredSelection) {
-
-            // Get the right message, according to the number of elements in the selection
-            switch (((IStructuredSelection) pSelection).size()) {
-                case 0:
-                    vMessage = CommonUIActivator.getMessages().getString("AbstractPage.noobjectselected"); //$NON-NLS-1$
-                    break;
-
-                case 1:
-                    // Get the text corresponding to the selected object
-                    final String vSelectedObjectText = new AdapterFactoryItemDelegator(mComposedAdapterFactory)
-                        .getText(((IStructuredSelection) pSelection).getFirstElement());
-
-                    // Build the message with the text found
-                    vMessage = CommonUIActivator.getMessages().getString("AbstractPage.oneobjectselected", //$NON-NLS-1$
-                        new Object[] {vSelectedObjectText});
-                    break;
-
-                default:
-                    vMessage = CommonUIActivator.getMessages().getString("AbstractPage.multiobjectsselected", //$NON-NLS-1$
-                        new Object[] {Integer.toString(((IStructuredSelection) pSelection).size())});
-                    break;
-            }
-        }
-
-        // Finally update the status message
-        setStatusLineMessage(vMessage, false);
-    }
-
-    /**
-     * Set the message to the status line manager.
-     * It can be treated as an error message or not according to the flag given in parameter.
-     * 
-     * @param pMessage The message to set
-     * @param pIsErrorMsg <code>true</code> if the message is an error message, <code>false</code> otherwise
-     */
-    protected void setStatusLineMessage(final String pMessage, final boolean pIsErrorMsg) {
-        // Get the status line manager
-        final IStatusLineManager vStatusLineManager = getActionBars().getStatusLineManager();
-
-        if (vStatusLineManager != null) {
-            // Update the status message, with an error status or not
-            if (pIsErrorMsg) {
-                vStatusLineManager.setErrorMessage(ImageConstants.ICON_ERROR, pMessage);
-            } else {
-                vStatusLineManager.setMessage(ImageConstants.ICON_INFO, pMessage);
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * This is overridden to help to fill the context menus with contributions from the Edit menu.
-     */
-    @Override
-    public void menuAboutToShow(final IMenuManager pMenuManager) {
-        getActionBarContributor().menuAboutToShow(pMenuManager);
-    }
-
-    /**
-     * Returns the action bar contributor for this page.
-     * If no contributor is known, create a default one.
-     * 
-     * @return The page action bar contributor
-     */
-    protected ViewActionBarContributor getActionBarContributor() {
-        if (mActionBarContributor == null) {
-            mActionBarContributor = createActionBarContributor();
-            mActionBarContributor.init(getActionBars(), getSite().getPage());
-        }
-
-        return mActionBarContributor;
-    }
-
-    /**
-     * Update the action bar contributor of this page to use the given part as
-     * selection provider, and if possible also as editing domain provider.
-     * 
-     * This is mandatory to ensure that the contextual actions in the contributor
-     * are linked to a selection for their activation and their run.
-     * 
-     * @param pActivePart The part to use as selection provider and potential editing domain
-     * provider for the action bar contributor
-     */
-    public void updateActionBarContributorActivePart(final IWorkbenchPart pActivePart) {
-        // Register the new active part
-        getActionBarContributor().setActivePart(pActivePart);
-
-        // Then update the actions
-        getActionBarContributor().update();
-    }
-
-    /**
-     * Create and return a default action bar contributor.
-     * 
-     * @return The created action bar contributor
-     */
-    protected ViewActionBarContributor createActionBarContributor() {
-        return new ViewActionBarContributor();
-    }
-
-    /**
-     * Returns the action bars for this page.
-     * 
-     * @return The {@link IActionBars} of this page
-     */
-    protected IActionBars getActionBars() {
-        return getSite().getActionBars();
-    }
-
-    /**
-     * This returns the composed adapter factory associated to the viewer.
-     * 
-     * @return The composed adapter factory associated to the viewer
-     */
-    protected ComposedAdapterFactory getAdapterFactory() {
-        return mComposedAdapterFactory;
-    }
-
-    /**
-     * Add an editing domain provider adapter to the given resource.
-     * 
-     * @param pResource The resource to treat
-     */
-    private void attachAdapterForResource(final Resource pResource) {
-        // Check if an editing domain provider is already known for this resource
-        // in this case, there is nothing to do
-        if (getResourceEditingDomainProvider(pResource) == null) {
-            // Create a new editing domain provider and add it to the resource
-            final EditingDomainProvider vEditingDomainProvider = new EditingDomainProvider(mEditingDomain);
-            pResource.eAdapters().add(vEditingDomainProvider);
-        }
-    }
-
-    /**
-     * Remove the editing domain provider adapter attach to the resource
-     * if it has been added only for this page context.
-     * 
-     * @param pResource The resource to treat
-     */
-    private void detachAdapterFromResource(final Resource pResource) {
-        // Get the editing domain provider linked to the resource
-        final IEditingDomainProvider vResourceEditingDomainProvider = getResourceEditingDomainProvider(pResource);
-        if (vResourceEditingDomainProvider != null) {
-
-            // Check if the resource editing domain is the same editing domain
-            // as the one used in the page. In this case, it has been added explicitly
-            // for this page and can thus be removed
-            if (mEditingDomain.equals(vResourceEditingDomainProvider.getEditingDomain())) {
-                pResource.eAdapters().remove(vResourceEditingDomainProvider);
-            }
-        }
-    }
-
-    /**
-     * Return the editing domain provider of a given resource.
-     * 
-     * @param pResource The resource to treat
-     * @return <code>{@link IEditingDomainProvider}</code> found, or null otherwise
-     */
-    private IEditingDomainProvider getResourceEditingDomainProvider(final Resource pResource) {
-        IEditingDomainProvider vEditingDomainProvider = null;
-
-        if (pResource != null) {
-            // Get the potential existing editing domain provider
-            vEditingDomainProvider = (IEditingDomainProvider) EcoreUtil.getExistingAdapter(
-                pResource,
-                IEditingDomainProvider.class);
-        }
-
-        return vEditingDomainProvider;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Initialises this page with the given page site.
-     * <p>
-     * This method is automatically called by the workbench shortly after the part is instantiated. It marks the start
-     * of the page's life cycle. Clients must not call this method directly.
-     * </p>
-     * 
-     * @param pSite The page site
-     */
-    @Override
-    public void init(final IPageSite pSite) {
-        // Call the parent method
-        super.init(pSite);
-
-        // Initialise the editing domain for this page
-        initializeEditingDomain();
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Create the controls for this page, and initialise the viewer of this page.
-     * 
-     * @param pParent The parent control
-     */
-    @Override
-    public void createControl(final Composite pParent) {
-        // Initialise the viewer
-        initializeViewer(pParent);
-
-        // Add the page styles, menus and toolbars
-        addStyles();
-        addMenuBarActions();
-        addToolBarActions();
-    }
-
-    /**
-     * This method is used to add the styles to the page : its context menu,
-     * and the mechanisms for the drag & drop, and the filters.
-     * 
-     * User must override this function to add or remove specific styles.
-     */
-    protected void addStyles() {
-        addContextMenu();
-        addDragSupport();
-        addDropSupport();
-        addFilters();
-    }
-
-    /**
-     * Initialise the viewer of this page.
-     * 
-     * @param pParent The parent composite
-     */
-    protected void initializeViewer(final Composite pParent) {
-        // Create the viewer and remember it
-        mViewer = createViewer(pParent);
-
-        // Set the viewer providers and input
-        setViewerProviders();
-        setViewerInput(getInitialInput());
-
-        // Register the fact that this page site selection is provided by the viewer
-        getSite().setSelectionProvider(mViewer);
-
-        // Finally, add the listeners (double click, etc.) on the viewer
-        addViewerListeners();
-    }
-
-    /**
-     * Set the viewer content and label providers.
-     * 
-     * This default implementation use the methods {@link AbstractPage#getLabelProvider()} and
-     * {@link AbstractPage#getContentProvider()} to find the providers to set.
-     */
-    protected void setViewerProviders() {
-        mViewer.setLabelProvider(getLabelProvider());
-        mViewer.setContentProvider(getContentProvider());
-    }
-
-    /**
-     * Adds the listeners to the viewer.
-     * This default implementation add a selection changed and a double click listeners.
-     */
-    protected void addViewerListeners() {
-        addViewerSelectionChangedListener();
-        addViewerDoubleCLickListener();
-    }
-
-    /**
-     * Adds an {@link ISelectionChangedListener} to the viewer.
-     */
-    protected void addViewerSelectionChangedListener() {
-        mViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void selectionChanged(final SelectionChangedEvent pEvent) {
-                handleSelectionChanged(pEvent);
-            }
-        });
-    }
-
-    /**
-     * Adds an {@link IDoubleClickListener} to the viewer.
-     */
-    protected void addViewerDoubleCLickListener() {
-        mViewer.addDoubleClickListener(new IDoubleClickListener() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void doubleClick(final DoubleClickEvent pEvent) {
-
-                // Use an asynchronous UI thread to treat the double click event
-                mViewer.getControl().getDisplay().asyncExec(new Runnable() {
-
-                    /**
-                     * {@inheritDoc}
-                     */
-                    @Override
-                    public void run() {
-                        // Ensure that the viewer is still available
-                        if (mViewer != null && !mViewer.getControl().isDisposed()) {
-                            handleDoubleClick(pEvent);
-                        }
-                    }
-                });
-            }
-        });
-    }
-
-    /**
-     * Called when a double click is made in the viewer.
-     * This method does nothing by default.
-     * 
-     * @param pEvent The {@link DoubleClickEvent}.
-     */
-    protected void handleDoubleClick(final DoubleClickEvent pEvent) {
-        // Nothing to do
-    }
-
-    /**
-     * Called when the selection changed in the viewer.
-     * This method update the status bar message by default.
-     * 
-     * @param pEvent The {@link ISelectionChangedListener}.
-     */
-    protected void handleSelectionChanged(final SelectionChangedEvent pEvent) {
-        updateStatusBar(pEvent.getSelection());
-    }
-
-    /**
-     * Create the viewer.
-     * This method is abstract as each child will create its own kind of viewer.
-     * 
-     * @param pParent The composite parent
-     * @return The created viewer
-     */
-    protected abstract StructuredViewer createViewer(Composite pParent);
-
-    /**
-     * Refresh the viewer.
-     */
-    protected void refreshViewer() {
-        // Use an asynchronous UI thread to refresh the viewer
-        getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run() {
-                // Ensure that the viewer is still available
-                if (mViewer != null && !mViewer.getControl().isDisposed()) {
-                    synchronized (mViewer) {
-                        mViewer.refresh();
-                    }
-                }
-            }
-        });
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Asks this page to take focus within the workbench.
-     * Page must assign focus to one of the controls contained in
-     * the part's parent composite.
-     * 
-     * In our case, set the focus to the viewer control by default.
-     */
-    @Override
-    public void setFocus() {
-        // Ensure that the viewer is still available
-        if (mViewer != null && !mViewer.getControl().isDisposed()) {
-            mViewer.getControl().setFocus();
-        }
-    }
-
-    /**
-     * Add an action in the menu bar.
-     * 
-     * @param pAction The action to add
-     */
-    protected void addMenuBarAction(final IAction pAction) {
-        getActionBars().getMenuManager().add(pAction);
-    }
-
-    /**
-     * Add an action in the tool bar.
-     * 
-     * @param pAction The action to add
-     */
-    protected void addToolBarAction(final IAction pAction) {
-        getActionBars().getToolBarManager().add(pAction);
-    }
-
-    /**
-     * Add a sub-menu to the menu bar.
-     * 
-     * @param pMenuManager The menu manager to add
-     */
-    protected void addMenuBarSubMenu(final IMenuManager pMenuManager) {
-        getActionBars().getMenuManager().add(pMenuManager);
-    }
-
-    /**
-     * Add a separator to the menu bar.
-     */
-    protected void addMenuBarSeparator() {
-        getActionBars().getMenuManager().add(new Separator());
-    }
-
-    /**
-     * Add a separator to the tool bar.
-     */
-    protected void addToolBarSeparator() {
-        getActionBars().getToolBarManager().add(new Separator());
-    }
-
-    /**
-     * Add the filters returned by {@link #getFilters()} to the viewer.
-     */
-    protected void addFilters() {
-        for (AbstractFilter vFilter : getFilters()) {
-            mViewer.addFilter(vFilter);
-        }
-    }
-
-    /**
-     * Called when the filter text changed, to be able to react.
-     * 
-     * @param pNewFilterText The new filter text to take into account
-     */
-    public void filterTextChanged(final String pNewFilterText) {
-        // Ensure that the viewer is still available
-        if (mViewer != null && !mViewer.getControl().isDisposed()) {
-
-            // Loop on the registered filters to apply the new text
-            for (final ViewerFilter vViewerFilter : mViewer.getFilters()) {
-                if (vViewerFilter instanceof AbstractFilter) {
-                    ((AbstractFilter) vViewerFilter).setFilter(pNewFilterText);
-                }
-            }
-
-            // Finally refresh the viewer content
-            refreshViewer();
-        }
-    }
-
-    /**
-     * Return the filters that will be associated to the viewer by {@link #addFilters()}.
-     * By default, this returns a table of filters containing a new {@link NamePropertyFilter} filter.
-     * 
-     * @return The table of filters to associate to the viewer
-     */
-    protected AbstractFilter[] getFilters() {
-        return new AbstractFilter[] {new NamePropertyFilter()};
-    }
-
-    /**
-     * Add actions to the menu bar.
-     * 
-     * By default, this method doesn't add any actions, it's only update the menu bar. User can override
-     * this method to add actions to the menu bar. User can call at the end of the overriding method
-     * super {@link #addMenuBarActions()} to update the menu bar.
-     */
-    protected void addMenuBarActions() {
-        getActionBars().getMenuManager().update(true);
-    }
-
-    /**
-     * Add actions to the tool bar.
-     * 
-     * By default, this method doesn't add any actions, it's only update the tool bar. User can override
-     * this method to add actions to the tool bar. User can call at the end of the overriding method
-     * super {@link #addToolBarActions()} to update the tool bar.
-     */
-    protected void addToolBarActions() {
-        getActionBars().getToolBarManager().update(true);
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractTreePage.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractTreePage.java
deleted file mode 100644
index aa3aca4..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractTreePage.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.view;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.jface.viewers.ViewerColumn;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.handlers.CollapseAllHandler;
-import org.eclipse.ui.handlers.ExpandAllHandler;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.CommonUIActivator.Implementation;
-
-/**
- * Abstract base of all the Pages to use in a PageBookView,
- * and which includes a tree.
- * 
- * This implementation doesn't manage the columns in the tree,
- * but it inherits of all the standard mechanisms like the filters, the editing domain mechanisms, etc.
- * 
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractTreePage
-    extends AbstractColumnViewerPage {
-
-    /**
-     * Default constructor, which allows to specify if the viewer must be read only or not.
-     * 
-     * @param pReadOnlyMode <code>true</code> if this view is in read only mode, <code>false</code> otherwise
-     */
-    public AbstractTreePage(final boolean pReadOnlyMode) {
-        super(pReadOnlyMode);
-    }
-    
-    /**
-     * Advanced constructor which takes the name of the required column, an array with the optional columns name,
-     * and a boolean which specifies if the viewer must be in read only mode or not.
-     * 
-     * The required column will mandatory be visible and can't be hidden. 
-     * 
-     * @param pRequiredColumnName The name of the required column name
-     * @param pColumnsName The array of optional columns name. This list must not contain the required column name
-     * @param pReadOnlyMode <code>true</code> if this view is in read only mode, <code>false</code> otherwise
-     */
-    public AbstractTreePage(
-        final String pRequiredColumnName, 
-        final String[] pColumnsName, 
-        final boolean pReadOnlyMode) {
-        super(pRequiredColumnName, pColumnsName, pReadOnlyMode);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewer createViewer(final Composite pParent) {
-        return new TreeViewer(pParent, SWT.MULTI);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public TreeViewer getViewer() {
-        return (TreeViewer) super.getViewer();
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Overridden to expand or collapse the current element on which
-     * the double click is performed.
-     */
-    @Override
-    protected void handleDoubleClick(final DoubleClickEvent pEvent) {
-        // Get the element on which the double click is performed
-        final IStructuredSelection vSelection = (IStructuredSelection) pEvent.getSelection();
-        final Object vSelectedeElement = vSelection.getFirstElement();
-        
-        // If the element is expandable, change is expand state
-        if (getViewer().isExpandable(vSelectedeElement)) {
-            getViewer().setExpandedState(vSelectedeElement, !getViewer().getExpandedState(vSelectedeElement));
-        }
-    }
-
-    /**
-     * Create the expand all action.
-     * 
-     * @return The expand all action created
-     */
-    protected IAction createExpandAllAction() {
-        // Get the action image
-        final ImageDescriptor vImageDescriptor = 
-            CommonUIActivator.getPlugin().getImageRegistry().getDescriptor(
-                Implementation.ICON_EXPAND_ALL_KEY);
-        
-        // Get the action label
-        final String vActionLabel = 
-            CommonUIActivator.getMessages().getString("AbstractTreePage.action.expandall"); //$NON-NLS-1$ 
-            
-        // Create the action
-        final IAction vExpandAllAction = new Action(vActionLabel, vImageDescriptor) {
-
-            /**
-             * {@inheritDoc} 
-             */
-            @Override
-            public void run() {
-                // Prepare the expand action asynchronously, on the UI thread
-                AbstractTreePage.this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                    /**
-                     * {@inheritDoc} 
-                     */
-                    @Override
-                    public void run() {
-                        // Create the action handler on the viewer
-                        final ExpandAllHandler vExpandAllHandler = 
-                            new ExpandAllHandler(AbstractTreePage.this.getViewer());
-                        
-                        // And finally execute it
-                        vExpandAllHandler.execute(null);
-                    }
-                });
-            }
-        };
-        
-        return vExpandAllAction;
-    }
-
-    /**
-     * Create the collapse all action.
-     * 
-     * @return The collapse all action created
-     */
-    protected IAction createCollapseAllAction() {
-        // Get the action image
-        final ImageDescriptor vImageDescriptor = 
-            CommonUIActivator.getPlugin().getImageRegistry().getDescriptor(
-                Implementation.ICON_COLLAPSE_ALL_KEY);
-        
-        // Get the action label
-        final String vActionLabel = 
-            CommonUIActivator.getMessages().getString("AbstractTreePage.action.collapseall"); //$NON-NLS-1$ 
-            
-        // Create the action
-        final IAction vCollapseAllAction = new Action(vActionLabel, vImageDescriptor) { 
-
-            /**
-             * {@inheritDoc} 
-             */
-            @Override
-            public void run() {
-                // Prepare the collapse action asynchronously, on the UI thread
-                AbstractTreePage.this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
-
-                    /**
-                     * {@inheritDoc} 
-                     */
-                    @Override
-                    public void run() {
-                        // Create the action handler on the viewer
-                        final CollapseAllHandler vCollapseAllHandler = 
-                            new CollapseAllHandler(AbstractTreePage.this.getViewer());
-                        
-                        // And finally execute it
-                        vCollapseAllHandler.execute(null);
-                    }
-                });
-            }
-        };
-        
-        return vCollapseAllAction;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setLinesVisible(final boolean pShow) {
-        getViewer().getTree().setLinesVisible(pShow);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setHeaderVisible(final boolean pShow) {
-        getViewer().getTree().setHeaderVisible(pShow);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected boolean isViewerHeaderInitiallyVisible() {
-        return getViewer().getTree().getHeaderVisible();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected boolean isViewerLinesInitiallyVisible() {
-        return getViewer().getTree().getLinesVisible();
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected boolean hideColumn(final String pColumnName) {
-        
-        boolean vColumnHidden = false;
-        
-        // Try to find the column by its name
-        final TreeColumn vColumn = getColumn(pColumnName);
-        
-        // If the column is found, dispose it
-        if (vColumn != null) {
-            vColumn.dispose();
-            
-            // Remember that the column was hidden
-            vColumnHidden = true;
-        }
-        
-        return vColumnHidden;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected boolean isColumnVisible(final String pColumnName) {
-        return getColumn(pColumnName) != null;
-    }
-
-    /**
-     * Find and return an existing column in the tree viewer from its name.
-     * 
-     * @param pColumnName The name of the column to find
-     * @return The column found if any, and <code>null</code> otherwise
-     */
-    protected TreeColumn getColumn(final String pColumnName) {
-        
-        TreeColumn vColumnFound = null;
-        
-        // Check if the searched name is valid
-        if (StringUtils.isNotEmpty(pColumnName)) {
-            
-            // Get an iterator on the list of existing columns in the tree viewer
-            final TreeColumn[] vColumnsArray = getViewer().getTree().getColumns();
-            
-            // Loop on the columns array until the column is found
-            for (int i = 0; i < vColumnsArray.length && vColumnFound == null; i++) {
-                TreeColumn vTreeColumn = vColumnsArray[i];
-                
-                if (vTreeColumn.getText().equals(pColumnName)) {
-                    vColumnFound = vTreeColumn;
-                }
-            }
-        }
-        
-        return vColumnFound;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * This is customised to add the expand all and collapse all actions. 
-     */
-    @Override
-    protected void addToolBarActions() {
-        addExpandAllAction();
-        addCollapseAllAction();
-        super.addToolBarActions();
-    }
-
-    /**
-     * Add to the toolbar the action to expand all the tree content.
-     */
-    protected void addExpandAllAction() {
-        addToolBarAction(createExpandAllAction());
-    }
-
-    /**
-     * Add to the toolbar the action to collapse all the tree content.
-     */
-    protected void addCollapseAllAction() {
-        addToolBarAction(createCollapseAllAction());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createRequiredViewerColumn() {
-        // Nothing to do as this implementation doesn't manage multiple columns
-        return null;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected ViewerColumn createViewerColumn(final String pColumnName) {
-        // Nothing to do as this implementation doesn't manage multiple columns
-        return null;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected ViewerColumn createViewerColumn(final String pColumnName, final int pIndex) {
-        // Nothing to do as this implementation doesn't manage multiple columns
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected ViewerColumn createViewerColumn(
-        final String pColumnName, 
-        final ColumnLabelProvider pColumnLabelProvider) {
-        // Nothing to do as this implementation doesn't manage multiple columns
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected ViewerColumn createViewerColumn(
-        final String pColumnName,
-        final ColumnLabelProvider pColumnLabelProvider,
-        final EditingSupport pEditingSupport) {
-        // Nothing to do as this implementation doesn't manage multiple columns
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected ViewerColumn createViewerColumn(final String pColumnName, final String pPropertyID) {
-        // Nothing to do as this implementation doesn't manage multiple columns
-        return null;
-    }
-
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractTreeTablePage.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractTreeTablePage.java
deleted file mode 100644
index ccb45b4..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/view/AbstractTreeTablePage.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.view;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.views.properties.PropertyColumnLabelProvider;
-import org.polarsys.esf.core.common.ui.editingsupport.ValidatedPropertyEditingSupport;
-
-/**
- * Abstract base of all the Pages to use in a PageBookView,
- * and which contains a tree table as viewer.
- * 
- * This page inherits of all the standard mechanisms like the filters, the editing domain mechanisms, etc.
- * 
- * @author  $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractTreeTablePage
-    extends AbstractTreePage {
-
-    /**
-     * A constructor that takes the array of columns name to create in the tree table. 
-     * This constructor is used in the case of adding of the columns visibility action.
-     * 
-     * @param pRequiredColumnName The name of the required column name that can't be hidden
-     * @param pColumnsName The column names list. This list must not contain the requiredColumnName
-     * @param pReadOnlyMode <code>true</code>if this view is in mode read only <code>false</code> otherwise
-     */
-    public AbstractTreeTablePage(
-        final String pRequiredColumnName,
-        final String[] pColumnsName,
-        final boolean pReadOnlyMode) {
-        super(pRequiredColumnName, pColumnsName, pReadOnlyMode);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createRequiredViewerColumn() {
-        // Get the name of the required column
-        String vColumnName = getRequiredColumnName();
-        
-        // If the name is not valid, set a default empty value
-        if (StringUtils.isEmpty(vColumnName)) {
-            vColumnName = StringUtils.EMPTY;
-        }
-        
-        // Create the required column at the beginning, and set its width
-        final TreeViewerColumn vTreeViewerColumn = createViewerColumn(vColumnName, 0);
-        vTreeViewerColumn.getColumn().setWidth(150);
-        
-        return vTreeViewerColumn;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewer createViewer(final Composite pParent) {
-        
-        // Create a tree viewer allowing multiple selection 
-        final TreeViewer vTreeViewer = new TreeViewer(pParent, SWT.MULTI | SWT.FULL_SELECTION);
-
-        // Set the tree lines and header visible
-        // NB : Don't call directly the methods 'setLinesVisible' and 'setHeaderVisible' 
-        //      of this instance as the tree is not already created and initialised 
-        vTreeViewer.getTree().setLinesVisible(true);
-        vTreeViewer.getTree().setHeaderVisible(true);
-        return vTreeViewer;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createViewerColumn(final String pColumnName, final int pIndex) {
-        
-        // Create a new column at the given index
-        final TreeViewerColumn vTreeViewerColumn = new TreeViewerColumn(getViewer(), SWT.LEFT, pIndex);
-        vTreeViewerColumn.getColumn().setText(pColumnName);
-        vTreeViewerColumn.getColumn().pack();
-        
-        return vTreeViewerColumn;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createViewerColumn(final String pColumnName) {
-        return createViewerColumn(pColumnName, getViewer().getTree().getColumnCount());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createViewerColumn(
-        final String pColumnName, 
-        final ColumnLabelProvider pColumnLabelProvider) {
-        
-        // Create a new column
-        final TreeViewerColumn vTreeViewerColumn = createViewerColumn(pColumnName);
-        
-        // Set the column label provider with the instance given in parameter
-        vTreeViewerColumn.setLabelProvider(pColumnLabelProvider);
-        
-        return vTreeViewerColumn;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createViewerColumn(
-        final String pColumnName,
-        final ColumnLabelProvider pColumnLabelProvider,
-        final EditingSupport pEditingSupport) {
-        
-        // Create a new column
-        final TreeViewerColumn vTreeViewerColumn = createViewerColumn(pColumnName);
-        
-        // Set the column label provider and editing support
-        // with the instance given in parameter
-        vTreeViewerColumn.setLabelProvider(pColumnLabelProvider);
-        vTreeViewerColumn.setEditingSupport(pEditingSupport);
-        return vTreeViewerColumn;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected TreeViewerColumn createViewerColumn(final String pColumnName, final String pPropertyID) {
-        
-        // Create a new column
-        final TreeViewerColumn vTreeViewerColumn = createViewerColumn(pColumnName);
-        
-        // Set the column label provider and editing support based on the property whose
-        // id is given in parameter
-        vTreeViewerColumn.setLabelProvider(new PropertyColumnLabelProvider(getPropertySourceProvider(), pPropertyID));
-        vTreeViewerColumn.setEditingSupport(
-            new ValidatedPropertyEditingSupport(
-                getViewer(), 
-                getPropertySourceProvider(), 
-                pPropertyID,
-                getActionBars().getStatusLineManager()));
-        
-        return vTreeViewerColumn;
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/widget/ActiveProjectControlContribution.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/widget/ActiveProjectControlContribution.java
deleted file mode 100644
index 92fa253..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/widget/ActiveProjectControlContribution.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.widget;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.common.ui.URIEditorInput;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE.SharedImages;
-import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-
-/**
- * Control contribution used to display the current active project
- * according to the active editor.
- *
- * This is made to ease user work, by displaying directly on which project he is working.
- *
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class ActiveProjectControlContribution
-    extends WorkbenchWindowControlContribution
-    implements IPartListener {
-
-    /** The default label for the active project name. */
-    private static final String DEFAULT_PROJECT_NAME = CommonUIActivator.getMessages().getString(
-        "ActiveProjectControlContribution.default.projectname"); //$NON-NLS-1$
-
-    /** The composite containing all the widgets used to display the active project name. */
-    private ActiveProjectComposite mActiveProjectComposite = null;
-
-    /** The last editor activated and used to get the active project name. */
-    private IEditorPart mActiveEditorPart = null;
-
-    /**
-     * Default constructor.
-     */
-    public ActiveProjectControlContribution() {
-        // Register this new instance as part listener
-        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(this);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * When the control contribution is disposed, removed it from the part listeners.
-     */
-    @Override
-    public void dispose() {
-        // Unregister the instance from the part listeners
-        IWorkbenchWindow vWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        if (vWorkbenchWindow != null) {
-            vWorkbenchWindow.getPartService().removePartListener(this);
-        }
-
-        // Call the parent method
-        super.dispose();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected Control createControl(final Composite pParent) {
-        // Create a new composite containing all the widgets to display for the active project
-        mActiveProjectComposite = new ActiveProjectComposite(pParent);
-
-        return mActiveProjectComposite;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void partActivated(final IWorkbenchPart pPart) {
-        // Ensure that the activated part is an editor
-        if (pPart instanceof IEditorPart) {
-
-            // Remember of the active editor
-            mActiveEditorPart = (IEditorPart) pPart;
-
-            // Get the editor input
-            IEditorInput vEditorInput = mActiveEditorPart.getEditorInput();
-
-            // Check the type of the editor input to find the file used as input
-            IFile vFileInput = null;
-            if (vEditorInput instanceof IFileEditorInput) {
-                // For a file editor input, get directly the file object
-                vFileInput = ((IFileEditorInput) vEditorInput).getFile();
-
-            } else if (vEditorInput instanceof URIEditorInput) {
-                // For an URI editor input, get the file object by looking for in
-                // the workspace content, the file which corresponds to the given URI
-
-                // ... Build the file path from the URI
-                IPath vFilePath = new Path(((URIEditorInput) vEditorInput).getURI().toPlatformString(true));
-
-                // ... Try to find the file from the build path, in the workspace content
-                vFileInput = ResourcesPlugin.getWorkspace().getRoot().getFile(vFilePath);
-            }
-
-            // Finally, if the input file is found, try to get its parent project name
-            // to update the controls value
-            if (vFileInput != null && vFileInput.getProject() != null) {
-                mActiveProjectComposite.updateActiveProjectControls(vFileInput.getProject().getName());
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Treat this event as a part activation.
-     * Otherwise, nothing is done by default.
-     */
-    @Override
-    public void partBroughtToTop(final IWorkbenchPart pPart) {
-        partActivated(pPart);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void partClosed(final IWorkbenchPart pPart) {
-        // If the last active editor used is the one which is closed,
-        // then reset the controls content to the default value
-        if (mActiveProjectComposite != null && pPart.equals(mActiveEditorPart)) {
-            mActiveProjectComposite.updateActiveProjectControls(null);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void partDeactivated(final IWorkbenchPart pPart) {
-        // Nothing to do
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void partOpened(final IWorkbenchPart pPart) {
-        // Nothing to do
-    }
-
-    /**
-     * Composite which contains all the widgets used to display the current project.
-     */
-    private class ActiveProjectComposite
-        extends Composite {
-
-        /** The preferred width for the composite. */
-        private static final int CONTROL_WIDTH = 250;
-
-        /** The preferred height for the composite. */
-        private static final int CONTROL_HEIGHT = 17;
-
-        /** The text used to display the active project name. */
-        private Text mActiveProjectNameText = null;
-
-        /** The introduction label. */
-        private Label mActiveProjectNameLabel = null;
-
-        /** The opened project image. */
-        private final Image mOpenedProjectImage = PlatformUI.getWorkbench().getSharedImages()
-            .getImage(SharedImages.IMG_OBJ_PROJECT);
-
-        /** The closed project image. */
-        private final Image mClosedProjectImage = PlatformUI.getWorkbench().getSharedImages()
-            .getImage(SharedImages.IMG_OBJ_PROJECT_CLOSED);
-
-        /**
-         * Default constructor.
-         *
-         * @param pParent The parent composite
-         */
-        ActiveProjectComposite(final Composite pParent) {
-            // Call the parent method
-            super(pParent, SWT.FLAT);
-
-            // Create all the content of the composite
-            createContent(pParent);
-        }
-
-        /**
-         * Create all the widget to include in this composite instance.
-         *
-         * @param pParent The parent composite
-         */
-        private void createContent(final Composite pParent) {
-            // Prepare and set this instance layout and layout data
-            final GridLayout vLayout = new GridLayout();
-            vLayout.marginHeight = 0;
-            vLayout.marginWidth = 1;
-            setLayout(vLayout);
-            setFont(pParent.getFont());
-
-            // Create a child composite and set its layout and display properties
-            final Composite vChildComposite = new Composite(this, SWT.BORDER);
-            vChildComposite.setBackground(getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-            final GridLayout vChildLayout = new GridLayout(3, false);
-            vChildLayout.marginHeight = 0;
-            vChildLayout.marginWidth = 0;
-            vChildComposite.setLayout(vChildLayout);
-            GridData vGridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
-            vGridData.widthHint = CONTROL_WIDTH;
-            vChildComposite.setLayoutData(vGridData);
-            vChildComposite.setFont(pParent.getFont());
-
-            // Create the widgets needed
-            createActiveProjectLabel(vChildComposite);
-            createActiveProjectText(vChildComposite);
-
-            // Update the text and label values with the default text and image
-            updateActiveProjectControls(null);
-        }
-
-        /**
-         * Create the active project text.
-         *
-         * @param pParent The parent composite
-         */
-        private void createActiveProjectText(final Composite pParent) {
-            // Create the text and set its layout
-            mActiveProjectNameText = new Text(pParent, SWT.SINGLE | SWT.READ_ONLY);
-            GridData vGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
-            vGridData.heightHint = CONTROL_HEIGHT;
-            mActiveProjectNameText.setLayoutData(vGridData);
-
-            // Set the text background
-            mActiveProjectNameText.setBackground(pParent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-        }
-
-        /**
-         * Create the active project label.
-         *
-         * @param pParent The parent composite
-         */
-        private void createActiveProjectLabel(final Composite pParent) {
-            // Create the label and set its layout
-            mActiveProjectNameLabel = new Label(pParent, SWT.NONE);
-            mActiveProjectNameLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 0, 0));
-
-            // Set the label background
-            mActiveProjectNameLabel.setBackground(pParent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-        }
-
-        /**
-         * Update the active project text message, and the displayed image,
-         * according to the given project name.
-         *
-         * If the given value is <code>null</code> or empty, set the default text
-         * and image.
-         *
-         * @param pProjectName The new project name to display
-         */
-        private void updateActiveProjectControls(final String pProjectName) {
-
-            // Check if the given project name is valid
-            if (StringUtils.isNotEmpty(pProjectName)) {
-
-                // Update the text value and the label image
-                if (mActiveProjectNameText != null) {
-                    mActiveProjectNameText.setText(pProjectName);
-                }
-                if (mActiveProjectNameLabel != null) {
-                    mActiveProjectNameLabel.setImage(mOpenedProjectImage);
-                }
-
-            } else {
-                // The given project name is not valid, set the default values
-                // for the text value and the label image
-                if (mActiveProjectNameText != null) {
-                    mActiveProjectNameText.setText(DEFAULT_PROJECT_NAME);
-                }
-                if (mActiveProjectNameLabel != null) {
-                    mActiveProjectNameLabel.setImage(mClosedProjectImage);
-                }
-
-            }
-        }
-    }
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/widget/listener/ShowHideAdapter.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/widget/listener/ShowHideAdapter.java
deleted file mode 100644
index 2f96735..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/widget/listener/ShowHideAdapter.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.widget.listener;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.CommonUIActivator.Implementation;
-
-/**
- * Selection listener used to hide / show a composite on action.
- * It can typically be used for an advanced button.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- * 
- */
-public class ShowHideAdapter
-    extends SelectionAdapter {
-
-    /** Default image. */
-    public static final Image DEFAULT_SHOW_IMAGE = CommonUIActivator.getPlugin().getImageRegistry()
-        .get(Implementation.ICON_ADVANCED_SHOW_KEY);
-
-    /** Default image. */
-    public static final Image DEFAULT_HIDE_IMAGE = CommonUIActivator.getPlugin().getImageRegistry()
-        .get(Implementation.ICON_ADVANCED_HIDE_KEY);
-
-    /** Default label. */
-    public static final String DEFAULT_SHOW_LABEL =
-        CommonUIActivator.getMessages().getString("ShowHideAdapter.default.show"); //$NON-NLS-1$
-
-    /** Default label. */
-    public static final String DEFAULT_HIDE_LABEL =
-        CommonUIActivator.getMessages().getString("ShowHideAdapter.default.hide"); //$NON-NLS-1$
-
-    /** Image for advanced button. */
-    private Image mShowAdvancedImage = DEFAULT_SHOW_IMAGE;
-
-    /** Image for advanced button. */
-    private Image mHideAdvancedImage = DEFAULT_HIDE_IMAGE;
-
-    /** Label for advanced button. */
-    private String mShowAdvancedLabel = DEFAULT_SHOW_LABEL;
-
-    /** Label for advanced button. */
-    private String mHideAdvancedLabel = DEFAULT_HIDE_LABEL;
-
-    /** Memorise last status of composite to hide. */
-    private boolean mHidden = false;
-
-    /** Composite to hide/show. */
-    private Composite mCompositeToToggle = null;
-
-    /** Button click to hide/show composite. */
-    private Button mToggleButton = null;
-
-    /** Map of default values associated to controls. */
-    private Map<Control, Object> mDefaultControlsValue = null;
-
-    /**
-     * Default constructor, with default.
-     * 
-     * @param pAdvancedComposite Composite for which hide/show ability must be implemented
-     * @param pButton Button which trigger a switch
-     */
-    public ShowHideAdapter(final Button pButton, final Composite pAdvancedComposite) {
-
-        super();
-
-        mCompositeToToggle = pAdvancedComposite;
-        mToggleButton = pButton;
-
-        // Initialise map of default control values
-        snapshotControlStates();
-
-    }
-
-    /**
-     * Refresh (or create) snapshot of control states.
-     * 
-     * This method is automatically call by constructor.
-     * External call should only be used if composite to show/hide have a structure modification.
-     */
-    public void snapshotControlStates() {
-        if (mCompositeToToggle != null) {
-            mDefaultControlsValue = new HashMap<Control, Object>();
-            rememberDefaultValues(mCompositeToToggle);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void widgetSelected(final SelectionEvent pEvent) {
-        // Negate the hidden status
-        mHidden = !mHidden;
-        switchComposite();
-    }
-
-    /**
-     * Switch Composite, based on hidden status.
-     */
-    private void switchComposite() {
-
-        if (mCompositeToToggle != null) {
-            // Show / hide composite
-            if (mHidden) {
-                hideComposite();
-            } else {
-                showComposite();
-            }
-        }
-
-    }
-
-    /**
-     * Show composite.
-     */
-    private void showComposite() {
-        mCompositeToToggle.setVisible(true);
-        mToggleButton.setText(mHideAdvancedLabel);
-        mToggleButton.setImage(mHideAdvancedImage);
-
-        resizeButton();
-    }
-
-    /**
-     * Hide composite.
-     */
-    private void hideComposite() {
-        mCompositeToToggle.setVisible(false);
-        mToggleButton.setText(mShowAdvancedLabel);
-        mToggleButton.setImage(mShowAdvancedImage);
-
-        restoreDefaultValues(mCompositeToToggle);
-
-        resizeButton();
-    }
-
-    /**
-     * Resize button.
-     */
-    private void resizeButton() {
-        // Compute the button size as the label length can change
-        Point vComputedSize = mToggleButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-        mToggleButton.setSize(vComputedSize);
-    }
-
-    /**
-     * Construct a map of control / value to be able to restore when main composite is hidden.
-     * It is a recursive method.
-     * 
-     * This method must be recall if composite structure changes.
-     * 
-     * @param pComposite The parent in which children are search
-     */
-    private void rememberDefaultValues(final Composite pComposite) {
-
-        // Iterate through all children of this composite
-        for (Control vChildrenControl : pComposite.getChildren()) {
-            // If this children is itself a composite and have children, explore its children too
-            if (vChildrenControl instanceof Composite) {
-                Composite vCompositeChildren = (Composite) vChildrenControl;
-                if (vCompositeChildren.getChildren().length > 0) {
-                    rememberDefaultValues(vCompositeChildren);
-                }
-            } else {
-                // Remember default value for this child
-                mDefaultControlsValue.put(vChildrenControl, getDefaultValue(vChildrenControl));
-            }
-        }
-
-    }
-
-    /**
-     * From map constructed before, restore default values for children control of given composite.
-     * It is a recursive method.
-     * 
-     * @param pComposite The parent in which children are search
-     */
-    private void restoreDefaultValues(final Composite pComposite) {
-
-        // Iterate through all children of this composite
-        for (Control vChildrenControl : pComposite.getChildren()) {
-
-            // If this children is itself a composite and have children, explore its children too
-            if (vChildrenControl instanceof Composite) {
-                Composite vCompositeChildren = (Composite) vChildrenControl;
-                if (vCompositeChildren.getChildren().length > 0) {
-                    restoreDefaultValues(vCompositeChildren);
-                }
-            } else {
-                // Restore value for this child
-                Object vDefaultValue = mDefaultControlsValue.get(vChildrenControl);
-                if (vDefaultValue != null) {
-                    restoreDefaultValue(vChildrenControl, vDefaultValue);
-                }
-            }
-        }
-    }
-
-    /**
-     * Restore default value for a specific children control.
-     * 
-     * No control are done on default value parameter, because map construction is internal.
-     * 
-     * This method can be override to offer a more specific approach of how value should be restored.
-     * 
-     * @param pChildrenControl Control for which default value will be restore
-     * @param pDefaultValue Default value to restore
-     */
-    protected void restoreDefaultValue(final Control pChildrenControl, final Object pDefaultValue) {
-        if (pChildrenControl instanceof Text) {
-            ((Text) pChildrenControl).setText((String) pDefaultValue);
-        } else if (pChildrenControl instanceof Button) {
-            // For a button, restore selection value. This is a minimal behaviour, not specific. It is because
-            // there is no pretty sure solution to define which kind of widget a button is.
-            Button vButton = (Button) pChildrenControl;
-            vButton.setSelection((Boolean) pDefaultValue);
-        }
-    }
-
-    /**
-     * Find default value for a given control.
-     * Mean of "default value" is specific to kind of control. For a check box, it will be the selected status for
-     * example.
-     * 
-     * This method can be override to offer a more specific approach of how value should be read.
-     * 
-     * @param pChildrenControl Control for which default value is search
-     * @return The default value, null if no one found
-     */
-    protected Object getDefaultValue(final Control pChildrenControl) {
-        Object vDefaultValue = null;
-
-        if (pChildrenControl instanceof Text) {
-            vDefaultValue = ((Text) pChildrenControl).getText();
-        } else if (pChildrenControl instanceof Button) {
-            // For a button, get selection value. This is a minimal behaviour, totally not specific. It is because
-            // there is no pretty sure solution to define which kind of widget a button is.
-            Button vButton = (Button) pChildrenControl;
-            vDefaultValue = vButton.getSelection();
-        }
-
-        return vDefaultValue;
-    }
-
-    /**
-     * @return The showAdvancedImage
-     */
-    public Image getShowAdvancedImage() {
-        return mShowAdvancedImage;
-    }
-
-    /**
-     * @param pShowAdvancedImage The showAdvancedImage to set
-     */
-    public void setShowAdvancedImage(final Image pShowAdvancedImage) {
-        mShowAdvancedImage = pShowAdvancedImage;
-    }
-
-    /**
-     * @return The hideAdvancedImage
-     */
-    public Image getHideAdvancedImage() {
-        return mHideAdvancedImage;
-    }
-
-    /**
-     * @param pHideAdvancedImage The hideAdvancedImage to set
-     */
-    public void setHideAdvancedImage(final Image pHideAdvancedImage) {
-        mHideAdvancedImage = pHideAdvancedImage;
-    }
-
-    /**
-     * @return The hidden
-     */
-    public boolean isHidden() {
-        return mHidden;
-    }
-
-    /**
-     * Set hidden status, and switch composite if possible.
-     * 
-     * @param pHidden The hidden to set
-     */
-    public void setHidden(final boolean pHidden) {
-        mHidden = pHidden;
-        switchComposite();
-    }
-
-    /**
-     * @return The compositeToToggle
-     */
-    public Composite getCompositeToToggle() {
-        return mCompositeToToggle;
-    }
-
-    /**
-     * @param pCompositeToToggle The compositeToToggle to set
-     */
-    public void setCompositeToToggle(final Composite pCompositeToToggle) {
-        mCompositeToToggle = pCompositeToToggle;
-    }
-
-    /**
-     * @return The toggleButton
-     */
-    public Button getToggleButton() {
-        return mToggleButton;
-    }
-
-    /**
-     * @param pToggleButton The toggleButton to set
-     */
-    public void setToggleButton(final Button pToggleButton) {
-        mToggleButton = pToggleButton;
-    }
-
-    /**
-     * @return The showAdvancedLabel
-     */
-    public String getShowAdvancedLabel() {
-        return mShowAdvancedLabel;
-    }
-
-    /**
-     * @param pShowAdvancedLabel The showAdvancedLabel to set
-     */
-    public void setShowAdvancedLabel(final String pShowAdvancedLabel) {
-        mShowAdvancedLabel = pShowAdvancedLabel;
-    }
-
-    /**
-     * @return The hideAdvancedLabel
-     */
-    public String getHideAdvancedLabel() {
-        return mHideAdvancedLabel;
-    }
-
-    /**
-     * @param pHideAdvancedLabel The hideAdvancedLabel to set
-     */
-    public void setHideAdvancedLabel(final String pHideAdvancedLabel) {
-        mHideAdvancedLabel = pHideAdvancedLabel;
-    }
-
-    /**
-     * @return The defaultControlsValue
-     */
-    public Map<Control, Object> getDefaultControlsValue() {
-        return mDefaultControlsValue;
-    }
-
-    /**
-     * @param pDefaultControlsValue The defaultControlsValue to set
-     */
-    public void setDefaultControlsValue(final Map<Control, Object> pDefaultControlsValue) {
-        mDefaultControlsValue = pDefaultControlsValue;
-    }
-
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/wizard/AbstractGenericWizard.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/wizard/AbstractGenericWizard.java
deleted file mode 100644
index c761122..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/wizard/AbstractGenericWizard.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.wizard;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-import org.polarsys.esf.core.common.ui.job.FocusViewJob;
-
-/**
- * Generic wizard. It handles run of thread and logging, to ensure the same behaviour in all ESF wizards.
- *
- * TODO : add an adapt to ask to subclasses if they can send a project back to centralize the
- * <code>SelectAndRevealResourceJob</code> call.
- *
- * @author $Author: jdumont $
- * @version $Revision: 90 $
- *
- */
-public abstract class AbstractGenericWizard
-    extends Wizard {
-
-    /** ID for ESF info log. */
-    private static final String ID_SA_INFO_LOG = "org.polarsys.esf.view.log"; //$NON-NLS-1$
-
-    /** Title for job which focus on info log view after import. */
-    private static final String FOCUS_LOG_JOB_LABEL = CommonUIActivator.getMessages().getString(
-        "AbstractGenericWizard.refresh.workspace"); //$NON-NLS-1$
-
-    /** Constant used to indicate an unknown plugin id. */
-    private static final String UNKNOWN_PLUGIN_ID = "unknown"; //$NON-NLS-1$
-
-    /** Message show to user when finish is successful. */
-    private String mSuccessfulMessage = null;
-
-    /** Thread can be cancel (or not). */
-    private boolean mCancellable = false;
-
-    /**
-     * Default constructor.
-     *
-     * @param pSuccessfulMessage Message show to user when finish is successful.
-     * @param pCancellable true means that process launched will offer options to cancel it
-     */
-    public AbstractGenericWizard(final String pSuccessfulMessage, final boolean pCancellable) {
-        super();
-        setNeedsProgressMonitor(true);
-        mSuccessfulMessage = pSuccessfulMessage;
-        mCancellable = pCancellable;
-    }
-
-    /**
-     * Hook offered to gather information from IHM before running action in non UI thread.
-     *
-     * Default implementation do nothing.
-     */
-    protected void prepareFinish() {
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Do a synchronous call (in same thread than wizard) to prepareFinish, then run a IRunnable in a separate thread.
-     * This configuration need to get information from IHM in prepareFinish().
-     */
-    @Override
-    public boolean performFinish() {
-        prepareFinish();
-
-        // Create job
-        final IRunnableWithProgress vRunnable = new IRunnableWithProgress() {
-
-            /**
-             * {@inheritDoc}
-             */
-            @Override
-            public void run(final IProgressMonitor pMonitor) throws InvocationTargetException, InterruptedException {
-
-                // Perform the finish action and wrap the returned status
-                // to uniform the returns to display
-                IStatus vWrappedStatus = wrapStatus(doFinish(pMonitor));
-
-                // Extract the status type to display it correctly
-                int vHandleType = extractStatusType(vWrappedStatus);
-
-                StatusManager.getManager().handle(vWrappedStatus, vHandleType);
-
-                pMonitor.done();
-
-                // Show log view
-                showFinalView();
-            }
-        };
-
-        // Run job, with no cancel option
-        try {
-            getContainer().run(true, mCancellable, vRunnable);
-
-        } catch (final InvocationTargetException | InterruptedException pException) {
-            CommonUIActivator.logError(pException.getMessage(), pException);
-        }
-
-        // Always return true, as the wizard must not be kept opened even if something goes wrong
-        return true;
-    }
-
-    /**
-     * Wrap a given status to uniform how the returns are displayed
-     * in the log view. If no status is given, build a default OK status.
-     *
-     * @see AbstractGenericWizard#buildWrappedStatus(IStatus)
-     *
-     * @param pStatus A given status or null if no specific return is available
-     * @return The wrapped status
-     */
-    protected IStatus wrapStatus(final IStatus pStatus) {
-
-        IStatus vWrappedStatus = null;
-
-        // Check the given status
-        if (pStatus == null) {
-            // No status is given, build a new default OK status
-            // to uniform the return in case of success
-            vWrappedStatus = new Status(Status.OK, CommonUIActivator.getPlugin().getSymbolicName(), mSuccessfulMessage);
-
-        } else {
-            // A status is given, thus extract its information if possible
-            // to build the wrapped status
-            vWrappedStatus = buildWrappedStatus(pStatus);
-
-        }
-
-        return vWrappedStatus;
-    }
-
-    /**
-     * Build a wrapped status from a one, to uniform how the returns are displayed
-     * in the log view. The wrapped status can manage the multi status.
-     *
-     * @param pStatus A given status, which must not be null
-     * @return The wrapped status built
-     */
-    protected IStatus buildWrappedStatus(final IStatus pStatus) {
-        IStatus vWrappedStatus = null;
-
-        // Extract the status message, or take the 'successful' message for this
-        // action if the status is OK or Info or Warning
-        String vStatusMessage = null;
-        switch (pStatus.getSeverity()) {
-            case IStatus.OK:
-            case IStatus.INFO:
-            case IStatus.WARNING:
-                vStatusMessage = mSuccessfulMessage;
-                break;
-            default:
-                if (StringUtils.isNotEmpty(pStatus.getMessage())) {
-                    vStatusMessage = pStatus.getMessage();
-                }
-                break;
-
-        }
-
-        // Extract the status plugin id, or take the generic
-        // plugin if its not given
-        String vStatusPlugin = CommonUIActivator.getPlugin().getSymbolicName();
-        if (StringUtils.isNotEmpty(pStatus.getPlugin()) && !UNKNOWN_PLUGIN_ID.equals(pStatus.getPlugin())) {
-            vStatusPlugin = pStatus.getPlugin();
-        }
-
-        if (pStatus.isMultiStatus()) {
-            // Build a new status to wrap the given multi status, and ensure
-            // to always display a uniform return
-            vWrappedStatus = new MultiStatus(vStatusPlugin, pStatus.getCode(), vStatusMessage, pStatus.getException());
-
-            // Merge the status children to keep all the status stack
-            // NB : This will set the multi-status severity according to the children
-            // maximum severity
-            ((MultiStatus) vWrappedStatus).merge(pStatus);
-
-        } else {
-            // Build a new status to wrap the given single status, and ensure
-            // to always display uniform return
-            vWrappedStatus = new Status(pStatus.getSeverity(), vStatusPlugin, vStatusMessage);
-        }
-
-        return vWrappedStatus;
-    }
-
-    /**
-     * Extract the type of a status to know how it can be added
-     * in the status manager. By default it's always a 'LOG', and if
-     * the status is an error, add the 'BLOCK' type.
-     *
-     * @param pStatus The given status from which the type must be extracted, or null
-     * @return The status type found
-     */
-    protected int extractStatusType(final IStatus pStatus) {
-
-        // By default, the status is a log
-        int vStatusType = StatusManager.LOG;
-
-        if ((pStatus != null) && pStatus.matches(Status.ERROR)) {
-            // If the status given is an error, add the Block type
-            vStatusType |= StatusManager.BLOCK;
-        }
-
-        return vStatusType;
-    }
-
-    /**
-     * @return The successfulMessage
-     */
-    protected String getSuccessfulMessage() {
-        return mSuccessfulMessage;
-    }
-
-    /**
-     * @param pSuccessfulMessage The successfulMessage to set
-     */
-    protected void setSuccessfulMessage(final String pSuccessfulMessage) {
-        mSuccessfulMessage = pSuccessfulMessage;
-    }
-
-    /**
-     * Show a specific view at the end of the wizard. By default, show log view.
-     */
-    protected void showFinalView() {
-        FocusViewJob vJob = new FocusViewJob(FOCUS_LOG_JOB_LABEL, ID_SA_INFO_LOG);
-        vJob.schedule();
-    }
-
-    /**
-     * Do the concrete job for this wizard.
-     *
-     * Expected behaviour is that the subclass will return an IStatus with error if something goes wrong, or null
-     * otherwise.<br/>
-     * <br/>
-     *
-     * <b>Warning</b> : the <code>pMonitor.done()</code> should not be called in implementation, because performFinish()
-     * will do it after logging final message.<br/>
-     *
-     * <b>Warning</b> : the code in this method will be run in a non UI Thread. To get information from UI, do it before
-     * in {@link AbstractGenericWizard#prepareFinish()}.
-     * If an UI operation is done (like send focus to a specific view), call it in an UIJob.
-     *
-     * @param pMonitor Monitor used to follow job progression
-     * @return an exception if something goes wrong, or null otherwise
-     */
-    protected abstract IStatus doFinish(IProgressMonitor pMonitor);
-}
diff --git a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/wizard/NotImplementedWizard.java b/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/wizard/NotImplementedWizard.java
deleted file mode 100644
index 44c5632..0000000
--- a/core/org.polarsys.esf.core.common.ui/src/main/java/org/polarsys/esf/core/common/ui/wizard/NotImplementedWizard.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.common.ui.wizard;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IExportWizard;
-import org.eclipse.ui.IImportWizard;
-import org.eclipse.ui.IWorkbench;
-import org.polarsys.esf.core.common.ui.CommonUIActivator;
-
-/**
- * 
- * Wizard "not implemented", used to link with import not implemented yet.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class NotImplementedWizard
-    extends Wizard
-    implements IImportWizard, IExportWizard {
-
-    /** Title for dialog. */
-    private static final String DIALOG_MSG =
-        CommonUIActivator.getMessages().getString("NotImplementedWizard.warning.implemented.not.label"); //$NON-NLS-1$
-
-    /** Msg for dialog. */
-    private static final String DIALOG_TITLE =
-        CommonUIActivator.getMessages().getString("NotImplementedWizard.warning.implemented.not.title"); //$NON-NLS-1$
-
-    /**
-     * Default constructor.
-     */
-    public NotImplementedWizard() {
-        MessageDialog.openInformation(getShell(), DIALOG_TITLE, DIALOG_MSG);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void init(final IWorkbench pWorkbench, final IStructuredSelection pSelection) {
-        // Nothing to do here.
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean performFinish() {
-        // Nothing to do here.
-        return false;
-    }
-
-}
diff --git a/core/org.polarsys.esf.core.help/META-INF/MANIFEST.MF b/core/org.polarsys.esf.core.help/META-INF/MANIFEST.MF
index 5139ee9..1184eca 100644
--- a/core/org.polarsys.esf.core.help/META-INF/MANIFEST.MF
+++ b/core/org.polarsys.esf.core.help/META-INF/MANIFEST.MF
@@ -10,4 +10,3 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: src/main/resources/properties/plugin
-Export-Package: org.polarsys.esf.core.help.wizard
diff --git a/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/AbstractExampleWizard.java b/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/AbstractExampleWizard.java
deleted file mode 100644
index 31e838b..0000000
--- a/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/AbstractExampleWizard.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.help.wizard;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-import org.osgi.framework.Bundle;
-import org.polarsys.esf.core.common.file.FileTools;
-import org.polarsys.esf.core.common.messages.Messages;
-import org.polarsys.esf.core.common.metamodel.project.ProjectCreator;
-import org.polarsys.esf.core.common.ui.selection.SelectAndRevealResourceJob;
-import org.polarsys.esf.core.common.ui.wizard.AbstractGenericWizard;
-import org.polarsys.esf.core.help.CoreHelpActivator;
-
-/**
- * Abstract class for the example wizard creation.
- *
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public abstract class AbstractExampleWizard
-    extends AbstractGenericWizard
-    implements INewWizard {
-
-    /** Message provider. */
-    protected static final Messages MESSAGES_PROVIDER = CoreHelpActivator.getMessages();
-
-    /** Message for access ESF file error. */
-    protected static final String CREATE_FILE_ERROR = MESSAGES_PROVIDER
-        .getString("AbstractExampleWizard.library.file.create.error"); //$NON-NLS-1$
-
-    /** Title for wizard job. */
-    private static final String WIZARD_JOB_TITLE =
-        MESSAGES_PROVIDER.getString("AbstractExampleWizard.modeler.job.title"); //$NON-NLS-1$
-
-    /** Map of files to add with their directory. */
-    private Map<URI, IPath> mAdditionalFilesInfoMap = Collections.emptyMap();
-
-    /** Created project. */
-    private IProject mProjectExample = null;
-
-    /** Name of example project. */
-    private String mProjectTitle = null;
-
-    /** Name of the model file. */
-    private String mSAFile = null;
-
-    /** Name of the library file. */
-    private String mLibraryFile = null;
-
-    /** Relative path for the model file. */
-    private String mSAFilePath = null;
-
-    /** Relative path for library file. */
-    private String mLibraryFilePath = null;
-
-
-    /**
-     * Default constructor.
-     *
-     * @param pTitle Title of the example project
-     * @param pSourceDirectory URI corresponding to the source example directory
-     * @param pSAFile File name of ESF file
-     * @param pLibraryFile File name of feared events library file
-     * @param pSuccessMessage Message to display when the project creation is successful
-     */
-    public AbstractExampleWizard(
-        final String pTitle,
-        final URI pSourceDirectory,
-        final String pSAFile,
-        final String pLibraryFile,
-        final String pSuccessMessage) {
-
-        // Call the parent constructor
-        super(pSuccessMessage, false);
-
-        // Remember of the given parameters
-        mProjectTitle = pTitle;
-        mSAFile = pSAFile;
-        mLibraryFile = pLibraryFile;
-
-        mSAFilePath = pSourceDirectory.appendSegment(pSAFile).toString();
-        mLibraryFilePath = pSourceDirectory.appendSegment(pLibraryFile).toString();
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void init(final IWorkbench pWorkbench, final IStructuredSelection pSelection) {
-        // Nothing to do
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected IStatus doFinish(final IProgressMonitor pMonitor) {
-        IStatus vStatus = Status.OK_STATUS;
-        pMonitor.beginTask(WIZARD_JOB_TITLE, 6);
-
-        // Get ESF file to copy
-        try {
-            mProjectExample = ProjectCreator.createProject(mProjectTitle);
-            pMonitor.worked(1);
-
-            // Get location of ESF file in project
-            URI vTargetFile = URI.createFileURI(mProjectExample.getFile(mSAFile).getLocation().toOSString());
-            URI vSourceFile = getFileURI(mSAFilePath);
-            pMonitor.worked(1);
-
-            // Copy ESF file in project
-            FileTools.copyFile(vSourceFile, vTargetFile);
-            pMonitor.worked(1);
-
-            // Get library location in project and source to copy
-            vTargetFile = URI.createFileURI(mProjectExample.getFile(mLibraryFile).getLocation().toOSString());
-            vSourceFile = getFileURI(mLibraryFilePath);
-            pMonitor.worked(1);
-
-            FileTools.copyFile(vSourceFile, vTargetFile);
-            pMonitor.worked(1);
-
-            // Add the potential other files included in the example project
-            vStatus = addFilesToProject(pMonitor);
-            pMonitor.worked(1);
-
-        } catch (final IOException | CoreException pException) {
-            vStatus = createErrorStatus(CREATE_FILE_ERROR, pException);
-        }
-
-        // Then run an asynchronous job to show created project
-        if (vStatus.isOK()) {
-            SelectAndRevealResourceJob vSelectJob = new SelectAndRevealResourceJob(mProjectExample);
-            vSelectJob.schedule();
-        }
-
-        return vStatus;
-    }
-
-    /**
-     * Get the URI to access to a file located in the core help plugin,
-     * according to the relative path given in parameter.
-     *
-     * @param pFilePath File path, relative to the help bundle
-     * @return URI to access to the file
-     * @throws IOException Thrown when it is impossible to access to the file
-     */
-    protected final URI getFileURI(final String pFilePath) throws IOException {
-        // Get the file using the local bundle
-        return getFileURI(CoreHelpActivator.getPlugin().getBundle(), pFilePath);
-    }
-
-    /**
-     * Get the URI to access to a file located in plugin whose bundle is
-     * given in parameter. The file is identified with the its path
-     * relative to the bundle directory.
-     *
-     * @param pBundle The bundle containing the file
-     * @param pFilePath File path, relative to the given bundle
-     * @return URI to access to the file
-     * @throws IOException Thrown when it is impossible to access to the file
-     */
-    protected URI getFileURI(final Bundle pBundle, final String pFilePath) throws IOException {
-        URL vURL =
-            FileLocator.find(
-                pBundle,
-                new Path(pFilePath),
-                Collections.<String, String> emptyMap());
-
-        vURL = FileLocator.toFileURL(vURL);
-
-        return URI.createFileURI(vURL.getPath());
-    }
-
-    /**
-     * Make an error Status with message and exception.
-     *
-     * @param pMessage Message to display in status
-     * @param pException Exception to associate with error
-     * @return Status to encapsulate message and associated exception
-     */
-    protected static IStatus createErrorStatus(final String pMessage, final Exception pException) {
-        return new Status(
-            IStatus.ERROR,
-            CoreHelpActivator.getPlugin().getSymbolicName(),
-            pMessage,
-            pException);
-    }
-
-    /**
-     * Add optional files into the project directory.
-     * The default implementation adds the file identified in the map {@link #mAdditionalFilesInfoMap}.
-     *
-     * @param pMonitor Monitor used to follow the task progress
-     * @return An error status if something goes wrong, OK otherwise
-     */
-    public IStatus addFilesToProject(final IProgressMonitor pMonitor) {
-
-        IStatus vStatus = Status.OK_STATUS;
-
-        try {
-
-            for (Entry<URI, IPath> vAdditionalFilesInfoEntry : mAdditionalFilesInfoMap.entrySet()) {
-
-                // Get the entry key, which corresponds to the source file URI
-                // and extract from it the source file name decoded
-                URI vSourceFile = vAdditionalFilesInfoEntry.getKey();
-                String vSourceFileName  = URI.decode(vSourceFile.lastSegment());
-
-                // Get the entry value, which corresponds to the path of the target directory
-                // relative to the created example project
-                IPath vTargetDirectoryPath = vAdditionalFilesInfoEntry.getValue();
-
-                // Build the target URI of additional files in project, which may be
-                // located in the project root, or in a sub folder
-                // ... First initiate the path with the project location
-                IPath vTargetFilePath = getExampleProject().getLocation();
-
-                // ... Then add the target sub folder if needed
-                if (!Path.EMPTY.equals(vTargetDirectoryPath)) {
-                    vTargetFilePath = vTargetFilePath.append(vTargetDirectoryPath);
-                }
-
-                // ... Add the target file name
-                vTargetFilePath = vTargetFilePath.append(vSourceFileName);
-
-                // ... Finally build the corresponding URI
-                URI vTargetFileURI = URI.createFileURI(vTargetFilePath.toOSString());
-
-                // Copy file in project
-                FileTools.copyFile(vSourceFile, vTargetFileURI);
-            }
-
-        } catch (final IOException pException) {
-            vStatus = AbstractExampleWizard.createErrorStatus(CREATE_FILE_ERROR, pException);
-        }
-
-        return vStatus;
-    }
-
-    /**
-     * Return the map containing the information on the
-     * additional files to add to the example project.
-     *
-     * @return The files info map
-     */
-    public Map<URI, IPath> getAdditionalFileInfoMap() {
-        return mAdditionalFilesInfoMap;
-    }
-
-    /**
-     * Set the map containing the information on the
-     * additional files to add to the example project.
-     *
-     * @param pFileInfoMap The file info map to set
-     */
-    public void setAdditionalFileInfoMap(final Map<URI, IPath> pFileInfoMap) {
-        mAdditionalFilesInfoMap = pFileInfoMap;
-    }
-
-    /**
-     * @return The example project created
-     */
-    public IProject getExampleProject() {
-        return mProjectExample;
-    }
-}
diff --git a/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/impl/CircuitBreakerExampleWizard.java b/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/impl/CircuitBreakerExampleWizard.java
deleted file mode 100644
index acfe10e..0000000
--- a/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/impl/CircuitBreakerExampleWizard.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.help.wizard.impl;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.common.util.URI;
-import org.polarsys.esf.core.common.messages.Messages;
-import org.polarsys.esf.core.help.CoreHelpActivator;
-import org.polarsys.esf.core.help.wizard.AbstractExampleWizard;
-
-/**
- * Wizard to get ESF project example.
- * This example is CircuitBreaker model.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class CircuitBreakerExampleWizard
-    extends AbstractExampleWizard {
-
-    /** Message provider. */
-    private static final Messages MESSAGES_PROVIDER = CoreHelpActivator.getMessages();
-
-    /** Name of example project. */
-    private static final String PROJECT_TITLE = MESSAGES_PROVIDER
-        .getString("CircuitBreakerExampleWizard.example.project.title"); //$NON-NLS-1$
-
-    /** Message for wizard execution success. */
-    private static final String SUCCESSFUL_IMPORT_MESSAGE = MESSAGES_PROVIDER
-        .getString("CircuitBreakerExampleWizard.example.job.success"); //$NON-NLS-1$
-
-    /** Name of the source model file. */
-    private static final String SA_FILE = "Circuit Breaker.sa"; //$NON-NLS-1$
-    
-    /** Name of the source library file. */
-    private static final String LIBRARY_FILE = "Circuit Breaker.fearedevents"; //$NON-NLS-1$
-
-    /** Name of the global source examples directory. */
-    private static final String EXAMPLES_DIR = "examples"; //$NON-NLS-1$
-
-    /** Name of the source Circuit Breaker example directory. */
-    private static final String CIRCUITBREAKER_DIR = "Circuit Breaker"; //$NON-NLS-1$
-
-    /** Relative path for the directory containing the source example. */
-    private static final URI SOURCE_EXAMPLE_DIR = 
-        URI.createURI(EXAMPLES_DIR).appendSegment(CIRCUITBREAKER_DIR); //$NON-NLS-1$
-    
-    /** Name of the folder containing the additional UML file. */
-    private static final String PAPYRUS_DIR = "Papyrus"; //$NON-NLS-1$
-    
-    /** Name of the source additional UML file. */
-    private static final String UML_FILE = "Circuit Breaker.uml"; //$NON-NLS-1$
-
-    
-    /**
-     * Default constructor.
-     */
-    public CircuitBreakerExampleWizard() {
-
-        super(
-            PROJECT_TITLE,
-            SOURCE_EXAMPLE_DIR,
-            SA_FILE,
-            LIBRARY_FILE,
-            SUCCESSFUL_IMPORT_MESSAGE);
-    }
-
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * Overridden to initialise the additional files map to create with the example.
-     * This includes the Papyrus model file.
-     * 
-     * @param pMonitor Monitor used to follow job progression
-     * @return An error status if something goes wrong, or OK otherwise
-     */
-    @Override
-    protected IStatus doFinish(final IProgressMonitor pMonitor) {
-
-        // Initialise the map with the additional files information
-        Map<URI, IPath> vAdditionalFilesInfoMap = new HashMap<URI, IPath>();
-        
-        try {
-            // Add the Papyrus UML file information to the map
-            // ... Build the source UML file URI
-            String vUMLFileSourcePath = 
-                new Path(EXAMPLES_DIR).append(CIRCUITBREAKER_DIR)
-                    .append(PAPYRUS_DIR).append(UML_FILE).toOSString();
-            URI vUMLFileSourceURI = getFileURI(vUMLFileSourcePath);
-            
-            // ... Build the target directory path
-            IPath vUMLFileTargetDirectory = new Path(PAPYRUS_DIR);
-            
-            // ... Then add the information in the map
-            vAdditionalFilesInfoMap.put(vUMLFileSourceURI, vUMLFileTargetDirectory);
-            
-        } catch (final IOException vException) {
-            CoreHelpActivator.logError("Error during the additional files search", vException); //$NON-NLS-1$
-        }
-        
-        // Register the built map in this wizard instance
-        setAdditionalFileInfoMap(vAdditionalFilesInfoMap);
-        
-        // Call the parent method to create the example 
-        return super.doFinish(pMonitor);
-    }
-    
-}
diff --git a/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/impl/RecoveryExampleWizard.java b/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/impl/RecoveryExampleWizard.java
deleted file mode 100644
index 4c7a17e..0000000
--- a/core/org.polarsys.esf.core.help/src/main/java/org/polarsys/esf/core/help/wizard/impl/RecoveryExampleWizard.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.help.wizard.impl;
-
-import org.eclipse.emf.common.util.URI;
-import org.polarsys.esf.core.common.messages.Messages;
-import org.polarsys.esf.core.help.CoreHelpActivator;
-import org.polarsys.esf.core.help.wizard.AbstractExampleWizard;
-
-/**
- * Wizard to get ESF project example.
- * This example is Recovery model.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class RecoveryExampleWizard
-    extends AbstractExampleWizard {
-
-    /** Message provider. */
-    private static final Messages MESSAGES_PROVIDER = CoreHelpActivator.getMessages();
-
-    /** Name of example project. */
-    private static final String PROJECT_TITLE = 
-        MESSAGES_PROVIDER.getString("RecoveryExampleWizard.example.project.title"); //$NON-NLS-1$
-
-    /** Message for wizard execution success. */
-    private static final String SUCCESSFUL_IMPORT_MESSAGE = 
-        MESSAGES_PROVIDER.getString("RecoveryExampleWizard.example.job.success"); //$NON-NLS-1$
-
-    /** Name of the source model file. */
-    private static final String SA_FILE = "Recovery.sa"; //$NON-NLS-1$
-    
-    /** Name of the source library file. */
-    private static final String LIBRARY_FILE = "Recovery.fearedevents"; //$NON-NLS-1$
-
-    /** Name of the global source examples directory. */
-    private static final String EXAMPLES_DIR = "examples"; //$NON-NLS-1$
-
-    /** Name of the source Recovery example directory. */
-    private static final String RECOVERY_DIR = "Recovery"; //$NON-NLS-1$
-    
-    /** Relative path for the directory containing the source example. */
-    private static final URI SOURCE_EXAMPLE_DIR = 
-        URI.createURI(EXAMPLES_DIR).appendSegment(RECOVERY_DIR); //$NON-NLS-1$
-    
-
-    /**
-     * Default constructor.
-     */
-    public RecoveryExampleWizard() {
-        super(
-            PROJECT_TITLE,
-            SOURCE_EXAMPLE_DIR,
-            SA_FILE,
-            LIBRARY_FILE,
-            SUCCESSFUL_IMPORT_MESSAGE);
-    }
-}
diff --git a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ESFProjectWizard.java b/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ESFProjectWizard.java
deleted file mode 100644
index 0ee0b3e..0000000
--- a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ESFProjectWizard.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.ui.wizards.saproject;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-import org.polarsys.esf.core.common.ui.selection.SelectAndRevealResourceJob;
-import org.polarsys.esf.core.common.ui.wizard.AbstractGenericWizard;
-import org.polarsys.esf.core.ui.CoreUIActivator;
-import org.polarsys.esf.core.ui.CoreUIActivator.Implementation;
-
-/**
- * Define the UI of the wizard used to create new ESF Project.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class ESFProjectWizard
-    extends AbstractGenericWizard
-    implements INewWizard {
-
-    /** Project creation success message. */
-    private static final String PROJECT_CREATION_SUCCESSFUL = CoreUIActivator.getMessages().getString(
-        "ESFProjectWizard.task.success"); //$NON-NLS-1$;
-
-    /** This is the project creation page of this wizard. */
-    private ESFProjectWizardProjectCreationPage mNewProjectCreationPage = null;
-
-    /** Remember the selection during initialisation. */
-    private IStructuredSelection mSelection = null;
-
-    /** Project creation state. */
-    private ProjectCreationState mCreationState = null;
-
-    /**
-     * Constructor for this wizard.
-     */
-    public ESFProjectWizard() {
-        super(PROJECT_CREATION_SUCCESSFUL, false);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public final void init(final IWorkbench pWorkbench, final IStructuredSelection pSelection) {
-        // Save the selection
-        mSelection = pSelection;
-
-        // Set the window title
-        setWindowTitle(CoreUIActivator.getMessages().getString("ESFProjectWizard.title"));
-
-        // Set the default page image
-        setDefaultPageImageDescriptor(CoreUIActivator.getPlugin().getImageRegistry()
-            .getDescriptor(Implementation.ICON_WIZARD_SA_PROJECT));
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void prepareFinish() {
-
-        mCreationState = new ProjectCreationState();
-
-        mCreationState.setProjectName(mNewProjectCreationPage.getProjectName());
-        mCreationState.setLocationURI(mNewProjectCreationPage.getLocationURI());
-        mCreationState.setUseDefault(mNewProjectCreationPage.useDefaults());
-        mCreationState.setModelName(mNewProjectCreationPage.getModelName());
-        mCreationState.setFearedEventsLibraryName(mNewProjectCreationPage.getFearedEventsLibraryName());
-
-        // Get the selected working sets
-        mCreationState.setWorkingSetsArray(mNewProjectCreationPage.getSelectedWorkingSets());
-    }
-
-    /**
-     * Create project, then model file, then aird.
-     * 
-     * {@inheritDoc}
-     */
-    @Override
-    protected IStatus doFinish(final IProgressMonitor pMonitor) {
-
-        // Execute command with correct state
-        ProjectCreationCommand vCommand = new ProjectCreationCommand(mCreationState);
-        IStatus vStatus = vCommand.execute(pMonitor);
-
-        if (vStatus == null || vStatus.isOK()) {
-            SelectAndRevealResourceJob vSelectJob = new SelectAndRevealResourceJob(
-                vCommand.getCreatedProject());
-            vSelectJob.schedule();
-        }
-
-        return vStatus;
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public final void addPages() {
-        // Call the parent method
-        super.addPages();
-
-        /*
-         * Add the pages to create a new ESF project
-         */
-
-        // Create the page for the project creation
-        mNewProjectCreationPage =
-            new ESFProjectWizardProjectCreationPage(
-                ESFProjectWizardProjectCreationPage.class.getName(),
-                mSelection);
-
-        // Add the page to the wizard
-        addPage(mNewProjectCreationPage);
-    }
-}
diff --git a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ESFProjectWizardProjectCreationPage.java b/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ESFProjectWizardProjectCreationPage.java
deleted file mode 100644
index 8dc7b9b..0000000
--- a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ESFProjectWizardProjectCreationPage.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.ui.wizards.saproject;
-
-import java.io.File;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
-import org.polarsys.esf.core.common.messages.Messages;
-import org.polarsys.esf.core.common.ui.widget.listener.ShowHideAdapter;
-import org.polarsys.esf.core.ui.CoreUIActivator;
-
-/**
- * This is the page used to create a new ESF project.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- */
-public class ESFProjectWizardProjectCreationPage
-    extends WizardNewProjectCreationPage {
-
-    /** Messages class. */
-    private static final Messages MESSAGES_PROVIDER = CoreUIActivator.getMessages();
-
-    /** Page title. */
-    private static final String PAGE_TITLE =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.title"); //$NON-NLS-1$
-
-    /** Page description. */
-    private static final String PAGE_DESCRIPTION =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.page.newproject.description"); //$NON-NLS-1$
-
-    /** Label for name field of feared events library parameter. */
-    private static final String FEARED_EVENTS_LIBRARY_NAME =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.label.fearedevents.name"); //$NON-NLS-1$
-
-    /** Title for feared events library parameters group. */
-    private static final String FEARED_EVENTS_LIBRARY_GROUP =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.group.fearedevents"); //$NON-NLS-1$
-
-    /** Title for model file parameters group. */
-    private static final String MODEL_FILE_GROUP =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.group.modelfile"); //$NON-NLS-1$
-
-    /** Label for the model name. */
-    private static final String MODEL_NAME_LABEL =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.label.modelname"); //$NON-NLS-1$
-
-    /** Error message when the project name is already used by an existing file or folder . */
-    private static final String NAME_USED_ERROR_MESSAGE =
-        MESSAGES_PROVIDER.getString("ESFProjectWizard.error.nameused"); //$NON-NLS-1$
-
-    /** Remember the selection given at the construction. */
-    private IStructuredSelection mSelection = null;
-
-    /** The text used to give the model name. */
-    private Text mTextModelName = null;
-
-    /** Text field used to give feared events library name. */
-    private Text mFELibraryNameTextField = null;
-
-    /**
-     * Constructor for this wizard page.
-     * Pass in the selection to build this page
-     * 
-     * @param pPageId The page id, must be unique in a wizard
-     * @param pSelection The current selection in the workbench
-     */
-    public ESFProjectWizardProjectCreationPage(final String pPageId, final IStructuredSelection pSelection) {
-        // Call the parent constructor
-        super(pPageId);
-
-        // Remember the selection
-        mSelection = pSelection;
-
-        // Initialise the page title, description
-        setTitle(PAGE_TITLE);
-        setDescription(PAGE_DESCRIPTION);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public final void createControl(final Composite pParent) {
-        // Call the parent method
-        super.createControl(pParent);
-
-        // Control is created on super. Get it, and add element on it
-        Composite vControl = (Composite) getControl();
-
-        // Add button to show/hide advance composite and add it to main control
-        Button vButton = createShowHideButton(vControl);
-
-        // Create the advanced controls, and do not add it to parent now
-        Composite vAdvancedComposite = createAdvancedComposite(vControl);
-
-        // Associate Button and Adapter. This can not be done in button creation, because button must be add first to
-        // parent, and at this time, advanced composite has not been created yet
-        ShowHideAdapter vSelectionAdapter = new ShowHideAdapter(vButton, vAdvancedComposite);
-        // Start in hidden state
-        vSelectionAdapter.setHidden(true);
-        vButton.addSelectionListener(vSelectionAdapter);
-
-        // Apply the general font
-        Dialog.applyDialogFont(getControl());
-
-    }
-
-    /**
-     * Create the Show/Hide advanced button control and push it on parent composite.
-     * 
-     * @param pParent Receiver for the created button
-     * 
-     * @return The created button
-     */
-    private Button createShowHideButton(final Composite pParent) {
-
-        Button vButton = new Button(pParent, SWT.PUSH);
-
-        GridData vLayoutData = new GridData();
-
-        // Set the button layout data, to align it with the content above
-        // NB : The horizontal indent is necessary to align with other components which are
-        // included in one more level of composites
-        vLayoutData.horizontalIndent = 5;
-        vLayoutData.verticalIndent = 5;
-
-        vButton.setLayoutData(vLayoutData);
-        vButton.setText(ShowHideAdapter.DEFAULT_HIDE_LABEL);
-        vButton.setImage(ShowHideAdapter.DEFAULT_HIDE_IMAGE);
-
-        return vButton;
-    }
-
-    /**
-     * Create advanced controls and add them to parent.
-     * 
-     * @param pControl Target of created controls
-     * 
-     * @return Composite created with advanced controls
-     */
-    private Composite createAdvancedComposite(final Composite pControl) {
-        // Create a composite to receive advance fields
-        Composite vAdvancedComposite = new Composite(pControl, SWT.NULL);
-        vAdvancedComposite.setLayout(new GridLayout());
-
-        GridData vCompositeLayout = new GridData(GridData.FILL_BOTH);
-        vCompositeLayout.horizontalSpan = 2;
-        vAdvancedComposite.setLayoutData(vCompositeLayout);
-
-        // Create the controls for the model file and model name.
-        createControlsModelData(vAdvancedComposite);
-
-        // Create the controls for the feared events library name.
-        createControlsFearedEventsLibrary(vAdvancedComposite);
-
-        // Create the controls used to select a working set
-        createWorkingSetGroup(
-            vAdvancedComposite,
-            mSelection,
-            new String[] {"org.eclipse.ui.resourceWorkingSetPage"}); //$NON-NLS-1$
-
-        return vAdvancedComposite;
-    }
-
-    /**
-     * Create the controls linked to the model file and model name.
-     * 
-     * @param pParent The parent composite to fill with the new controls
-     */
-    private void createControlsModelData(final Composite pParent) {
-
-        // Create a group which will contain all the controls for the model (file and name).
-        Group vGroupModelFile = new Group(pParent, SWT.SHADOW_ETCHED_IN);
-        vGroupModelFile.setText(MODEL_FILE_GROUP);
-
-        GridLayout vLayout = new GridLayout();
-        vLayout.numColumns = 2;
-        vGroupModelFile.setLayout(vLayout);
-
-        GridData vGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
-        vGroupModelFile.setLayoutData(vGridData);
-
-        // Create the label for model name
-        Label vNameLabel = new Label(vGroupModelFile, SWT.LEFT);
-        vNameLabel.setText(MODEL_NAME_LABEL);
-        vGridData = new GridData(SWT.FILL, SWT.CENTER, false, false);
-        vNameLabel.setLayoutData(vGridData);
-
-        // Create the text for the model name
-        // No listener on this model name, there is no rule to check.
-        mTextModelName = new Text(vGroupModelFile, SWT.SINGLE | SWT.BORDER);
-        vGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
-        mTextModelName.setLayoutData(vGridData);
-
-    }
-
-    /**
-     * Create the control to set name for feared events library.
-     * 
-     * @param pParent The parent composite to fill with the new controls
-     */
-    private void createControlsFearedEventsLibrary(final Composite pParent) {
-
-        // Create group for feared events library
-        Group vFearedEventsGroup = new Group(pParent, SWT.NONE);
-
-        // Set position and name for group
-        vFearedEventsGroup.setLayout(new GridLayout(2, false));
-        vFearedEventsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-        vFearedEventsGroup.setText(FEARED_EVENTS_LIBRARY_GROUP);
-
-        Label vLabel = new Label(vFearedEventsGroup, SWT.NONE);
-        vLabel.setText(FEARED_EVENTS_LIBRARY_NAME);
-
-        mFELibraryNameTextField = new Text(vFearedEventsGroup, SWT.SINGLE | SWT.BORDER);
-        mFELibraryNameTextField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Overridden to add custom validation steps.
-     *
-     * Indeed, the project name is verified but not compared to the current workspace
-     * content which is not referenced. For example, if there is a folder coming from
-     * an old project which has been deleted without deleting its content, the user
-     * must be warned.
-     */
-    @Override
-    protected boolean validatePage() {
-        // Call the parent method to perform standard validation
-        boolean vValid = super.validatePage();
-
-        // If the standard validation hasn't identify any error,
-        // perform custom validations
-        if (vValid) {
-
-            // Get the path of the project to create
-            // It can be outside the workspace
-            IPath vProjectPath = getLocationPath().append(getProjectName());
-
-            // Create a java File corresponding to this path and ensure that
-            // it doesn't correspond to an existing file or folder
-            File vProjectFolder = new File(vProjectPath.toOSString());
-            if (vProjectFolder.exists()) {
-                // Warn the user
-                setErrorMessage(NAME_USED_ERROR_MESSAGE);
-                vValid = false;
-            }
-        }
-
-        return vValid;
-    }
-
-    /**
-     * Get model name.
-     * 
-     * @return The name for ESF model, filled by user
-     */
-    public final String getModelName() {
-        return mTextModelName.getText();
-    }
-
-    /**
-     * @return Name of feared events library
-     */
-    public String getFearedEventsLibraryName() {
-        return mFELibraryNameTextField.getText();
-    }
-}
diff --git a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ProjectCreationCommand.java b/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ProjectCreationCommand.java
deleted file mode 100644
index a171821..0000000
--- a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ProjectCreationCommand.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.ui.wizards.saproject;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.PlatformUI;
-import org.polarsys.esf.core.common.messages.Messages;
-import org.polarsys.esf.core.common.ui.selection.SelectAndRevealResourceJob;
-import org.polarsys.esf.core.ui.CoreUIActivator;
-
-/**
- * This class contains all the methods used to create a new project,
- * from nothing.
- *
- * It has been split from wizard itself to separate the treatment from the UI.
- *
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- *
- */
-public class ProjectCreationCommand {
-
-    /** Messages provider. */
-    private static final Messages MESSAGES_PROVIDER = CoreUIActivator.getMessages();
-
-    /** Command creation title. */
-    private static final String COMMAND_PROJECT_CREATION =
-        MESSAGES_PROVIDER.getString("ProjectCreationCommand.task.label"); //$NON-NLS-1$
-
-    /** Project creation state, containing all the parameters for the project creation. */
-    private ProjectCreationState mProjectCreationState = null;
-
-    /** Keep track of created project to return it. */
-    private IProject mCreatedProject = null;
-
-    /**
-     * Default constructor.
-     *
-     * @param pState Information used to run project creation
-     */
-    public ProjectCreationCommand(final ProjectCreationState pState) {
-        mProjectCreationState = pState;
-    }
-
-    /**
-     * Do project creation, step by step.
-     *
-     * @param pMonitor Monitor for display state of project creation
-     * @return {@link IStatus#OK} if creation is successful, otherwise {@link IStatus#ERROR}
-     */
-    public IStatus execute(final IProgressMonitor pMonitor) {
-        IStatus vStatus = null;
-
-        pMonitor.beginTask(COMMAND_PROJECT_CREATION, 4);
-
-        // TODO : Perform project creation ...
-
-        // Add to working sets
-        if (mProjectCreationState.getWorkingSetsArray().length > 0) {
-            // Add the project in the working sets specified
-            PlatformUI.getWorkbench().getWorkingSetManager()
-                .addToWorkingSets(mCreatedProject, mProjectCreationState.getWorkingSetsArray());
-        }
-
-        pMonitor.worked(1);
-
-        // Then run an asynchronous job to show created project
-        if (vStatus == null || vStatus.isOK()) {
-            SelectAndRevealResourceJob vJob = new SelectAndRevealResourceJob(mCreatedProject);
-            vJob.schedule();
-        }
-
-        return vStatus;
-    }
-
-    /**
-     * @return The created project. Can be null if project creation failed !
-     */
-    public IProject getCreatedProject() {
-        return mCreatedProject;
-    }
-}
diff --git a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ProjectCreationState.java b/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ProjectCreationState.java
deleted file mode 100644
index 4173db9..0000000
--- a/core/org.polarsys.esf.core.ui/src/main/java/org/polarsys/esf/core/ui/wizards/saproject/ProjectCreationState.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 ALL4TEC & CEA LIST.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors:
- *     ALL4TEC & CEA LIST - initial API and implementation
- ******************************************************************************/
-package org.polarsys.esf.core.ui.wizards.saproject;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.ui.IWorkingSet;
-
-/**
- * State pattern used with Project creation wizard.
- * 
- * It contains data / information necessary to create a ESF Project.
- * 
- * Warning : all fields must be initialised.
- * 
- * @author $Author: jdumont $
- * @version $Revision: 83 $
- * 
- */
-public class ProjectCreationState {
-
-    /** Name of model. */
-    private String mModelName = StringUtils.EMPTY;
-
-    /** Flag used to detect if default project area creation parameter should be used or not. */
-    private boolean mUseDefault = false;
-
-    /** Project name. */
-    private String mProjectName = StringUtils.EMPTY;
-
-    /** Project location URI. */
-    private java.net.URI mLocationURI = null;
-
-    /** Name of feared events library. */
-    private String mFearedEventsLibraryName = null;
-
-    /** Array of working set to which project will be added. */
-    private IWorkingSet[] mWorkingSetsArray = new IWorkingSet[0];
-
-    /**
-     * Default constructor.
-     */
-    public ProjectCreationState() {
-    }
-
-    /**
-     * Return the name of the model specified by the user, or the project
-     * name if no specific value has been given.
-     * 
-     * The returned value is not filtered and keep all its potential non alpha numeric characters.
-     * 
-     * @return The model name to use
-     */
-    public String getModelName() {
-        // Get the value specified by the user if any 
-        String vModelName = mModelName;
-
-        // If no specific value is given, use the project name directly
-        // NB : Don't filter the non alpha numeric characters
-        if (StringUtils.isBlank(vModelName)) {
-            vModelName = getProjectName();
-        }
-        
-        return vModelName;
-    }
-
-    /**
-     * @param pModelName The modelName to set
-     */
-    public void setModelName(final String pModelName) {
-        mModelName = pModelName;
-    }
-
-    /**
-     * @return The useDefault
-     */
-    public boolean isUseDefault() {
-        return mUseDefault;
-    }
-
-    /**
-     * @param pUseDefault The useDefault to set
-     */
-    public void setUseDefault(final boolean pUseDefault) {
-        mUseDefault = pUseDefault;
-    }
-
-    /**
-     * Return the name of the project to create.
-     * 
-     * The returned value is not filtered and keep all its potential non alpha numeric characters.
-     * 
-     * @return The project name
-     */
-    public String getProjectName() {
-        return mProjectName;
-    }
-
-    /**
-     * @param pProjectName The projectName to set
-     */
-    public void setProjectName(final String pProjectName) {
-        mProjectName = pProjectName;
-    }
-
-    /**
-     * @return The locationURI
-     */
-    public java.net.URI getLocationURI() {
-        return mLocationURI;
-    }
-
-    /**
-     * @param pLocationURI The locationURI to set
-     */
-    public void setLocationURI(final java.net.URI pLocationURI) {
-        mLocationURI = pLocationURI;
-    }
-
-    /**
-     * @return The workingSetsArray
-     */
-    public IWorkingSet[] getWorkingSetsArray() {
-        return mWorkingSetsArray;
-    }
-
-    /**
-     * @param pWorkingSetsArray The workingSetsArray to set
-     */
-    public void setWorkingSetsArray(final IWorkingSet[] pWorkingSetsArray) {
-        mWorkingSetsArray = pWorkingSetsArray;
-    }
-
-    /**
-     * Return the name of the feared events library specified by the user, or the model
-     * name if no specific value has been given.
-     * 
-     * The returned value is not filtered and keep all its potential non alpha numeric characters.
-     * 
-     * @return The feared events library name to use
-     */
-    public String getFearedEventsLibraryName() {
-        // Get the value specified by the user if any 
-        String vLibraryName = mFearedEventsLibraryName;
-
-        // If no specific value is given, use the model name directly
-        // NB : Don't filter the non alpha numeric characters
-        if (StringUtils.isBlank(vLibraryName)) {
-            vLibraryName = getModelName();
-        }
-        
-        return vLibraryName;
-    }
-
-    /**
-     * @param pFearedEventsLibraryName Name of feared events library
-     */
-    public void setFearedEventsLibraryName(final String pFearedEventsLibraryName) {
-        mFearedEventsLibraryName = pFearedEventsLibraryName;
-    }
-
-}