Select Git revision
RelationshipPattern.java
RelationshipPattern.java 17.51 KiB
package relationship;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.graphiti.features.IFeature;
import org.eclipse.graphiti.features.context.IAddConnectionContext;
import org.eclipse.graphiti.features.context.IAddContext;
import org.eclipse.graphiti.features.context.ICreateConnectionContext;
import org.eclipse.graphiti.features.context.IDeleteContext;
import org.eclipse.graphiti.features.context.IReconnectionContext;
import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
import org.eclipse.graphiti.features.context.impl.CustomContext;
import org.eclipse.graphiti.features.context.impl.DeleteContext;
import org.eclipse.graphiti.features.context.impl.ReconnectionContext;
import org.eclipse.graphiti.features.custom.ICustomFeature;
import org.eclipse.graphiti.mm.algorithms.Polyline;
import org.eclipse.graphiti.mm.algorithms.Rectangle;
import org.eclipse.graphiti.mm.algorithms.Text;
import org.eclipse.graphiti.mm.pictograms.Anchor;
import org.eclipse.graphiti.mm.pictograms.Connection;
import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.framed.iorm.featuremodel.FRaMEDConfiguration;
import org.framed.iorm.featuremodel.FRaMEDFeature;
import org.framed.iorm.model.Model;
import org.framed.iorm.model.NamedElement;
import org.framed.iorm.model.OrmFactory;
import org.framed.iorm.model.Relation;
import org.framed.iorm.model.Type;
import org.framed.iorm.ui.FRaMEDConnectionPattern;
import org.framed.iorm.ui.FRaMEDDeleteConnectionFeature;
import org.framed.iorm.ui.UIUtil;
import org.framed.iorm.ui.editPolicy.EditPolicyService;
import org.framed.iorm.ui.exceptions.NoModelFoundException;
import org.framed.iorm.ui.palette.FeaturePaletteDescriptor;
import org.framed.iorm.ui.palette.PaletteCategory;
import org.framed.iorm.ui.palette.PaletteView;
import org.framed.iorm.ui.palette.ViewVisibility;
/**
* This graphiti pattern is used to work with {@link Relation}s
* of the type {@link Type#RELATIONSHIP} in the editor.
* <p>
* It deals with the following aspects of Relationships:<br>
* (1) creating relationships, especially their business object<br>
* (2) adding relationships to the diagram, especially their pictogram elements<br>
* @author Kevin Kassin
*/
public class RelationshipPattern extends FRaMEDConnectionPattern {
/**
* the object to get names, ids and so on for this feature
*/
Literals literals = new Literals();
/**
* the feature palette descriptor manages the palette visibility, see {@link FeaturePaletteDescriptor}
*/
private final FeaturePaletteDescriptor spec_FPD = new FeaturePaletteDescriptor(
PaletteCategory.RELATIONS_CATEGORY,
ViewVisibility.COMPARTMENT_VIEW) {
@Override
public boolean featureExpression(List<String> framedFeatureNames, PaletteView paletteView) {
return framedFeatureNames.contains("Relationships");
} };
/**
* class constructor