Skip to content
Snippets Groups Projects
Commit d3c338c1 authored by Kevin Kassin's avatar Kevin Kassin
Browse files

#Commit 30.7 19:30

a double click on a realtionship now activates the edit feature for it
parent 7ff219e0
Branches
No related tags found
No related merge requests found
...@@ -35,6 +35,7 @@ import org.framed.iorm.ui.subeditors.FRaMEDFeatureEditor; ...@@ -35,6 +35,7 @@ import org.framed.iorm.ui.subeditors.FRaMEDFeatureEditor;
import org.framed.iorm.ui.subeditors.FRaMEDTextViewer; import org.framed.iorm.ui.subeditors.FRaMEDTextViewer;
import org.framed.iorm.ui.util.DiagramUtil; import org.framed.iorm.ui.util.DiagramUtil;
import org.framed.iorm.ui.util.EditorInputUtil; import org.framed.iorm.ui.util.EditorInputUtil;
import org.framed.iorm.ui.util.GeneralUtil;
import org.framed.iorm.ui.util.PropertyUtil; import org.framed.iorm.ui.util.PropertyUtil;
import org.framed.iorm.ui.providers.DiagramTypeProvider; //*import for javadoc link import org.framed.iorm.ui.providers.DiagramTypeProvider; //*import for javadoc link
import org.framed.iorm.ui.providers.ToolBehaviorProvider; import org.framed.iorm.ui.providers.ToolBehaviorProvider;
...@@ -298,10 +299,7 @@ public class MultipageEditor extends FormEditor implements ISelectionListener, I ...@@ -298,10 +299,7 @@ public class MultipageEditor extends FormEditor implements ISelectionListener, I
//Step 4 //Step 4
ICreateFeature createModelFeature = null; ICreateFeature createModelFeature = null;
ICreateFeature[] createFeatures = editorDiagram.getDiagramTypeProvider().getFeatureProvider().getCreateFeatures(); ICreateFeature[] createFeatures = editorDiagram.getDiagramTypeProvider().getFeatureProvider().getCreateFeatures();
for(int i = 0; i<createFeatures.length; i++) { createModelFeature = (ICreateFeature) GeneralUtil.findFeatureByName(createFeatures, MODEL_FEATURE_NAME);
if(createFeatures[i].getCreateName().equals(MODEL_FEATURE_NAME))
createModelFeature = createFeatures[i];
}
if(createModelFeature != null) { if(createModelFeature != null) {
CreateContext createContext = new CreateContext(); CreateContext createContext = new CreateContext();
if(createModelFeature.canCreate(createContext)) createModelFeature.create(createContext); if(createModelFeature.canCreate(createContext)) createModelFeature.create(createContext);
......
...@@ -8,7 +8,9 @@ import org.eclipse.graphiti.dt.IDiagramTypeProvider; ...@@ -8,7 +8,9 @@ import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.ICreateConnectionFeature; import org.eclipse.graphiti.features.ICreateConnectionFeature;
import org.eclipse.graphiti.features.ICreateFeature; import org.eclipse.graphiti.features.ICreateFeature;
import org.eclipse.graphiti.features.context.ICustomContext; import org.eclipse.graphiti.features.context.ICustomContext;
import org.eclipse.graphiti.features.context.IDoubleClickContext;
import org.eclipse.graphiti.features.context.IPictogramElementContext; import org.eclipse.graphiti.features.context.IPictogramElementContext;
import org.eclipse.graphiti.features.custom.ICustomFeature;
import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator; import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.FreeFormConnection; import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
...@@ -28,11 +30,13 @@ import org.framed.iorm.ui.palette.FeaturePaletteDescriptor; ...@@ -28,11 +30,13 @@ import org.framed.iorm.ui.palette.FeaturePaletteDescriptor;
import org.framed.iorm.ui.palette.PaletteView; import org.framed.iorm.ui.palette.PaletteView;
import org.framed.iorm.ui.palette.ViewVisibility; import org.framed.iorm.ui.palette.ViewVisibility;
import org.framed.iorm.ui.util.DiagramUtil; import org.framed.iorm.ui.util.DiagramUtil;
import org.framed.iorm.ui.util.GeneralUtil;
import org.framed.iorm.ui.util.PropertyUtil; import org.framed.iorm.ui.util.PropertyUtil;
import org.framed.iorm.ui.providers.FeatureProvider; //*import for javadoc link import org.framed.iorm.ui.providers.FeatureProvider; //*import for javadoc link
import org.framed.iorm.model.Relation; import org.framed.iorm.model.Relation;
import org.framed.iorm.model.Type; import org.framed.iorm.model.Type;
import org.framed.iorm.ui.exceptions.FeatureHasNoPaletteDescriptorException; import org.framed.iorm.ui.exceptions.FeatureHasNoPaletteDescriptorException;
import org.framed.iorm.ui.graphitifeatures.EditRelationshipFeature;
import org.framed.iorm.ui.graphitifeatures.StepInFeature; //*import for javadoc link import org.framed.iorm.ui.graphitifeatures.StepInFeature; //*import for javadoc link
import org.framed.iorm.ui.graphitifeatures.StepInNewTabFeature; //*import for javadoc link import org.framed.iorm.ui.graphitifeatures.StepInNewTabFeature; //*import for javadoc link
import org.framed.iorm.ui.graphitifeatures.StepOutFeature; //*import for javadoc link import org.framed.iorm.ui.graphitifeatures.StepOutFeature; //*import for javadoc link
...@@ -155,9 +159,8 @@ public class ToolBehaviorProvider extends DefaultToolBehaviorProvider{ ...@@ -155,9 +159,8 @@ public class ToolBehaviorProvider extends DefaultToolBehaviorProvider{
//Step 1 //Step 1
if(customContext.getPictogramElements().length == 1) { if(customContext.getPictogramElements().length == 1) {
PictogramElement pictogramElement = customContext.getPictogramElements()[0]; PictogramElement pictogramElement = customContext.getPictogramElements()[0];
if(pictogramElement.getLink() != null && EObject businessObject = GeneralUtil.getBusinessObjectIfExactlyOne(pictogramElement);
pictogramElement.getLink().getBusinessObjects().size() == 1) { if(businessObject != null) {
EObject businessObject = pictogramElement.getLink().getBusinessObjects().get(0);
//Step 2 //Step 2
for(int i = 0; i < superContextEntries.length; i++) { for(int i = 0; i < superContextEntries.length; i++) {
switch(superContextEntries[i].getText()) { switch(superContextEntries[i].getText()) {
...@@ -325,5 +328,21 @@ public class ToolBehaviorProvider extends DefaultToolBehaviorProvider{ ...@@ -325,5 +328,21 @@ public class ToolBehaviorProvider extends DefaultToolBehaviorProvider{
default: default:
break; break;
} } } } } }
/**
* enables the edit features for relationships and fulfillments when double clicking such a relation
*/
@Override
public ICustomFeature getDoubleClickFeature(IDoubleClickContext context) {
if(context.getPictogramElements().length == 1) {
PictogramElement pictogramElement = context.getPictogramElements()[0];
EObject businessObject = GeneralUtil.getBusinessObjectIfExactlyOne(pictogramElement);
if(businessObject instanceof Relation &&
((Relation) businessObject).getType() == Type.RELATIONSHIP) {
ICustomFeature[] customFeatures = getFeatureProvider().getCustomFeatures(context);
return (ICustomFeature) GeneralUtil.findFeatureByName(customFeatures, EDIT_RELATIONSHIP_FEATURE_NAME);
} }
return null;
}
} }
...@@ -4,6 +4,7 @@ import java.util.List; ...@@ -4,6 +4,7 @@ import java.util.List;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.features.IFeature;
import org.eclipse.graphiti.features.IMappingProvider; //*import for javadoc link import org.eclipse.graphiti.features.IMappingProvider; //*import for javadoc link
import org.eclipse.graphiti.features.context.ICreateContext; import org.eclipse.graphiti.features.context.ICreateContext;
import org.eclipse.graphiti.features.context.impl.AddContext; import org.eclipse.graphiti.features.context.impl.AddContext;
...@@ -106,7 +107,7 @@ public class GeneralUtil { ...@@ -106,7 +107,7 @@ public class GeneralUtil {
} }
/** /**
* Similiar to the contains operation of lists this method offers a comparison using the equal operation * Similar to the contains operation of lists this method offers a comparison using the equal operation
* of strings to search for equal string in a list of strings. * of strings to search for equal string in a list of strings.
* @param list the list to search an equal string in * @param list the list to search an equal string in
* @param stringToCheckAgainst the string to search an equal one for * @param stringToCheckAgainst the string to search an equal one for
...@@ -131,4 +132,31 @@ public class GeneralUtil { ...@@ -131,4 +132,31 @@ public class GeneralUtil {
public static EObject getBusinessObjectForPictogramElement(PictogramElement pictogramElement) { public static EObject getBusinessObjectForPictogramElement(PictogramElement pictogramElement) {
return pictogramElement.getLink().getBusinessObjects().get(0); return pictogramElement.getLink().getBusinessObjects().get(0);
} }
/**
* return a linked business object for a pictogram element if there is exactly one business object linked
* @param pictogramElement the element to get the linked business object for
* @return the one linked business object if or null
*/
public static EObject getBusinessObjectIfExactlyOne(PictogramElement pictogramElement) {
if(pictogramElement.getLink() != null &&
pictogramElement.getLink().getBusinessObjects().size() == 1) {
return getBusinessObjectForPictogramElement(pictogramElement);
}
return null;
}
/**
* find the a feature by its name in an array of features
* @param array the array with features to search in
* @param featureName the name of the feature to find
* @return the found feature or null if it was not found
*/
public static IFeature findFeatureByName(IFeature[] array, String featureName) {
for(int i = 0; i<array.length; i++) {
if(array[i].getName().equals(featureName))
return array[i];
}
return null;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment