Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-uml/org/eclipse/papyrus/uml/diagram/common/parser/OperationLabelParser.java')
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-uml/org/eclipse/papyrus/uml/diagram/common/parser/OperationLabelParser.java69
1 files changed, 52 insertions, 17 deletions
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-uml/org/eclipse/papyrus/uml/diagram/common/parser/OperationLabelParser.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-uml/org/eclipse/papyrus/uml/diagram/common/parser/OperationLabelParser.java
index dffc5c0fadd..730791b78b7 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-uml/org/eclipse/papyrus/uml/diagram/common/parser/OperationLabelParser.java
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-uml/org/eclipse/papyrus/uml/diagram/common/parser/OperationLabelParser.java
@@ -7,26 +7,33 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- *
+ *
* CEA LIST - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.common.parser;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.papyrus.gmf.diagram.common.parser.IMaskManagedSemanticParser;
+import org.eclipse.papyrus.infra.tools.util.StringHelper;
import org.eclipse.papyrus.sysml.diagram.common.preferences.ILabelPreferenceConstants;
-import org.eclipse.papyrus.uml.diagram.common.commands.SemanticAdapter;
+import org.eclipse.papyrus.uml.diagram.common.utils.ParameterLabelUtil;
+import org.eclipse.papyrus.uml.tools.utils.ICustomAppearance;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
import org.eclipse.uml2.uml.UMLPackage;
import org.eclipse.uml2.uml.VisibilityKind;
@@ -55,11 +62,13 @@ public class OperationLabelParser extends NamedElementLabelParser {
*/
@Override
public String getPrintString(IAdaptable element, int flags) {
-
- if (flags == 0) {
+
+ Collection<String> maskValues = getMaskValues(element);
+
+ if(maskValues.isEmpty()) {
return MaskedLabel;
}
-
+
String result = "";
EObject eObject = (EObject)element.getAdapter(EObject.class);
@@ -68,7 +77,7 @@ public class OperationLabelParser extends NamedElementLabelParser {
Operation operation = (Operation)eObject;
// manage visibility
- if((flags & ILabelPreferenceConstants.DISP_VISIBILITY) == ILabelPreferenceConstants.DISP_VISIBILITY) {
+ if(maskValues.contains(ILabelPreferenceConstants.DISP_VISIBILITY)) {
String visibility;
switch(operation.getVisibility().getValue()) {
case VisibilityKind.PACKAGE:
@@ -91,33 +100,35 @@ public class OperationLabelParser extends NamedElementLabelParser {
}
// manage name and parameters
- if(((flags & ILabelPreferenceConstants.DISP_NAME) == ILabelPreferenceConstants.DISP_NAME) && (operation.isSetName())) {
+ if((maskValues.contains(ILabelPreferenceConstants.DISP_NAME)) && (operation.isSetName())) {
String name = operation.getName();
StringBuffer params = new StringBuffer();
for(Parameter parameter : operation.getOwnedParameters()) {
- String currentParamLabel = parameterParser.getPrintString(new SemanticAdapter(parameter, null), flags);
- params.append(params.length() == 0 ? currentParamLabel : ", " + currentParamLabel);
+ if(parameter.getDirection() != ParameterDirectionKind.RETURN_LITERAL) {
+ String currentParamLabel = ParameterLabelUtil.getPrintString(parameter, extractParameterMaskValues(maskValues));
+ params.append(params.length() == 0 ? currentParamLabel : ", " + currentParamLabel);
+ }
}
result = String.format(NAME_FORMAT, result, name, params);
}
// manage type
- if(((flags & ILabelPreferenceConstants.DISP_TYPE) == ILabelPreferenceConstants.DISP_TYPE)) {
+ if((maskValues.contains(ILabelPreferenceConstants.DISP_TYPE))) {
String type = "<Undefined>";
if(operation.getType() != null) {
type = operation.getType().getName();
}
-
+
// If type is undefined only show "<Undefined>" when explicitly asked.
- if(((flags & ILabelPreferenceConstants.DISP_UNDEFINED_TYPE) == ILabelPreferenceConstants.DISP_UNDEFINED_TYPE) || (!"<Undefined>".equals(type))) {
+ if((maskValues.contains(ILabelPreferenceConstants.DISP_UNDEFINED_TYPE)) || (!"<Undefined>".equals(type))) {
result = String.format(TYPE_FORMAT, result, type);
}
}
// manage modifier
- if((flags & ILabelPreferenceConstants.DISP_MODIFIERS) == ILabelPreferenceConstants.DISP_MODIFIERS) {
+ if(maskValues.contains(ILabelPreferenceConstants.DISP_MODIFIERS)) {
StringBuffer sb = new StringBuffer();
if(operation.isAbstract()) {
sb.append(sb.length() == 0 ? "abstract" : ", abstract");
@@ -143,6 +154,19 @@ public class OperationLabelParser extends NamedElementLabelParser {
return result;
}
+ private static Collection<String> extractParameterMaskValues(Collection<String> operationMaskValues) {
+ Set<String> result = new HashSet<String>();
+
+ for(String maskValue : operationMaskValues) {
+ if(maskValue.startsWith(ICustomAppearance.PARAMETERS_PREFIX)) {
+ String newValue = StringHelper.firstToLower(maskValue.replace(ICustomAppearance.PARAMETERS_PREFIX, ""));
+ result.add(newValue);
+ }
+ }
+
+ return result;
+ }
+
/**
* {@inheritDoc}
*/
@@ -180,19 +204,30 @@ public class OperationLabelParser extends NamedElementLabelParser {
}
return semanticElementsBeingParsed;
}
-
+
/**
* {@inheritDoc}
*/
@Override
- public Map<Integer, String> getMasks() {
- Map<Integer, String> masks = new HashMap<Integer, String>(5);
+ public Map<String, String> getMasks() {
+ Map<String, String> masks = new HashMap<String, String>(5);
masks.put(ILabelPreferenceConstants.DISP_VISIBILITY, "Visibility");
masks.put(ILabelPreferenceConstants.DISP_NAME, "Name");
masks.put(ILabelPreferenceConstants.DISP_TYPE, "Type");
masks.put(ILabelPreferenceConstants.DISP_UNDEFINED_TYPE, "Show <Undefined> type");
masks.put(ILabelPreferenceConstants.DISP_MODIFIERS, "Modifiers");
- masks.putAll(parameterParser.getMasks());
+
+ masks.put(ILabelPreferenceConstants.DISP_PARAMETER_DIRECTION, "Parameter direction");
+ masks.put(ILabelPreferenceConstants.DISP_PARAMETER_NAME, "Parameter name");
+ masks.put(ILabelPreferenceConstants.DISP_PARAMETER_TYPE, "Parameter type");
+ masks.put(ILabelPreferenceConstants.DISP_PARAMETER_MULTIPLICITY, "Parameter multiplicity");
+ masks.put(ILabelPreferenceConstants.DISP_PARAMETER_DEFAULT, "Parameter default value");
+ masks.put(ILabelPreferenceConstants.DISP_PARAMETER_MODIFIERS, "Parameter modifiers");
return masks;
}
+
+ @Override
+ public Collection<String> getDefaultValue(IAdaptable element) {
+ return Arrays.asList(ILabelPreferenceConstants.DISP_NAME, ILabelPreferenceConstants.DISP_TYPE, ILabelPreferenceConstants.DISP_PARAMETER_DIRECTION, ILabelPreferenceConstants.DISP_PARAMETER_NAME, ILabelPreferenceConstants.DISP_PARAMETER_TYPE);
+ }
}

Back to the top