/*****************************************************************************
* Copyright (c) 2010 Atos Origin.
*
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Mathieu Velten (Atos Origin) mathieu.velten@atosorigin.com - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.infra.gmfdiag.navigation;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
/**
* This class represents an element that have been created by the navigation.
* This element is not currently linked to the model, but it can be by using
* linkToModel if the user decides to navigate to it, to create a diagram on it
* for example.
*
* @author mvelten
*
*/
public class CreatedNavigableElement extends NavigableElement {
protected NavigableElement previousNavigableElement = null;
private IModelLinker modelLinker = null;
private IBaseNameSetter baseNameSetter = null;
/**
* This constructor initiates a navigable element from a newly created
* element. This element is not directly linked to its container.
* linkToModel() needs to be defined and call when you want to link it.
*
* @param element
* @param previousNavigableElement
*/
public CreatedNavigableElement(EObject element, NavigableElement previousNavigableElement, EStructuralFeature feature, IModelLinker modelLinker, IBaseNameSetter baseNameSetter) {
super(element, previousNavigableElement, feature);
this.previousNavigableElement = previousNavigableElement;
this.modelLinker = modelLinker;
this.baseNameSetter = baseNameSetter;
}
public NavigableElement getPreviousNavigableElement() {
return previousNavigableElement;
}
public void linkToModel() {
if(modelLinker != null) {
modelLinker.linkToModel(getElement());
}
}
public void setBaseName(String base) {
if(baseNameSetter != null) {
baseNameSetter.setBaseName(base, getElement());
}
}
}