diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..50328437753245c6bebf0a183ce0f96ec127f875 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,203 @@ +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and +b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' + from a Contributor if it was added to the Program by such Contributor + itself or anyone acting on such Contributor's behalf. Contributions do not + include additions to the Program which: (i) are separate modules of + software distributed in conjunction with the Program under their own + license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of + the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if a + third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. + +Each Contributor must identify itself as the originator of its Contribution, +if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, +if a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits and +other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such Commercial +Contributor in connection with its distribution of the Program in a commercial +product offering. The obligations in this section do not apply to any claims +or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: +a) promptly notify the Commercial Contributor in writing of such claim, and +b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such claim at +its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If +that Commercial Contributor then makes performance claims, or offers +warranties related to Product X, those performance claims and warranties are +such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a +court requires any other Contributor to pay any damages as a result, the +Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the +risks and costs of program errors, compliance with applicable laws, damage to +or loss of data, programs or equipment, and unavailability or interruption of +operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION +LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of the +remainder of the terms of this Agreement, and without further action by the +parties hereto, such provision shall be reformed to the minimum extent +necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted +under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to +time. No one other than the Agreement Steward has the right to modify this +Agreement. The Eclipse Foundation is the initial Agreement Steward. The +Eclipse Foundation may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement will +be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly +stated in Sections 2(a) and 2(b) above, Recipient receives no rights or +licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the +Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. \ No newline at end of file diff --git a/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/Data.xtext b/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/Data.xtext index ef5b52061aacaf38bba1ed7d8a623a6127aec239..48cfb0b756dc14266cd87a4d5cf87ede0393312e 100644 --- a/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/Data.xtext +++ b/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/Data.xtext @@ -48,18 +48,22 @@ EString returns ecore::EString: DataInstanceUse returns DataInstanceUse: dataInstance=[DataInstance|EString] ('(' argument+=ParameterBinding ( "," argument+=ParameterBinding)* ')' )? - ('.' reduction+=[Member|EString])* + ('.' reduction+=MemberReference)* //TODO: if for some reason the data instance use does have a name //it will cause problems... same applies for other scenarios //TODO: create a more elegant way to handle that gracefully) //(name=EString)? ; +MemberReference returns MemberReference: + member=[Member|EString] +; + FormalParameterUse returns FormalParameterUse: parameter=[FormalParameter|EString] ('(' argument+=ParameterBinding ( "," argument+=ParameterBinding)* ')' )? - ( "." reduction+=[Member|EString])* + ( "." reduction+=MemberReference)* ; FunctionCall returns FunctionCall: @@ -67,7 +71,7 @@ FunctionCall returns FunctionCall: '(' (argument+=ParameterBinding ( "," argument+=ParameterBinding)*)? ')' - ('.' reduction+=[Member|EString])* + ('.' reduction+=MemberReference)* ; VariableUse returns VariableUse: @@ -75,7 +79,7 @@ VariableUse returns VariableUse: '->' variable=[Variable|EString] ('(' argument+=ParameterBinding ( "," argument+=ParameterBinding)* ')' )? - ("." reduction+=[Member|EString])* + ("." reduction+=MemberReference)* ; TimeLabelUse returns TimeLabelUse: @@ -518,7 +522,7 @@ Variable returns Variable: Interaction returns Message: sourceGate=[GateReference|EStringDot] ('sends' | isTrigger=Trigger) - argument+=DataUse + argument=DataUse 'to' target+=Target ( "," target+=Target)* ( @@ -540,7 +544,7 @@ Trigger returns ecore::EBoolean : Target returns Target: targetGate=[GateReference|EStringDot] - ('where it is' 'assigned' 'to' variable+=[Variable|EString])? + ('where it is' 'assigned' 'to' variable=[Variable|EString])? ( 'with' '{' @@ -600,11 +604,17 @@ Behaviour returns Behaviour: ; Block returns Block: - ('[' guard=DataUse ']')? + ('[' guard+=LocalExpression ']')? '{' behaviour+=Behaviour ( behaviour+=Behaviour)* '}' ; + +LocalExpression returns LocalExpression: + expression=DataUse +; + + CompoundBehaviour returns CompoundBehaviour: block=Block ; @@ -634,7 +644,7 @@ TimerStart returns TimerStart: BoundedLoopBehaviour returns BoundedLoopBehaviour: 'repeat' - numIteration=DataUse + numIteration+=LocalExpression 'times' // 'from' startValue=DataInstanceSpecification // 'to' endValue=DataInstanceSpecification diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/META-INF/MANIFEST.MF b/plugins/org.etsi.mts.tdl.graphical.viewpoint/META-INF/MANIFEST.MF index 1004acadacce8ca2ebd5d28b986664e566bfbce4..eb87a42fa09d547d4ced60ce3ebcd791dde2c8b5 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/META-INF/MANIFEST.MF +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/META-INF/MANIFEST.MF @@ -22,6 +22,7 @@ Require-Bundle: org.eclipse.ui, org.etsi.mts.tdl.model, org.eclipse.sirius.diagram.sequence.ui, org.eclipse.sirius.ext.base, - org.eclipse.ui.ide + org.eclipse.ui.ide, + org.eclipse.sirius.diagram.sequence Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/description/TDL.odesign b/plugins/org.etsi.mts.tdl.graphical.viewpoint/description/TDL.odesign index 11b01aa163a39f5b277536c4e8ccce006642067e..198d6da9a0cf006b91baea424401e7264471de7c 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/description/TDL.odesign +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/description/TDL.odesign @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/sequence/description/2.0.0" xmlns:description_2="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" name="TDL" version="10.1.3.201511131800"> +<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/sequence/description/2.0.0" xmlns:description_2="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/diagram/sequence/description/tool/2.0.0" xmlns:tool_1="http://www.eclipse.org/sirius/description/tool/1.1.0" xmlns:tool_2="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" name="TDL" version="12.0.0.2017041100"> <ownedViewpoints name="org.etsi.mts.tdl" label="TDL"> <ownedRepresentations xsi:type="description_1:SequenceDiagramDescription" name="TestDescriptionDiagram" label="TDL Behavior" domainClass="tdl.TestDescription" enablePopupBars="true" endsOrdering="[getOccurrences()->select(e|eventEnds->includes(e))/]" instanceRolesOrdering="[testConfiguration.connection.endPoint->sortedBy(ref|ref.component.name + '.' + ref.gate.name)/]"> - <metamodel href="../tdl.ecore#/"/> + <metamodel href="../../org.etsi.mts.tdl.model/model/tdl.ecore#/"/> <defaultLayer name="Default"> <nodeMappings xsi:type="description_1:InstanceRoleMapping" name="gateReference" semanticCandidatesExpression="[testConfiguration.componentInstance->collect(c|c.type.gateInstance->select(g|self.testConfiguration.connection.endPoint->exists(ref|ref.component = c and ref.gate = g))->collect(g|self.testConfiguration.connection.endPoint->any(ref|ref.component = c and ref.gate = g)))/]" domainClass="tdl.GateReference"> <borderedNodeMappings xsi:type="description_1:ExecutionMapping" name="lifelineExecution" semanticCandidatesExpression="[self/]" domainClass="tdl.GateReference" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[self/]"> @@ -39,7 +39,7 @@ <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </nodeMappings> - <edgeMappings xsi:type="description_1:BasicMessageMapping" name="interaction" sourceMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@nodeMappings[name='gateReference']/@borderedNodeMappings[name='lifelineExecution']" targetMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@nodeMappings[name='gateReference']/@borderedNodeMappings[name='lifelineExecution']" targetFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.targetGate.component and ref.gate = self.targetGate.gate)/]" sourceFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.owner().oclAsType(tdl::Interaction).sourceGate.component and ref.gate = self.owner().oclAsType(tdl::Interaction).sourceGate.gate)/]" targetExpression="[self.owner()/]" domainClass="tdl.Target" useDomainElement="true" sendingEndFinderExpression="[self.owner()/]" receivingEndFinderExpression="[self.owner()/]"> + <edgeMappings xsi:type="description_1:BasicMessageMapping" name="interaction" semanticCandidatesExpression="[allBehaviours()/]" semanticElements="[self.owner()/]" sourceMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@nodeMappings[name='gateReference']/@borderedNodeMappings[name='lifelineExecution']" targetMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@nodeMappings[name='gateReference']/@borderedNodeMappings[name='lifelineExecution']" targetFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.targetGate.component and ref.gate = self.targetGate.gate)/]" sourceFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.owner().oclAsType(tdl::Interaction).sourceGate.component and ref.gate = self.owner().oclAsType(tdl::Interaction).sourceGate.gate)/]" targetExpression="[self.owner()/]" domainClass="tdl.Target" useDomainElement="true" sendingEndFinderExpression="[self.owner()/]" receivingEndFinderExpression="[self.owner().getEnd()/]"> <style sizeComputationExpression="2"> <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <centerLabelStyleDescription showIcon="false" labelExpression="[ serialise(self.owner().oclAsType(tdl::Interaction).argument) /]"> @@ -57,7 +57,7 @@ </endLabelStyleDescription> </style> </conditionnalStyles> - <conditionnalStyles predicateExpression="[self.owner().oclAsType(tdl::Interaction).target->asSequence()->indexOf(self) > 1 and self.owner().oclAsType(tdl::Interaction).isTrigger/]"> + <conditionnalStyles predicateExpression="[self.owner().oclIsKindOf(tdl::Message) and self.owner().oclAsType(tdl::Message).target->asSequence()->indexOf(self) > 1 and self.owner().oclAsType(tdl::Message).isTrigger/]"> <style targetArrow="NoDecoration" sizeComputationExpression="2"> <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <endLabelStyleDescription showIcon="false" labelExpression="[ if (self.variable.oclIsUndefined()) then '' else self.variable.name endif /]"> @@ -65,7 +65,7 @@ </endLabelStyleDescription> </style> </conditionnalStyles> - <conditionnalStyles predicateExpression="[self.owner().oclAsType(tdl::Interaction).isTrigger/]"> + <conditionnalStyles predicateExpression="[self.owner().oclIsKindOf(tdl::Message) and self.owner().oclAsType(tdl::Message).isTrigger/]"> <style targetArrow="NoDecoration" sizeComputationExpression="2"> <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <centerLabelStyleDescription showIcon="false" labelExpression="[ serialise(self.owner().oclAsType(tdl::Interaction).argument) /]"> @@ -93,7 +93,7 @@ </centerLabelStyleDescription> </style> </edgeMappings> - <containerMappings xsi:type="description_1:CombinedFragmentMapping" name="combinedBehaviour" preconditionExpression="[oclIsKindOf(CombinedBehaviour) or oclIsKindOf(ExceptionalBehaviour) or oclIsKindOf(PeriodicBehaviour)/]" domainClass="tdl.Behaviour" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()/]"> + <containerMappings xsi:type="description_1:CombinedFragmentMapping" name="combinedBehaviour" preconditionExpression="[oclIsKindOf(CombinedBehaviour) or oclIsKindOf(ExceptionalBehaviour) or oclIsKindOf(PeriodicBehaviour)/]" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.Behaviour" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint/]"> <subContainerMappings name="boundedLoopBehaviour" semanticCandidatesExpression="[self/]" domainClass="tdl.BoundedLoopBehaviour" childrenPresentation="List"> <subNodeMappings name="boundedLoop.keyword" semanticCandidatesExpression="[self/]" domainClass="tdl.BoundedLoopBehaviour"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="iteration: " labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> @@ -104,7 +104,7 @@ </style> </subNodeMappings> <subNodeMappings name="boundedLoop.iteration" semanticCandidatesExpression="[self/]" domainClass="tdl.BoundedLoopBehaviour"> - <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[serialise(self.numIteration)/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> + <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[if (not self.numIteration->isEmpty()) then '[' + serialise(self.numIteration.expression->any(true))+ ']' else '' endif/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> @@ -127,7 +127,7 @@ </style> </subNodeMappings> <subNodeMappings name="periodicBehaviour.iteration" semanticCandidatesExpression="[self/]" domainClass="tdl.PeriodicBehaviour"> - <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[serialise(self.period)/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> + <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[if (not self.period->isEmpty()) then '[' + serialise(self.period->any(true))+ ']' else '' endif/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> @@ -141,7 +141,7 @@ </style> </subContainerMappings> <subContainerMappings xsi:type="description_1:OperandMapping" name="block" semanticCandidatesExpression="[getBlocks()/]" domainClass="tdl.Block" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]"> - <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[if (not self.guard.oclIsUndefined()) then '[' + serialise(self.guard)+ ']' else '' endif/]" labelAlignment="LEFT"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[if (not self.guard->isEmpty()) then '[' + serialise(self.guard.expression->any(true))+ ']' else '' endif/]" labelAlignment="LEFT"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> @@ -245,7 +245,7 @@ </style> </conditionnalStyles> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="globalAction" preconditionExpression="[not oclIsKindOf(Assertion) and not oclIsKindOf(VerdictAssignment) and not oclIsKindOf(TimerOperation) and not oclIsKindOf(TimeOperation) and not oclIsKindOf(ActionBehaviour) and not oclIsKindOf(TestDescriptionReference) and not oclIsKindOf(Interaction)/]" domainClass="tdl.AtomicBehaviour" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="globalAction" preconditionExpression="[not oclIsKindOf(Assertion) and not oclIsKindOf(VerdictAssignment) and not oclIsKindOf(TimerOperation) and not oclIsKindOf(TimeOperation) and not oclIsKindOf(ActionBehaviour) and not oclIsKindOf(TestDescriptionReference) and not oclIsKindOf(Interaction)/]" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.AtomicBehaviour" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint/]"> <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[(if (self.oclIsKindOf(ActionReference)) then 'Action ' + self.oclAsType(ActionReference).action.name else if (self.oclIsKindOf(InlineAction)) then 'Inline Action ' + self.oclAsType(InlineAction)._body else if (self.oclIsKindOf(VerdictAssignment)) then 'Verdict ' + serialise(self.oclAsType(VerdictAssignment).verdict) else if (self.oclIsKindOf(TestDescriptionReference)) then 'Test Description ' + serialise(self.oclAsType(TestDescriptionReference)) else if (self.oclIsKindOf(Assertion)) then 'Assert ' + serialise(self.oclAsType(Assertion)) else self.name endif endif endif endif endif)/]"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -271,7 +271,7 @@ </style> </conditionnalStyles> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="assertion" domainClass="tdl.Assertion" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="assertion" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.Assertion" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint/]"> <subNodeMappings name="assertion.config" semanticCandidatesExpression="[self/]" domainClass="tdl.Assertion"/> <subNodeMappings name="assertion.condition" semanticCandidatesExpression="[self/]" domainClass="tdl.Assertion"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="['condition ' + serialise(self.condition)/]" labelPosition="node" resizeKind="NSEW"> @@ -293,14 +293,14 @@ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> </style> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="verdictAssignment" domainClass="tdl.VerdictAssignment" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="verdictAssignment" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.VerdictAssignment" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint/]"> <subNodeMappings name="verdictAssignment.config" semanticCandidatesExpression="[self/]" domainClass="tdl.VerdictAssignment"/> <style xsi:type="style:WorkspaceImageDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[serialise(self.verdict)/]" workspacePath="org.etsi.mts.tdl.graphical.viewpoint/images/Verdict.svg"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> </style> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="timerOperation" domainClass="tdl.TimerOperation" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()->select(ref|ref.component = self.componentInstance)/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="timerOperation" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.TimerOperation" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint->select(ref|ref.component = self.componentInstance)/]"> <subNodeMappings name="timerOperation.config" semanticCandidatesExpression="[self/]" domainClass="tdl.TimerOperation"/> <conditionnalStyles predicateExpression="[oclIsTypeOf(TimerStart)/]"> <style xsi:type="style:WorkspaceImageDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[self.timer.name + '('+serialise(self.oclAsType(TimerStart).period)+')'/]" workspacePath="org.etsi.mts.tdl.graphical.viewpoint/images/TimerStart.svg"> @@ -321,10 +321,10 @@ </style> </conditionnalStyles> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="assignment" domainClass="tdl.Assignment" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()->select(ref|ref.component = self.componentInstance)/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="assignment" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.Assignment" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint->select(ref|ref.component = self.componentInstance)/]"> <subNodeMappings name="assignment.config" semanticCandidatesExpression="[self/]" domainClass="tdl.Assignment"/> <subNodeMappings name="assignment.assignment" semanticCandidatesExpression="[self/]" domainClass="tdl.Assignment"> - <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[self.variable.name + ' := ' + serialise(self.expression)/]" labelPosition="node" resizeKind="NSEW"> + <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[self.variable.variable.name + ' := ' + serialise(self.expression)/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> @@ -338,7 +338,7 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="actionReference" domainClass="tdl.ActionReference" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[if (not self.componentInstance.oclIsUndefined()) then tdl::GateReference.allInstances()->select(ref|ref.component = self.componentInstance) else tdl::GateReference.allInstances() endif/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="actionReference" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.ActionReference" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[if (not self.componentInstance.oclIsUndefined()) then getTestConfiguration().connection.endPoint->select(ref|ref.component = self.componentInstance) else getTestConfiguration().connection.endPoint endif/]"> <subNodeMappings name="actionReference.config" semanticCandidatesExpression="[self/]" domainClass="tdl.ActionReference"/> <subNodeMappings name="actionReference.action" semanticCandidatesExpression="[self/]" domainClass="tdl.ActionReference"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[self.action.name/]" labelPosition="node" resizeKind="NSEW"> @@ -362,7 +362,7 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="inlineAction" domainClass="tdl.InlineAction" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[if (not self.componentInstance.oclIsUndefined()) then tdl::GateReference.allInstances()->select(ref|ref.component = self.componentInstance) else tdl::GateReference.allInstances() endif/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="inlineAction" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.InlineAction" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[if (not self.componentInstance.oclIsUndefined()) then getTestConfiguration().connection.endPoint->select(ref|ref.component = self.componentInstance) else getTestConfiguration().connection.endPoint endif/]"> <subNodeMappings name="inlineAction.config" semanticCandidatesExpression="[self/]" domainClass="tdl.InlineAction"/> <subNodeMappings name="inlineAction.Body" semanticCandidatesExpression="[self/]" domainClass="tdl.InlineAction"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[self._body/]" labelPosition="node" resizeKind="NSEW"> @@ -379,7 +379,7 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="testDescriptionReference" domainClass="tdl.TestDescriptionReference" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[tdl::GateReference.allInstances()/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="testDescriptionReference" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.TestDescriptionReference" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[getTestConfiguration().connection.endPoint/]"> <subNodeMappings name="testDescriptionReference.config" semanticCandidatesExpression="[self/]" domainClass="tdl.TestDescriptionReference"/> <subNodeMappings name="testDescriptionReference.testDescription" semanticCandidatesExpression="[self/]" domainClass="tdl.TestDescriptionReference"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[self.testDescription.name/]" labelPosition="node" resizeKind="NSEW"> @@ -410,7 +410,7 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings xsi:type="description_1:InteractionUseMapping" name="timeOperation" domainClass="tdl.TimeOperation" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[if (not self.componentInstance.oclIsUndefined()) then tdl::GateReference.allInstances()->select(ref|ref.component = self.componentInstance) else if (self.oclIsTypeOf(Quiescence) and not self.oclAsType(Quiescence).gateReference.oclIsUndefined()) then tdl::GateReference.allInstances()->select(ref|ref = self.oclAsType(Quiescence).gateReference) else tdl::GateReference.allInstances() endif endif/]"> + <containerMappings xsi:type="description_1:InteractionUseMapping" name="timeOperation" semanticCandidatesExpression="[allBehaviours()/]" domainClass="tdl.TimeOperation" startingEndFinderExpression="[self/]" finishingEndFinderExpression="[getEnd()/]" coveredLifelinesExpression="[if (not self.componentInstance.oclIsUndefined()) then getTestConfiguration().connection.endPoint->select(ref|ref.component = self.componentInstance) else if (self.oclIsTypeOf(Quiescence) and not self.oclAsType(Quiescence).gateReference.oclIsUndefined()) then getTestConfiguration().connection.endPoint->select(ref|ref = self.oclAsType(Quiescence).gateReference) else getTestConfiguration().connection.endPoint endif endif/]"> <subNodeMappings name="timeOperation.config" semanticCandidatesExpression="[self/]" domainClass="tdl.TimeOperation"/> <subNodeMappings name="timeOperation.period" semanticCandidatesExpression="[self/]" domainClass="tdl.TimeOperation"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[serialise(self.period)/]" labelPosition="node" resizeKind="NSEW"> @@ -454,19 +454,376 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> + <toolSections name="editBehaviour"> + <ownedTools xsi:type="tool:ReorderTool" name="behaviourReorder" mappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@edgeMappings[name='interaction'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='actionReference'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='assertion'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='assignment'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='globalAction'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='inlineAction'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='testDescriptionReference'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='timeOperation'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='timerOperation'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='verdictAssignment']"> + <startingEndPredecessorBefore name="startingEndPredecessorBefore"/> + <startingEndPredecessorAfter name="startingEndPredecessorAfter"/> + <finishingEndPredecessorBefore name="finishingEndPredecessorBefore"/> + <finishingEndPredecessorAfter name="finishingEndPredecessorAfter"/> + <onEventMovedOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[reorderBehaviour(self, startingEndPredecessorAfter)/]"/> + </onEventMovedOperation> + </ownedTools> + </toolSections> + <toolSections name="createCombined" label="Combined Behaviours"> + <ownedTools xsi:type="tool:CombinedFragmentCreationTool" name="createAlternativeBehaviour" label="Alternative" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createAlternativeBehaviourAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="AlternativeBehaviour"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:CombinedFragmentCreationTool" name="createBoundedLoopBehaviour" label="Bounded Loop" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createBoundedLoopBehaviourAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="BoundedLoopBehaviour"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:CombinedFragmentCreationTool" name="createConditionalBehaviour" label="Conditional" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createConditionalBehaviourAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="ConditionalBehaviour"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:CombinedFragmentCreationTool" name="createParallelBehaviour" label="Parallel" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createParallelBehaviourAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="ParallelBehaviour"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:CombinedFragmentCreationTool" name="createUnboundedLoopBehaviour" label="Unbounded Loop" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createUnboundedLoopBehaviourAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="UnboundedLoopBehaviour"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:OperandCreationTool" name="createBlock" label="Block" precondition="[oclIsKindOf(MultipleCombinedBehaviour)/]" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='combinedBehaviour']/@subContainerMappings[name='block']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createBlockAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="container" value="[variable/]"/> + <parameters name="class" value="Block"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + </ownedTools> + </toolSections> + <toolSections name="createAtomic" label="Atomic Behaviours"> + <ownedTools xsi:type="tool:MessageCreationTool" name="createMessage" label="Message" edgeMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@edgeMappings[name='interaction']"> + <sourceVariable name="sourceVariable"/> + <targetVariable name="targetVariable"/> + <sourceViewVariable name="sourceViewVariable"/> + <targetViewVariable name="targetViewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createMessageAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="source" value="[sourceVariable/]"/> + <parameters name="target" value="[targetVariable/]"/> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[sourceViewVariable/]"/> + <parameters name="class" value="Message"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + </ownedTools> + <ownedTools xsi:type="tool:InteractionUseCreationTool" name="createBreak" label="Break" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='globalAction']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createBreakAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="Break"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:InteractionUseCreationTool" name="createStop" label="Stop" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='globalAction']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createStopAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="Stop"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createVerdictAssignment" label="Verdict Assignment" candidatesExpression="[getVerdicts()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createMessageAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[container/]"/> + <parameters name="diagramElement" value="[containerView/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="VerdictAssignment"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createTestDescriptionReference" label="Test Description Reference" candidatesExpression="[getTestDescriptions()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createTestDescriptionReferenceAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[container/]"/> + <parameters name="diagramElement" value="[containerView/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="TestDescriptionReference"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createActionReference" label="Action Reference" candidatesExpression="[getActions()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createActionReferenceAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[container/]"/> + <parameters name="diagramElement" value="[containerView/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="ActionReference"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:InteractionUseCreationTool" name="createInlineAction" label="Inline Action" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='inlineAction']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createInlineAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="InlineAction"/> + <parameters name="lifelines" value="[coveredLifelines/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + </toolSections> + <toolSections name="createDataUse" label="Data Use"> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createDataInstanceUse" label="Data Instance" precondition="[oclIsKindOf(BoundedLoopBehaviour) or oclIsKindOf(PeriodicBehaviour) or oclIsKindOf(Block) or oclIsKindOf(Target) or oclIsKindOf(Interaction) or oclIsKindOf(Assertion) or oclIsKindOf(Assignment) or oclIsKindOf(TimerStart) or oclIsKindOf(TimeOperation) or oclIsKindOf(TimeConstraint)/]" candidatesExpression="[getDataInstances()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createDataInstanceUseAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="target" value="[container/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="DataInstanceUse"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createVariableUse" label="Variable" precondition="[oclIsKindOf(BoundedLoopBehaviour) or oclIsKindOf(PeriodicBehaviour) or oclIsKindOf(Block) or oclIsKindOf(Target) or oclIsKindOf(Interaction) or oclIsKindOf(Assertion) or oclIsKindOf(Assignment) or oclIsKindOf(TimerStart) or oclIsKindOf(TimeOperation) or oclIsKindOf(TimeConstraint)/]" candidatesExpression="[getVariables()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createVariableUseAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="target" value="[container/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="VariableUse"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createFunctionCall" label="Function Call" precondition="[oclIsKindOf(BoundedLoopBehaviour) or oclIsKindOf(PeriodicBehaviour) or oclIsKindOf(Block) or oclIsKindOf(Target) or oclIsKindOf(Interaction) or oclIsKindOf(Assertion) or oclIsKindOf(Assignment) or oclIsKindOf(TimerStart) or oclIsKindOf(TimeOperation) or oclIsKindOf(TimeConstraint)/]" candidatesExpression="[getFunctions()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createFunctionCallAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="target" value="[container/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="FunctionCall"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="createTimeUse" label="Time"> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createTimerStart" label="Timer Start" candidatesExpression="[getTimers()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createTimerStartAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[container/]"/> + <parameters name="diagramElement" value="[containerView/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="TimerStart"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createTimerStop" label="Timer Stop" candidatesExpression="[getTimers()/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createTimerStopAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[container/]"/> + <parameters name="diagramElement" value="[containerView/]"/> + <parameters name="element" value="[element/]"/> + <parameters name="class" value="TimerStop"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:InteractionUseCreationTool" name="createWait" label="Wait" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='timeOperation']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createWaitAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="Wait"/> + <parameters name="lifelines" value="[coveredLifelines/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool:InteractionUseCreationTool" name="createQuiescence" label="Quiescence" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='TestDescriptionDiagram']/@defaultLayer/@containerMappings[name='timeOperation']"> + <variable name="variable"/> + <viewVariable name="viewVariable"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createQuiescenceAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="startingEndPredecessor" value="[startingEndPredecessor/]"/> + <parameters name="diagramElement" value="[viewVariable/]"/> + <parameters name="class" value="Quiescence"/> + <parameters name="lifelines" value="[coveredLifelines/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + <startingEndPredecessor name="startingEndPredecessor"/> + <finishingEndPredecessor name="finishingEndPredecessor"/> + <coveredLifelines name="coveredLifelines"/> + </ownedTools> + <ownedTools xsi:type="tool_1:ToolDescription" name="createTimeLabel" label="Time Label" precondition="[oclIsKindOf(AtomicBehaviour)/]"> + <element name="element"/> + <elementView name="elementView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createTimeLabelAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="element" value="[container/]"/> + <parameters name="class" value="TimeLabel"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:ToolDescription" name="createTimeConstraint" label="Time Constraint" precondition="[oclIsKindOf(AtomicBehaviour)/]"> + <element name="element"/> + <elementView name="elementView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:ExternalJavaAction" name="createTimeConstraintAction" id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + <parameters name="element" value="[container/]"/> + <parameters name="class" value="TimeConstraint"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> </defaultLayer> </ownedRepresentations> <ownedRepresentations xsi:type="description_2:DiagramDescription" name="GenericDiagram" label="Generic TDL" domainClass="tdl.Package" enablePopupBars="true"> - <metamodel href="../tdl.ecore#/"/> + <metamodel href="../../org.etsi.mts.tdl.model/model/tdl.ecore#/"/> <layout xsi:type="description_2:CompositeLayout"/> <defaultLayer name="Default"> - <nodeMappings name="comment" semanticCandidatesExpression="[nestedPackage.comment->union(packagedElement.comment)/]" domainClass="tdl.Comment"> - <style xsi:type="style:WorkspaceImageDescription" showIcon="false" labelExpression="[_body/]" labelAlignment="LEFT" sizeComputationExpression="-1" labelPosition="node" resizeKind="NSEW" workspacePath="org.etsi.mts.tdl.graphical.viewpoint/images/Comment.svg"> + <nodeMappings name="comment" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editCommentBody']" semanticCandidatesExpression="[nestedPackage.comment->union(packagedElement.comment)/]" domainClass="tdl.Comment"> + <style xsi:type="style:WorkspaceImageDescription" showIcon="false" labelExpression="[_body/]" labelAlignment="LEFT" sizeComputationExpression="5" labelPosition="node" resizeKind="NSEW" workspacePath="org.etsi.mts.tdl.graphical.viewpoint/images/Comment.svg"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> </style> </nodeMappings> - <edgeMappings name="commentedElement" sourceMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@nodeMappings[name='comment']" targetMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='package']" targetFinderExpression="[commentedElement/]"> + <edgeMappings name="commentedElement" sourceMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@nodeMappings[name='comment']" targetMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='action'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='annotationType'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='componentType'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='componentType']/@borderedNodeMappings[name='gateInstance'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='dataElementMapping'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='dataResourceMapping'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='function'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='gateType'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='package'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='simpleDataInstance'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='simpleDataType'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='structuredDataInstance'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='structuredDataType'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testDescription'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testObjective']" targetFinderExpression="[commentedElement/]"> <style lineStyle="dash" targetArrow="NoDecoration" sizeComputationExpression="2"> <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <centerLabelStyleDescription> @@ -490,7 +847,7 @@ </centerLabelStyleDescription> </style> </edgeMappings> - <edgeMappings name="testConfiguration.connection" sourceMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']/@subContainerMappings[name='testConfiguration.configuration']/@subContainerMappings[name='testConfiguration.componentInstance']/@borderedNodeMappings[name='testConfiguration.gateReference']" targetMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']/@subContainerMappings[name='testConfiguration.configuration']/@subContainerMappings[name='testConfiguration.componentInstance']/@borderedNodeMappings[name='testConfiguration.gateReference']" targetFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.endPoint->sortedBy(g|g.name)->at(2).component and ref.gate = self.endPoint->sortedBy(g|g.name)->at(2).gate)/]" sourceFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.endPoint->sortedBy(g|g.name)->at(1).component and ref.gate = self.endPoint->sortedBy(g|g.name)->at(1).gate)/]" domainClass="tdl.Connection" useDomainElement="true"> + <edgeMappings name="testConfiguration.connection" sourceMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']/@subContainerMappings[name='testConfiguration.configuration']/@subContainerMappings[name='testConfiguration.componentInstance']/@borderedNodeMappings[name='testConfiguration.gateReference'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']/@subContainerMappings[name='testConfiguration.configuration']/@subContainerMappings[name='testConfiguration.componentInstance']/@borderedNodeMappings[name='testConfiguration.gateInstance']" targetMapping="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']/@subContainerMappings[name='testConfiguration.configuration']/@subContainerMappings[name='testConfiguration.componentInstance']/@borderedNodeMappings[name='testConfiguration.gateReference'] //@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']/@subContainerMappings[name='testConfiguration.configuration']/@subContainerMappings[name='testConfiguration.componentInstance']/@borderedNodeMappings[name='testConfiguration.gateInstance']" targetFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.endPoint->sortedBy(g|g.gate.name)->at(2).component and ref.gate = self.endPoint->sortedBy(g|g.gate.name)->at(2).gate)/]" sourceFinderExpression="[diagram.diagramElements.target->select(e|e.oclIsKindOf(tdl::GateReference))->asSet().oclAsType(tdl::GateReference)->any(ref|ref.component = self.endPoint->sortedBy(g|g.gate.name)->at(1).component and ref.gate = self.endPoint->sortedBy(g|g.gate.name)->at(1).gate)/]" domainClass="tdl.Connection" useDomainElement="true"> <style targetArrow="NoDecoration" sizeComputationExpression="2" routingStyle="manhattan"> <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <centerLabelStyleDescription showIcon="false" labelExpression="[name/]"> @@ -514,8 +871,8 @@ </centerLabelStyleDescription> </style> </edgeMappings> - <containerMappings name="annotationType" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.AnnotationType" childrenPresentation="List"> - <subNodeMappings name="annotationType.name" semanticCandidatesExpression="[self/]" domainClass="tdl.AnnotationType"> + <containerMappings name="annotationType" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.AnnotationType" childrenPresentation="List"> + <subNodeMappings name="annotationType.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.AnnotationType"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -530,8 +887,8 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="simpleDataType" preconditionExpression="[oclIsTypeOf(tdl::SimpleDataType)/]" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.SimpleDataType" childrenPresentation="List"> - <subNodeMappings name="simpleDataType.name" semanticCandidatesExpression="[self/]" domainClass="tdl.SimpleDataType"> + <containerMappings name="simpleDataType" preconditionExpression="[oclIsTypeOf(tdl::SimpleDataType)/]" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.SimpleDataType" childrenPresentation="List"> + <subNodeMappings name="simpleDataType.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.SimpleDataType"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -546,8 +903,8 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="time" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.Time" childrenPresentation="List"> - <subNodeMappings name="time.name" semanticCandidatesExpression="[self/]" domainClass="tdl.Time"> + <containerMappings name="time" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.Time" childrenPresentation="List"> + <subNodeMappings name="time.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Time"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -562,8 +919,8 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="simpleDataInstance" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.SimpleDataInstance" childrenPresentation="List"> - <subNodeMappings name="simpleDataInstance.name" semanticCandidatesExpression="[self/]" domainClass="tdl.SimpleDataInstance"> + <containerMappings name="simpleDataInstance" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.SimpleDataInstance" childrenPresentation="List"> + <subNodeMappings name="simpleDataInstance.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.SimpleDataInstance"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -578,7 +935,7 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="package" semanticCandidatesExpression="[nestedPackage/]" domainClass="tdl.Package"> + <containerMappings name="package" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[nestedPackage/]" domainClass="tdl.Package"> <subContainerMappings name="package.imports" semanticCandidatesExpression="[self/]" domainClass="tdl.Package" childrenPresentation="List"> <subNodeMappings name="import" label="Import" semanticCandidatesExpression="[import/]" domainClass="tdl.ElementImport"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="['from '.concat(self.importedPackage.name).concat(' ').concat(if self.importedElement->isEmpty() then ' all' else separator(self.importedElement->collect(e|e.name)->asSequence(), ', ') endif)/]" resizeKind="NSEW"> @@ -611,8 +968,8 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </subContainerMappings> - <subContainerMappings name="package.name" semanticCandidatesExpression="[self/]" domainClass="tdl.Package" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.Package"> + <subContainerMappings name="package.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Package" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Package"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -634,9 +991,9 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="action" preconditionExpression="[not oclIsKindOf(Function)/]" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.Action"> - <subContainerMappings name="action.name" semanticCandidatesExpression="[self/]" domainClass="tdl.Action" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.Action"> + <containerMappings name="action" preconditionExpression="[not oclIsKindOf(Function)/]" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editActionBody']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.Action"> + <subContainerMappings name="action.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Action" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Action"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -667,8 +1024,8 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </subContainerMappings> - <subContainerMappings name="action.body" semanticCandidatesExpression="[self/]" domainClass="tdl.Action" childrenPresentation="List"> - <subNodeMappings name="Body" semanticCandidatesExpression="[self/]" domainClass="tdl.Action"> + <subContainerMappings name="action.body" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editActionBody']" semanticCandidatesExpression="[self/]" domainClass="tdl.Action" childrenPresentation="List"> + <subNodeMappings name="Body" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editActionBody']" semanticCandidatesExpression="[self/]" domainClass="tdl.Action"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[_body/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -690,16 +1047,16 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="componentType" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.ComponentType"> - <borderedNodeMappings name="gateInstance" semanticCandidatesExpression="[gateInstance/]" domainClass="tdl.GateInstance"> + <containerMappings name="componentType" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.ComponentType"> + <borderedNodeMappings name="gateInstance" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[gateInstance/]" domainClass="tdl.GateInstance"> <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[name + ' : ' + type.name/]" labelAlignment="LEFT" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </borderedNodeMappings> - <subContainerMappings name="componentType.name" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentType" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentType"> + <subContainerMappings name="componentType.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentType" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentType"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -715,7 +1072,7 @@ </style> </subContainerMappings> <subContainerMappings name="componentType.timers" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentType" childrenPresentation="List"> - <subNodeMappings name="componentType.timer" semanticCandidatesExpression="[timer/]" domainClass="tdl.Timer"> + <subNodeMappings name="componentType.timer" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[timer/]" domainClass="tdl.Timer"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -731,7 +1088,7 @@ </style> </subContainerMappings> <subContainerMappings name="componentType.variables" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentType" childrenPresentation="List"> - <subNodeMappings name="componentType.variable" semanticCandidatesExpression="[variable/]" domainClass="tdl.Variable"> + <subNodeMappings name="componentType.variable" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[variable/]" domainClass="tdl.Variable"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name + ' : ' + dataType.name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -753,9 +1110,9 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="testConfiguration" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.TestConfiguration"> - <subContainerMappings name="testConfiguration.name" semanticCandidatesExpression="[self/]" domainClass="tdl.TestConfiguration" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.TestConfiguration"> + <containerMappings name="testConfiguration" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.TestConfiguration"> + <subContainerMappings name="testConfiguration.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestConfiguration" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestConfiguration"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -770,16 +1127,23 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </subContainerMappings> - <subContainerMappings name="testConfiguration.configuration" semanticCandidatesExpression="[self/]" domainClass="tdl.TestConfiguration"> - <subContainerMappings name="testConfiguration.componentInstance" semanticCandidatesExpression="[componentInstance/]" domainClass="tdl.ComponentInstance" childrenPresentation="List"> + <subContainerMappings name="testConfiguration.configuration" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestConfiguration"> + <subContainerMappings name="testConfiguration.componentInstance" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[componentInstance/]" domainClass="tdl.ComponentInstance" childrenPresentation="List"> <borderedNodeMappings name="testConfiguration.gateReference" semanticCandidatesExpression="[type.gateInstance->collect(gate|tdl::TestConfiguration.allInstances()->select(conf|conf.componentInstance->includes(self)).connection.endPoint->select(ep|ep.component = self)->any(ep|ep.gate = gate))/]" domainClass="tdl.GateReference"> - <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[name + ' : ' + gate.type.name/]" labelAlignment="LEFT" resizeKind="NSEW"> + <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[gate.name + ' : ' + gate.type.name/]" labelAlignment="LEFT" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </borderedNodeMappings> - <subNodeMappings name="testConfiguration.componentInstance.name" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentInstance"> + <borderedNodeMappings name="testConfiguration.gateInstance" semanticCandidatesExpression="[type.gateInstance->reject(gate|owner().oclAsType(TestConfiguration).connection.endPoint.gate->includes(gate))/]" domainClass="tdl.GateInstance"> + <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="[name + ' : ' + type.name/]" labelAlignment="LEFT" resizeKind="NSEW"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + </style> + </borderedNodeMappings> + <subNodeMappings name="testConfiguration.componentInstance.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.ComponentInstance"> <style xsi:type="style:SquareDescription" borderSizeComputationExpression="-1" showIcon="false" labelExpression="[name + ' : ' + type.name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -809,9 +1173,9 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="testObjective" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.TestObjective"> - <subContainerMappings name="testObjective.name" semanticCandidatesExpression="[self/]" domainClass="tdl.TestObjective" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.TestObjective"> + <containerMappings name="testObjective" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.TestObjective"> + <subContainerMappings name="testObjective.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestObjective" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestObjective"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -865,9 +1229,9 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="structuredDataType" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.StructuredDataType"> - <subContainerMappings name="structuredDataType.name" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataType" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataType"> + <containerMappings name="structuredDataType" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.StructuredDataType"> + <subContainerMappings name="structuredDataType.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataType" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataType"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -905,9 +1269,9 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="structuredDataInstance" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.StructuredDataInstance"> - <subContainerMappings name="structuredDataInstance.name" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataInstance" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataInstance"> + <containerMappings name="structuredDataInstance" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.StructuredDataInstance"> + <subContainerMappings name="structuredDataInstance.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataInstance" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.StructuredDataInstance"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -946,8 +1310,8 @@ </style> </containerMappings> <containerMappings name="dataResourceMapping" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.DataResourceMapping"> - <subContainerMappings name="dataResourceMapping.name" semanticCandidatesExpression="[self/]" domainClass="tdl.DataResourceMapping" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.DataResourceMapping"> + <subContainerMappings name="dataResourceMapping.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.DataResourceMapping" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.DataResourceMapping"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -986,8 +1350,8 @@ </style> </containerMappings> <containerMappings name="dataElementMapping" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.DataElementMapping"> - <subContainerMappings name="dataElementMapping.name" semanticCandidatesExpression="[self/]" domainClass="tdl.DataElementMapping" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.DataElementMapping"> + <subContainerMappings name="dataElementMapping.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.DataElementMapping" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.DataElementMapping"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name + (if (self.elementURI.oclIsUndefined()) then '' else ' := '+ self.elementURI endif)/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -1026,8 +1390,8 @@ </style> </containerMappings> <containerMappings name="testDescription" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.TestDescription"> - <subContainerMappings name="testDescription.name" semanticCandidatesExpression="[self/]" domainClass="tdl.TestDescription" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.TestDescription"> + <subContainerMappings name="testDescription.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestDescription" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.TestDescription"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -1115,9 +1479,9 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> - <containerMappings name="function" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.Function"> - <subContainerMappings name="function.name" semanticCandidatesExpression="[self/]" domainClass="tdl.Function" childrenPresentation="List"> - <subNodeMappings name="name" semanticCandidatesExpression="[self/]" domainClass="tdl.Function"> + <containerMappings name="function" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editActionBody']" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.Function"> + <subContainerMappings name="function.name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Function" childrenPresentation="List"> + <subNodeMappings name="name" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[self/]" domainClass="tdl.Function"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -1156,7 +1520,7 @@ </style> </subContainerMappings> <subContainerMappings name="function.parameter" semanticCandidatesExpression="[self/]" domainClass="tdl.Function" childrenPresentation="List"> - <subNodeMappings name="Parameter" semanticCandidatesExpression="[formalParameter/]" domainClass="tdl.FormalParameter"> + <subNodeMappings name="Parameter" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editName']" semanticCandidatesExpression="[formalParameter/]" domainClass="tdl.FormalParameter"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[self.name + ' : ' + dataType.name/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -1171,8 +1535,8 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </subContainerMappings> - <subContainerMappings name="function.body" semanticCandidatesExpression="[self/]" domainClass="tdl.Action" childrenPresentation="List"> - <subNodeMappings name="Body" semanticCandidatesExpression="[self/]" domainClass="tdl.Action"> + <subContainerMappings name="function.body" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editActionBody']" semanticCandidatesExpression="[self/]" domainClass="tdl.Action" childrenPresentation="List"> + <subNodeMappings name="Body" labelDirectEdit="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@toolSections.0/@ownedTools[name='editActionBody']" semanticCandidatesExpression="[self/]" domainClass="tdl.Action"> <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[_body/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> @@ -1194,9 +1558,354 @@ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> </style> </containerMappings> + <containerMappings name="gateType" semanticCandidatesExpression="[packagedElement/]" domainClass="tdl.GateType" childrenPresentation="List"> + <borderedNodeMappings name="gateTypeGateType" semanticCandidatesExpression="[self/]" domainClass="tdl.GateType"> + <style xsi:type="style:SquareDescription" borderSizeComputationExpression="5" showIcon="false" labelExpression="[name/]"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + </style> + </borderedNodeMappings> + <subNodeMappings name="gateTypeDataType" semanticCandidatesExpression="[dataType/]" domainClass="tdl.DataType"> + <style xsi:type="style:SquareDescription" showIcon="false" labelExpression="[name/]" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + </style> + </subNodeMappings> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" showIcon="false" labelExpression="DataType:" labelAlignment="LEFT"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + <labelFormat>bold</labelFormat> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/> + </style> + </containerMappings> + <toolSections name="edit"> + <ownedTools xsi:type="tool_2:DirectEditLabel" name="editName" inputLabelExpression="[name/]"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="[arg0/]"/> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:DirectEditLabel" name="editCommentBody" inputLabelExpression="[_body/]"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:SetValue" featureName="body" valueExpression="[arg0/]"/> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:DirectEditLabel" name="editActionBody" inputLabelExpression="[_body/]"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:SetValue" featureName="body" valueExpression="[arg0/]"/> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="createFoundation" label="Foundation"> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createPackage" label="Package" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='package']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Package" referenceName="nestedPackage"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createPackageImport" label="Package Import" precondition="[oclIsKindOf(Package)/]" candidatesExpression="[tdl::Package.allInstances()->excluding(self)/]"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="ElementImport" referenceName="import"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="importedPackage" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createTestDescription" label="Test Description" precondition="[oclIsKindOf(Package)/]" candidatesExpression="[getTestConfigurations()/]" message="Select Test Configuration"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="TestDescription" referenceName="packagedElement"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="a Test Case"/> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="BehaviourDescription" referenceName="behaviourDescription"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="CompoundBehaviour" referenceName="behaviour"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Block" referenceName="block"/> + </subModelOperations> + </subModelOperations> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:ToolDescription" name="createComment" label="Comment"> + <element name="element"/> + <elementView name="elementView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[element/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Comment" referenceName="comment"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="body" valueExpression="<no comment>"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createAnnotationType" label="Annotation Type" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='annotationType']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="AnnotationType" referenceName="packagedElement"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createAnnotation" label="Annotation" candidatesExpression="[getAnnotationTypes()/]" message="Select Annotation Type"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Annotation" referenceName="annotation"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="key" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="createConfiguration" label="Configuration"> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createTestConfiguration" label="Test Configuration" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='testConfiguration']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="TestConfiguration" referenceName="packagedElement"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createComponentInstance" label="Component Instance" precondition="[oclIsKindOf(TestConfiguration)/]" candidatesExpression="[getComponentTypes()/]" message="Select Component Type"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="ComponentInstance" referenceName="componentInstance"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="type" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:EdgeCreationDescription" name="createConnection" label="Connection" edgeMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@edgeMappings[name='testConfiguration.connection']"> + <sourceVariable name="source"/> + <targetVariable name="target"/> + <sourceViewVariable name="sourceView"/> + <targetViewVariable name="targetView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[sourceView.getContainingTestComponent().owner()/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Connection" referenceName="connection" variableName="newConnection"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="GateReference" referenceName="endPoint" variableName="sourceGate"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="[source.oclIsKindOf(GateReference)/]"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="component" valueExpression="[source.component/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="gate" valueExpression="[source.gate/]"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="[source.oclIsKindOf(GateInstance)/]"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="component" valueExpression="[sourceView.getContainingTestComponent()/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="gate" valueExpression="[source/]"/> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="GateReference" referenceName="endPoint" variableName="targetGate"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="[target.oclIsKindOf(GateReference)/]"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="component" valueExpression="[target.component/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="gate" valueExpression="[target.gate/]"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="[target.oclIsKindOf(GateInstance)/]"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="component" valueExpression="[targetView.getContainingTestComponent()/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="gate" valueExpression="[target/]"/> + </subModelOperations> + </subModelOperations> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createComponentType" label="Component Type" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='componentType']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="ComponentType" referenceName="packagedElement"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createGateInstance" label="Gate Instance" precondition="[oclIsKindOf(ComponentType)/]" candidatesExpression="[getGateTypes()/]" message="Select Gate Type"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="GateInstance" referenceName="gateInstance"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="type" valueExpression="[element/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['gate_' + element.name/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createVariable" label="Variable" precondition="[oclIsKindOf(ComponentType)/]" candidatesExpression="[getDataTypes()/]" message="Select Variable Type"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Variable" referenceName="variable"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="dataType" valueExpression="[element/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['var_' + element.name/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:NodeCreationDescription" name="createTimer" label="Timer" nodeMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='componentType']/@subContainerMappings[name='componentType.timers']/@subNodeMappings[name='componentType.timer']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Timer" referenceName="timer"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['t_' + container.timer->size()/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createGateType" label="Gate Type" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='gateType']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="GateType" referenceName="packagedElement"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="addGateTypeDataType" label="Gate Data Type" precondition="[oclIsKindOf(GateType)/]" candidatesExpression="[getDataTypes()/]" message="Select Variable Type"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="dataType" valueExpression="[element/]"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="createData" label="Data"> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createSimpleDataType" label="Simple Data Type" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='simpleDataType']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="SimpleDataType" referenceName="packagedElement"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createStructuredDataType" label="Structured Data Type" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='structuredDataType']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="StructuredDataType" referenceName="packagedElement"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createMember" label="Member" precondition="[oclIsKindOf(StructuredDataType)/]" candidatesExpression="[getDataTypes()/]" message="Select Type for Member"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Member" referenceName="member"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['a' + element.name/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="dataType" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createSimpleDataInstance" label="Simple Data Instance" precondition="[oclIsKindOf(Package)/]" candidatesExpression="[getSimpleDataTypes()/]" message="Select Type for Data Instance"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="SimpleDataInstance" referenceName="packagedElement"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['a' + element.name/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="dataType" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createStructuredDataInstance" label="Structured Data Instance" precondition="[oclIsKindOf(Package)/]" candidatesExpression="[getStructuredDataTypes()/]" message="Select Type for Data Instance"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="StructuredDataInstance" referenceName="packagedElement"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['a' + element.name/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="dataType" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createMemberAssignment" label="Member Assignment" precondition="[oclIsKindOf(StructuredDataInstance)/]" candidatesExpression="[dataType.oclAsType(StructuredDataType).member/]" message="Select Member to create Assignment for"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="MemberAssignment" referenceName="memberAssignment"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="member" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_2:ContainerCreationDescription" name="createAction" label="Action" containerMappings="//@ownedViewpoints[name='org.etsi.mts.tdl']/@ownedRepresentations[name='GenericDiagram']/@defaultLayer/@containerMappings[name='action']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Action" referenceName="packagedElement"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="an action"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createFunction" label="Function" precondition="[oclIsKindOf(Package)/]" candidatesExpression="[getDataTypes()/]" message="Select return type for Function"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="Function" referenceName="packagedElement"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="a function"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="returnType" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool_1:SelectionWizardDescription" name="createParameter" label="Parameter" precondition="[oclIsKindOf(Action)/]" candidatesExpression="[getDataTypes()/]" message="Select Type for Parameter"> + <element name="element"/> + <containerView name="containerView"/> + <container name="container"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="FormalParameter" referenceName="formalParameter"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="['p' + element.name/]"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="dataType" valueExpression="[element/]"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> </defaultLayer> </ownedRepresentations> <ownedJavaExtensions qualifiedClassName="org.etsi.mts.tdl.graphical.extensions.DataUseLabelProvider"/> - <ownedJavaExtensions qualifiedClassName="org.etsi.mts.tdl.graphical.extensions.BehaviorProvider"/> + <ownedJavaExtensions qualifiedClassName="org.etsi.mts.tdl.graphical.extensions.BehaviourProvider"/> + <ownedJavaExtensions qualifiedClassName="org.etsi.mts.tdl.graphical.extensions.ModelHelper"/> + <ownedJavaExtensions qualifiedClassName="org.etsi.mts.tdl.graphical.extensions.BehaviourModifications"/> </ownedViewpoints> </description:Group> diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/plugin.xml b/plugins/org.etsi.mts.tdl.graphical.viewpoint/plugin.xml index 23a6c243241364909bc7a7195e67c9ddbb17f848..7c55bec302fa4a879fc2cc2333bcb7b7725dd926 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/plugin.xml +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/plugin.xml @@ -74,6 +74,13 @@ providerClass="org.etsi.mts.tdl.graphical.sirius.layout.RefreshExtensionProvider"> </refreshExtensionProvider> </extension> + <extension + point="org.eclipse.sirius.externalJavaAction"> + <javaActions + actionClass="org.etsi.mts.tdl.graphical.sirius.actions.CreateAction" + id="org.etsi.mts.tdl.graphical.viewpoint.createAction"> + </javaActions> + </extension> </plugin> diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviourModifications.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviourModifications.java new file mode 100644 index 0000000000000000000000000000000000000000..6a20082ae8c11113aa85f760dc51feda3647c244 --- /dev/null +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviourModifications.java @@ -0,0 +1,93 @@ +package org.etsi.mts.tdl.graphical.extensions; + +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.sirius.diagram.DDiagramElement; +import org.eclipse.sirius.diagram.DSemanticDiagram; +import org.eclipse.sirius.diagram.sequence.ordering.EventEnd; +import org.etsi.mts.tdl.Behaviour; +import org.etsi.mts.tdl.Block; +import org.etsi.mts.tdl.MultipleCombinedBehaviour; +import org.etsi.mts.tdl.SingleCombinedBehaviour; +import org.etsi.mts.tdl.Target; +import org.etsi.mts.tdl.TestDescription; +import org.etsi.mts.tdl.tdlFactory; + +public class BehaviourModifications { + + private ModelHelper helper = new ModelHelper(); + + public static void addBehaviour(EObject startingEndPredecessor, Object diagramElement, Behaviour behaviour) { + DSemanticDiagram diagram = + diagramElement instanceof DSemanticDiagram ? (DSemanticDiagram) diagramElement : + (DSemanticDiagram) ((DDiagramElement)diagramElement).getParentDiagram(); + TestDescription td = (TestDescription) diagram.getTarget(); + addBehaviour(startingEndPredecessor, td, behaviour); + } + + public static void addBehaviour(EObject endPredecessor, TestDescription td, Behaviour behaviour) { + if (endPredecessor instanceof EventEnd) + endPredecessor = ((EventEnd) endPredecessor).getSemanticEnd(); + + Block parent = null; + Behaviour prev = null; + if (endPredecessor instanceof Behaviour) { + prev = (Behaviour) endPredecessor; + + } else if (endPredecessor instanceof Block) { + parent = (Block) endPredecessor; + + } else if (endPredecessor == null || endPredecessor instanceof TestDescription) { + parent = ((SingleCombinedBehaviour)td.getBehaviourDescription().getBehaviour()).getBlock(); + + } else { + EObject begin = BehaviourProvider.getBegin(endPredecessor); + if (begin instanceof Block) + prev = (Behaviour)begin.eContainer(); + else + prev = (Behaviour) begin; + } + + if (parent == null && prev != null) + parent = (Block) prev.eContainer(); + + List<Behaviour> list = parent.getBehaviour(); + list.remove(behaviour); + int index = 0; + if (prev != null) + index = list.indexOf(prev) + 1; + list.add(index, behaviour); + } + + public Object reorderBehaviour(Object selection, Object preAfter) { + + Behaviour b = null; + if (selection instanceof Target) + b = (Behaviour) ((Target) selection).eContainer(); + else + b = (Behaviour) selection; + + addBehaviour((EObject)preAfter, helper.getTestDescription(b), b); + + return selection; + } + + public static void addBlock(EObject endPredecessor, MultipleCombinedBehaviour combinedBheviour) { + if (endPredecessor instanceof EventEnd) + endPredecessor = ((EventEnd) endPredecessor).getSemanticEnd(); + + Block prevBlock; + if (endPredecessor instanceof Block) + prevBlock = (Block) endPredecessor; + else { + EObject begin = BehaviourProvider.getBegin(endPredecessor); + while (!(begin instanceof Block)) + begin = begin.eContainer(); + prevBlock = (Block) begin; + } + List<Block> blocks = combinedBheviour.getBlock(); + blocks.add(prevBlock == null || !blocks.contains(prevBlock) ? 0 : blocks.indexOf(prevBlock) + 1, + tdlFactory.eINSTANCE.createBlock()); + } +} diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviorProvider.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviourProvider.java similarity index 91% rename from plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviorProvider.java rename to plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviourProvider.java index d076eb27bced4fac078edaee74455d0c4bfe86db..756628b1d4953f8cb56e2776632d9f9bd14b1f5a 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviorProvider.java +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/BehaviourProvider.java @@ -19,14 +19,13 @@ import org.etsi.mts.tdl.CombinedBehaviour; import org.etsi.mts.tdl.Connection; import org.etsi.mts.tdl.ExceptionalBehaviour; import org.etsi.mts.tdl.GateReference; -import org.etsi.mts.tdl.Interaction; import org.etsi.mts.tdl.MultipleCombinedBehaviour; import org.etsi.mts.tdl.PeriodicBehaviour; import org.etsi.mts.tdl.SingleCombinedBehaviour; import org.etsi.mts.tdl.TestDescription; import org.etsi.mts.tdl.tdlPackage; -public class BehaviorProvider { +public class BehaviourProvider { private static final String EXTENSION_URI = "http://www.etsi.org/spec/TDL/1.2.1/viewer"; @@ -98,7 +97,7 @@ public class BehaviorProvider { default: items.add(behaviour); - if (behaviour instanceof AtomicBehaviour && !(behaviour instanceof Interaction)) + if (behaviour instanceof AtomicBehaviour) items.add(getEnd(behaviour)); break; } @@ -131,8 +130,8 @@ public class BehaviorProvider { private EObject createEnd(EObject e) { Resource extResource = getExtensionResource(e); - EPackage extPackage = EPackageRegistryImpl.INSTANCE.getEPackage(EXTENSION_URI); - EClass endClass = (EClass) extPackage.getEClassifier(END_CLASS); + EPackage extPackage = getExtensionPackage(); + EClass endClass = getEndClass(); EObject end = extPackage.getEFactoryInstance().create(endClass); end.eSet(endClass.getEStructuralFeature(END_BEGIN_FEATURE), e); @@ -142,6 +141,18 @@ public class BehaviorProvider { return end; } + private static EPackage getExtensionPackage() { + return EPackageRegistryImpl.INSTANCE.getEPackage(EXTENSION_URI); + } + + private static EClass getEndClass() { + return (EClass) getExtensionPackage().getEClassifier(END_CLASS); + } + + public static EObject getBegin(EObject end) { + return (EObject) end.eGet(getEndClass().getEStructuralFeature(END_BEGIN_FEATURE)); + } + private Resource getExtensionResource(EObject e) { Resource mResource = e.eResource(); ResourceSet rs = mResource.getResourceSet(); diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/ModelHelper.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/ModelHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..50da450f0807d798302403909117133da0e70ef4 --- /dev/null +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/extensions/ModelHelper.java @@ -0,0 +1,182 @@ +package org.etsi.mts.tdl.graphical.extensions; + +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.common.util.TreeIterator; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.sirius.diagram.DDiagramElement; +import org.etsi.mts.tdl.Action; +import org.etsi.mts.tdl.AnnotationType; +import org.etsi.mts.tdl.Behaviour; +import org.etsi.mts.tdl.BehaviourDescription; +import org.etsi.mts.tdl.ComponentInstance; +import org.etsi.mts.tdl.ComponentType; +import org.etsi.mts.tdl.DataInstance; +import org.etsi.mts.tdl.DataType; +import org.etsi.mts.tdl.Element; +import org.etsi.mts.tdl.ElementImport; +import org.etsi.mts.tdl.Function; +import org.etsi.mts.tdl.GateType; +import org.etsi.mts.tdl.Package; +import org.etsi.mts.tdl.SimpleDataInstance; +import org.etsi.mts.tdl.SimpleDataType; +import org.etsi.mts.tdl.StructuredDataType; +import org.etsi.mts.tdl.Target; +import org.etsi.mts.tdl.TestConfiguration; +import org.etsi.mts.tdl.TestDescription; +import org.etsi.mts.tdl.Timer; +import org.etsi.mts.tdl.Variable; +import org.etsi.mts.tdl.tdlPackage; + +public class ModelHelper { + + public EObject owner(EObject element) { + return element.eContainer(); + } + + public TestDescription getTestDescription(EObject behaviourContent) { + EObject c = behaviourContent; + while (c != null) { + if (c instanceof TestDescription) + return (TestDescription) c; + c = c.eContainer(); + } + return null; + } + + public ComponentInstance getContainingTestComponent(DDiagramElement configurationDiagramElement) { + while (configurationDiagramElement != null) { + EObject t = configurationDiagramElement.getTarget(); + if (t instanceof ComponentInstance) + return (ComponentInstance) t; + if (!(configurationDiagramElement.eContainer() instanceof DDiagramElement)) + return null; + configurationDiagramElement = (DDiagramElement) configurationDiagramElement.eContainer(); + } + return null; + } + + public TestConfiguration getTestConfiguration(EObject behaviourContent) { + TestDescription td = getTestDescription(behaviourContent); + return td != null ? td.getTestConfiguration() : null; + } + + public List<TestDescription> getTestDescriptions(EObject context) { + List<TestDescription> tdList = (List<TestDescription>) getOf(context, tdlPackage.eINSTANCE.getTestDescription()); + TestDescription td = getTestDescription(context); + tdList.remove(td); + return tdList; + } + + public List<Function> getFunctions(EObject context) { + return (List<Function>) getOf(context, tdlPackage.eINSTANCE.getFunction()); + } + + public List<Action> getActions(EObject context) { + return (List<Action>) getOf(context, tdlPackage.eINSTANCE.getAction()); + } + + public List<SimpleDataType> getSimpleDataTypes(EObject context) { + return (List<SimpleDataType>) getOf(context, tdlPackage.eINSTANCE.getSimpleDataType()); + } + + public List<StructuredDataType> getStructuredDataTypes(EObject context) { + return (List<StructuredDataType>) getOf(context, tdlPackage.eINSTANCE.getStructuredDataType()); + } + + public List<DataType> getDataTypes(EObject context) { + return (List<DataType>) getOf(context, tdlPackage.eINSTANCE.getDataType()); + } + + public List<DataInstance> getDataInstances(EObject context) { + return (List<DataInstance>) getOf(context, tdlPackage.eINSTANCE.getDataInstance()); + } + + public List<TestConfiguration> getTestConfigurations(EObject context) { + return (List<TestConfiguration>) getOf(context, tdlPackage.eINSTANCE.getTestConfiguration()); + } + + public List<ComponentType> getComponentTypes(EObject context) { + return (List<ComponentType>) getOf(context, tdlPackage.eINSTANCE.getComponentType()); + } + + public List<AnnotationType> getAnnotationTypes(EObject context) { + return (List<AnnotationType>) getOf(context, tdlPackage.eINSTANCE.getAnnotationType()); + } + + public List<GateType> getGateTypes(EObject context) { + return (List<GateType>) getOf(context, tdlPackage.eINSTANCE.getGateType()); + } + + public List<Variable> getVariables(EObject context) { + List<Variable> vars = new LinkedList<Variable>(); + TestDescription td = getTestDescription(context); + for (ComponentInstance c: td.getTestConfiguration().getComponentInstance()) + vars.addAll(c.getType().getVariable()); + return vars; + } + + public List<Timer> getTimers(EObject context) { + List<Timer> timers = new LinkedList<Timer>(); + TestDescription td = getTestDescription(context); + for (ComponentInstance c: td.getTestConfiguration().getComponentInstance()) + timers.addAll(c.getType().getTimer()); + return timers; + } + + private List<? extends Element> getOf(EObject context, EClassifier eClass) { + List<Element> list = new LinkedList<Element>(); + for (Element e: visibleElements(context)) + if (eClass.isInstance(e)) + list.add(e); + return list; + } + + public List<SimpleDataInstance> getVerdicts(EObject context) { + List<SimpleDataInstance> verdicts = new LinkedList<SimpleDataInstance>(); + for (Element e: visibleElements(context)) + if (e instanceof SimpleDataInstance) { + DataType type = ((SimpleDataInstance) e).getDataType(); + if (type.getName().equalsIgnoreCase("Verdict")) + verdicts.add((SimpleDataInstance) e); + } + return verdicts; + } + + private List<Element> visibleElements(EObject context) { + List<Element> elements = new LinkedList<Element>(); + + while (!(context instanceof Package)) + context = context.eContainer(); + + Package p = (Package) context; + elements.addAll(p.getPackagedElement()); + + for (ElementImport imp: p.getImport()) { + if (imp.getImportedElement().isEmpty()) + elements.addAll(imp.getImportedPackage().getPackagedElement()); + else + elements.addAll(imp.getImportedElement()); + } + + return elements; + } + + public List<EObject> allBehaviours(TestDescription e) { + List<EObject> behaviours = new LinkedList<EObject>(); + TreeIterator<EObject> iter = e.eAllContents(); + while (iter.hasNext()) { + EObject c = iter.next(); + if (c.eContainer() instanceof BehaviourDescription) + //Top level CompoundBehaviour + continue; + if (c instanceof Behaviour) + behaviours.add(c); + else if (c instanceof Target) + behaviours.add(c); + } + return behaviours; + } +} diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/actions/CreateAction.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/actions/CreateAction.java new file mode 100644 index 0000000000000000000000000000000000000000..20a02276beca8ce8e381e66ce8bb9220d9b6dd30 --- /dev/null +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/actions/CreateAction.java @@ -0,0 +1,263 @@ +package org.etsi.mts.tdl.graphical.sirius.actions; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.sirius.tools.api.ui.IExternalJavaAction; +import org.etsi.mts.tdl.Action; +import org.etsi.mts.tdl.ActionBehaviour; +import org.etsi.mts.tdl.ActionReference; +import org.etsi.mts.tdl.AlternativeBehaviour; +import org.etsi.mts.tdl.Assertion; +import org.etsi.mts.tdl.Assignment; +import org.etsi.mts.tdl.AtomicBehaviour; +import org.etsi.mts.tdl.Behaviour; +import org.etsi.mts.tdl.Block; +import org.etsi.mts.tdl.BoundedLoopBehaviour; +import org.etsi.mts.tdl.ComponentInstance; +import org.etsi.mts.tdl.ComponentInstanceRole; +import org.etsi.mts.tdl.DataInstance; +import org.etsi.mts.tdl.DataInstanceUse; +import org.etsi.mts.tdl.DataUse; +import org.etsi.mts.tdl.Function; +import org.etsi.mts.tdl.FunctionCall; +import org.etsi.mts.tdl.GateReference; +import org.etsi.mts.tdl.Interaction; +import org.etsi.mts.tdl.LocalExpression; +import org.etsi.mts.tdl.Message; +import org.etsi.mts.tdl.MultipleCombinedBehaviour; +import org.etsi.mts.tdl.ParallelBehaviour; +import org.etsi.mts.tdl.PeriodicBehaviour; +import org.etsi.mts.tdl.SingleCombinedBehaviour; +import org.etsi.mts.tdl.Target; +import org.etsi.mts.tdl.TestDescription; +import org.etsi.mts.tdl.TestDescriptionReference; +import org.etsi.mts.tdl.TimeConstraint; +import org.etsi.mts.tdl.TimeLabel; +import org.etsi.mts.tdl.TimeOperation; +import org.etsi.mts.tdl.Timer; +import org.etsi.mts.tdl.TimerOperation; +import org.etsi.mts.tdl.TimerStart; +import org.etsi.mts.tdl.Variable; +import org.etsi.mts.tdl.VariableUse; +import org.etsi.mts.tdl.VerdictAssignment; +import org.etsi.mts.tdl.tdlFactory; +import org.etsi.mts.tdl.tdlPackage; +import org.etsi.mts.tdl.graphical.extensions.BehaviourModifications; +import org.etsi.mts.tdl.graphical.extensions.ModelHelper; + +public class CreateAction implements IExternalJavaAction { + + @Override + public void execute(Collection<? extends EObject> selections, Map<String, Object> parameters) { + + EObject endPredecessor = (EObject) parameters.get("startingEndPredecessor"); + List<GateReference> lifelines = (List<GateReference>) parameters.get("lifelines"); + EObject target = (EObject) parameters.get("target"); + EObject element = (EObject) parameters.get("element"); + + String metaClassName = (String) parameters.get("class"); + EClassifier eClass = tdlPackage.eINSTANCE.getEClassifier(metaClassName); + + Behaviour behaviour = null; + switch (eClass.getClassifierID()) { + case tdlPackage.MESSAGE: + behaviour = createMessage(parameters); + break; + + case tdlPackage.ALTERNATIVE_BEHAVIOUR: + case tdlPackage.BOUNDED_LOOP_BEHAVIOUR: + case tdlPackage.CONDITIONAL_BEHAVIOUR: + case tdlPackage.PARALLEL_BEHAVIOUR: + case tdlPackage.UNBOUNDED_LOOP_BEHAVIOUR: + behaviour = createCombinedBehaviour(parameters, eClass); + break; + + case tdlPackage.DEFAULT_BEHAVIOUR: + case tdlPackage.INTERRUPT_BEHAVIOUR: + case tdlPackage.PERIODIC_BEHAVIOUR: + return; + + case tdlPackage.BLOCK: + BehaviourModifications.addBlock(endPredecessor, (MultipleCombinedBehaviour) target); + return; + + case tdlPackage.BREAK: + case tdlPackage.STOP: + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + break; + + case tdlPackage.ACTION_REFERENCE: + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + ((ActionReference)behaviour).setAction((Action) element); + break; + + case tdlPackage.INLINE_ACTION: + for (GateReference gRef : lifelines) { + ComponentInstance comp = gRef.getComponent(); + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + ((ActionBehaviour)behaviour).setComponentInstance(comp); + break; + } + break; + + case tdlPackage.VERDICT_ASSIGNMENT: + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + DataInstanceUse verdictDataUse = tdlFactory.eINSTANCE.createDataInstanceUse(); + verdictDataUse.setDataInstance((DataInstance) element); + ((VerdictAssignment)behaviour).setVerdict(verdictDataUse); + break; + + case tdlPackage.TEST_DESCRIPTION_REFERENCE: + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + ((TestDescriptionReference)behaviour).setTestDescription((TestDescription) element); + break; + + case tdlPackage.TIMER_START: + case tdlPackage.TIMER_STOP: + for (ComponentInstance c: new ModelHelper().getTestDescription(endPredecessor).getTestConfiguration().getComponentInstance()) { + if (c.getType().getTimer().contains(element)) { + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + ((TimerOperation)behaviour).setTimer((Timer) element); + ((TimerOperation)behaviour).setComponentInstance(c); + break; + } + } + break; + + case tdlPackage.WAIT: + case tdlPackage.QUIESCENCE: + ComponentInstance tester = null; + for (GateReference gRef : lifelines) { + ComponentInstance comp = gRef.getComponent(); + if (comp.getRole() == ComponentInstanceRole.TESTER) + if (tester == null) + tester = comp; + else { + tester = null; + break; + } + } + behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + ((TimeOperation)behaviour).setComponentInstance(tester); + + break; + + case tdlPackage.TIME_LABEL: + TimeLabel tl = (TimeLabel) EcoreUtil.create((EClass) eClass); + ((AtomicBehaviour)element).setTimeLabel(tl); + return; + + case tdlPackage.TIME_CONSTRAINT: + TimeConstraint tc = (TimeConstraint) EcoreUtil.create((EClass) eClass); + ((AtomicBehaviour)element).getTimeConstraint().add(tc); + return; + + case tdlPackage.DATA_INSTANCE_USE: + DataInstanceUse dataInstanceUse = tdlFactory.eINSTANCE.createDataInstanceUse(); + dataInstanceUse.setDataInstance((DataInstance) element); + setDataUse(target, dataInstanceUse); + return; + + case tdlPackage.VARIABLE_USE: + VariableUse variableUse = tdlFactory.eINSTANCE.createVariableUse(); + variableUse.setVariable((Variable) element); + for (ComponentInstance c: new ModelHelper().getTestDescription(target).getTestConfiguration().getComponentInstance()) { + if (c.getType().getVariable().contains(element)) { + variableUse.setComponentInstance(c); + break; + } + } + setDataUse(target, variableUse); + return; + + case tdlPackage.FUNCTION_CALL: + FunctionCall functionCall = tdlFactory.eINSTANCE.createFunctionCall(); + functionCall.setFunction((Function) element); + setDataUse(target, functionCall); + return; + + default: + return; + } + + if (behaviour == null) + return; + + BehaviourModifications.addBehaviour(endPredecessor, parameters.get("diagramElement"), behaviour); + + } + + private Behaviour createMessage(Map<String, Object> parameters) { + + Message msg = tdlFactory.eINSTANCE.createMessage(); + + msg.setSourceGate((GateReference) parameters.get("source")); + + Target t = tdlFactory.eINSTANCE.createTarget(); + msg.getTarget().add(t); + t.setTargetGate((GateReference) parameters.get("target")); + + return msg; + } + + + private Behaviour createCombinedBehaviour(Map<String, Object> parameters, EClassifier eClass) { + Behaviour behaviour = (Behaviour) EcoreUtil.create((EClass) eClass); + Block block = tdlFactory.eINSTANCE.createBlock(); + if (behaviour instanceof SingleCombinedBehaviour) + ((SingleCombinedBehaviour) behaviour).setBlock(block); + else if (behaviour instanceof MultipleCombinedBehaviour) + ((MultipleCombinedBehaviour) behaviour).getBlock().add(block); + + if (behaviour instanceof AlternativeBehaviour || + behaviour instanceof ParallelBehaviour) + ((MultipleCombinedBehaviour) behaviour).getBlock().add(tdlFactory.eINSTANCE.createBlock()); + + return behaviour; + } + + private void setDataUse(EObject target, DataUse dataUse) { + LocalExpression exp = null; + if (target instanceof BoundedLoopBehaviour + || target instanceof PeriodicBehaviour + || target instanceof Block) { + exp = tdlFactory.eINSTANCE.createLocalExpression(); + exp.setExpression(dataUse); + } + + if (target instanceof Target) { + Interaction interaction = (Interaction) target.eContainer(); + if (interaction instanceof Message) + ((Message) interaction).setArgument(dataUse); + } else if (target instanceof BoundedLoopBehaviour) + ((BoundedLoopBehaviour) target).getNumIteration().add(exp); + else if (target instanceof PeriodicBehaviour) + ((PeriodicBehaviour) target).getPeriod().add(exp); + else if (target instanceof Block) + ((Block) target).getGuard().add(exp); + else if (target instanceof Assertion) + ((Assertion) target).setCondition(dataUse); + else if (target instanceof Assignment) + ((Assignment) target).setExpression(dataUse); + else if (target instanceof TimeConstraint) + ((TimeConstraint) target).setTimeConstraintExpression(dataUse); + else if (target instanceof TimerStart) + ((TimerStart) target).setPeriod(dataUse); + else if (target instanceof TimeOperation) + ((TimeOperation) target).setPeriod(dataUse); + else if (target instanceof TimeConstraint) + ((TimeConstraint) target).setTimeConstraintExpression(dataUse); + } + + @Override + public boolean canExecute(Collection<? extends EObject> selections) { + return true; + } + +} diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/LayoutEditPolicyProvider.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/LayoutEditPolicyProvider.java index da8c996d2d065dc3c0409e958b47beefcb6940a0..47b57ecbb394cdcbb7605147f84cbb5b08f9be71 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/LayoutEditPolicyProvider.java +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/LayoutEditPolicyProvider.java @@ -15,6 +15,7 @@ import org.eclipse.gef.requests.ChangeBoundsRequest; import org.eclipse.gmf.runtime.common.core.service.IOperation; import org.eclipse.gmf.runtime.common.core.service.IProviderChangeListener; import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer; import org.eclipse.gmf.runtime.diagram.ui.requests.ArrangeRequest; @@ -49,8 +50,10 @@ public class LayoutEditPolicyProvider implements IEditPolicyProvider { EditPartViewer viewer = editPart.getViewer(); if (viewer instanceof DiagramGraphicalViewer) { - CustomInteractionUsePreferredSizeLayoutPolicy iuep = new CustomInteractionUsePreferredSizeLayoutPolicy(); - editPart.installEditPolicy(CustomInteractionUsePreferredSizeLayoutPolicy.KEY, iuep); + if (editPart instanceof GraphicalEditPart) { + CustomInteractionUsePreferredSizeLayoutPolicy iuep = new CustomInteractionUsePreferredSizeLayoutPolicy(); + editPart.installEditPolicy(CustomInteractionUsePreferredSizeLayoutPolicy.KEY, iuep); + } EObject dElement = ((IGraphicalEditPart)editPart).resolveSemanticElement(); diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/RefreshExtensionProvider.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/RefreshExtensionProvider.java index 0d1b02a777d72d4326016843147c531a8666a3b3..bb5623da3fb4ca100b9c7bc802be0507961739f1 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/RefreshExtensionProvider.java +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/RefreshExtensionProvider.java @@ -26,8 +26,8 @@ public class RefreshExtensionProvider implements IRefreshExtensionProvider { @Override public boolean provides(DDiagram viewPoint) { DiagramDescription desc = viewPoint.getDescription(); - if (desc != null) - return SequenceDiagramFreeformLayoutProvider.TEST_DESCRIPTION_DIAGRAM_ID.equals(desc.getName()); +// if (desc != null) +// return SequenceDiagramFreeformLayoutProvider.TEST_DESCRIPTION_DIAGRAM_ID.equals(desc.getName()); return false; } @@ -79,13 +79,8 @@ class RefreshExtension implements IRefreshExtension { //GMF helper will fail to map view to edit-part if some other editor is active final IWorkbenchPage page = editor.getSite().getPage(); - page.getWorkbenchWindow().getShell().getDisplay().syncExec(new Runnable() { - @Override - public void run() { - page.activate(editor); - } - }); - dPart.getDiagramEditDomain().getDiagramCommandStack().execute(command); + if (editor.equals(page.getActiveEditor())) + dPart.getDiagramEditDomain().getDiagramCommandStack().execute(command); } } \ No newline at end of file diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java index cb9b0d35c9a7251e2379468e72b42939986595bb..2fd6a65741f3abc32d2a091979a001ad23ca7529 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java @@ -27,14 +27,15 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.requests.ZOrderRequest; import org.eclipse.gmf.runtime.diagram.ui.services.layout.AbstractLayoutEditPartProvider; import org.eclipse.sirius.diagram.DDiagram; -import org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil; +import org.eclipse.sirius.diagram.description.DiagramDescription; import org.eclipse.sirius.diagram.ui.edit.api.part.IDDiagramEditPart; +import org.eclipse.sirius.diagram.ui.tools.api.layout.provider.DefaultLayoutProvider; import org.eclipse.sirius.diagram.ui.tools.api.layout.provider.LayoutProvider; import org.eclipse.sirius.ext.base.Option; import org.eclipse.sirius.viewpoint.DMappingBased; import org.eclipse.sirius.viewpoint.DSemanticDecorator; -import org.eclipse.sirius.viewpoint.DView; import org.eclipse.sirius.viewpoint.description.RepresentationElementMapping; +import org.eclipse.sirius.viewpoint.description.Viewpoint; import org.etsi.mts.tdl.ComponentInstance; import org.etsi.mts.tdl.Connection; import org.etsi.mts.tdl.GateReference; @@ -44,7 +45,7 @@ import org.etsi.mts.tdl.graphical.sirius.part.Util; public class SequenceDiagramFreeformLayoutProvider implements LayoutProvider { - private static final String VIEWPOINT_ID = "org.etsi.mts.tdl"; + public static final String VIEWPOINT_ID = "org.etsi.mts.tdl"; public static final String TEST_DESCRIPTION_DIAGRAM_ID = "TestDescriptionDiagram"; public static final String TIME_LABEL_MAPPING_ID = "timeLabel", @@ -53,24 +54,17 @@ public class SequenceDiagramFreeformLayoutProvider implements LayoutProvider { COMPONENT_INSTANCE_MAPPING_ID = "componentInstance", COMBINED_BEHAVIOUR_MAPPING_ID = "combinedBehaviour", BLOCK_MAPPING_ID = "block"; + + private SequenceFreeformLayoutEditPartProvider layoutProvider = new SequenceFreeformLayoutEditPartProvider(); @Override public boolean provides(IGraphicalEditPart container) { - if (container instanceof IDDiagramEditPart) { - Option<DDiagram> diagram = ((IDDiagramEditPart) container).resolveDDiagram(); - if (diagram.some()) { - DView repContainer = SiriusDiagramUtil.findRepresentationContainer(diagram.get()); -// if (VIEWPOINT_ID.equals(repContainer.getViewpoint().getName()) && -// TEST_DESCRIPTION_DIAGRAM_ID.equals(diagram.get().getDescription().getName())) -// return true; - } - } - return false; + return layoutProvider.provides(container); } @Override public AbstractLayoutEditPartProvider getLayoutNodeProvider(IGraphicalEditPart container) { - return new SequenceFreeformLayoutEditPartProvider(); + return layoutProvider; } @Override @@ -92,12 +86,51 @@ public class SequenceDiagramFreeformLayoutProvider implements LayoutProvider { class SequenceFreeformLayoutEditPartProvider extends TdlAbstractLayoutEditPartProvider { private static final int MARGIN = 20; + + private boolean defaultLayout = false; + + public boolean provides(IGraphicalEditPart container) { + if (defaultLayout) + return false; + if (container instanceof IDDiagramEditPart) { + Option<DDiagram> diagram = ((IDDiagramEditPart) container).resolveDDiagram(); + if (diagram.some()) { + DDiagram d = diagram.get(); + DiagramDescription dDesc = d.getDescription(); + Viewpoint vp = (Viewpoint) dDesc.eContainer(); + if (SequenceDiagramFreeformLayoutProvider.VIEWPOINT_ID.equals(vp.getName()) && + SequenceDiagramFreeformLayoutProvider.TEST_DESCRIPTION_DIAGRAM_ID.equals(dDesc.getName())) + return true; + } + } + return false; + } @Override public Command layoutEditParts(List selectedObjects, IAdaptable layoutHint) { + Command defaultCommand = null; + if (!defaultLayout) { + try { + defaultLayout = true; + + EditPart editPart = (EditPart) selectedObjects.get(0); + while (!(editPart instanceof IDDiagramEditPart)) + editPart = (EditPart) editPart.getParent(); + + DefaultLayoutProvider defaultProvider = new DefaultLayoutProvider(); + defaultCommand = defaultProvider.layoutEditParts((IGraphicalEditPart)editPart, layoutHint); + + } finally { + defaultLayout = false; + } + } + CompoundCommand cc = new CompoundCommand(); + if (defaultCommand != null) + cc.add(defaultCommand); + Map<IGraphicalEditPart, List<Rectangle>> attachmentLocations = new Hashtable<IGraphicalEditPart, List<Rectangle>>(); double scale = 0; @@ -118,8 +151,8 @@ class SequenceFreeformLayoutEditPartProvider extends TdlAbstractLayoutEditPartPr continue; RepresentationElementMapping mapping = ((DMappingBased)dElement).getMapping(); - if (mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_CONSTRAINT_MAPPING_ID) || - mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_LABEL_MAPPING_ID)) { + if (mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_CONSTRAINT_MAPPING_ID) + || mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_LABEL_MAPPING_ID)) { IGraphicalEditPart anchorEditPart = (IGraphicalEditPart) ((ConnectionEditPart) ((GraphicalEditPart) editPart) .getTargetConnections().get(0)).getSource(); @@ -207,7 +240,8 @@ class SequenceFreeformLayoutEditPartProvider extends TdlAbstractLayoutEditPartPr Dimension size = f.getPreferredSize().getCopy(); Rectangle bounds = f.getBounds(); Dimension resizeDelta = size.getExpanded(-bounds.width, -bounds.height); - resizeDelta.width = 0; + resizeDelta.width = 0; + resizeDelta.height = Math.max(resizeDelta.height, 0); resizeDelta.width *= scale; resizeDelta.height *= scale; diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/part/InteractionUseConfiguringEditPart.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/part/InteractionUseConfiguringEditPart.java index 82717e3e06d103aea99c3a8ac04d9d3357f2af97..5b690fa41fda298669bdf6aa2bc442c581c5181d 100644 --- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/part/InteractionUseConfiguringEditPart.java +++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/part/InteractionUseConfiguringEditPart.java @@ -94,8 +94,10 @@ public class InteractionUseConfiguringEditPart extends AbstractNotSelectableShap if (move) { Rectangle rect = new Rectangle(0, y, size.width , size.height); rect.width = width; - f.setBounds(rect); - f.invalidateTree(); + if (!rect.equals(f.getBounds())) { + f.setBounds(rect); + f.invalidateTree(); + } } y += size.height; diff --git a/plugins/org.etsi.mts.tdl.model/model/tdl.ecore b/plugins/org.etsi.mts.tdl.model/model/tdl.ecore index 955229a5aa0dd895321f0e968ce34bb70fa32350..5bdf191c90715419e7401be5bdb78b5feb824952 100644 --- a/plugins/org.etsi.mts.tdl.model/model/tdl.ecore +++ b/plugins/org.etsi.mts.tdl.model/model/tdl.ecore @@ -223,7 +223,7 @@ </eAnnotations> </eStructuralFeatures> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Parameter" abstract="true" eSuperTypes="#//Element"> + <eClassifiers xsi:type="ecore:EClass" name="Parameter" abstract="true" eSuperTypes="#//NamedElement"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataUse.</p>"/> </eAnnotations> @@ -315,13 +315,7 @@ </eAnnotations> </eStructuralFeatures> <eStructuralFeatures xsi:type="ecore:EReference" name="reduction" upperBound="-1" - eType="#//Member"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataUse.</p>"/> - </eAnnotations> - </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="collectionIndex" ordered="false" - upperBound="-1" eType="#//DataUse" containment="true"> + eType="#//MemberReference" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataUse.</p>"/> </eAnnotations> @@ -421,46 +415,6 @@ </eAnnotations> </eStructuralFeatures> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Procedure" eSuperTypes="#//DataType"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false" - lowerBound="1" upperBound="-1" eType="#//ProcedureParameter" containment="true"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - </eStructuralFeatures> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="ProcedureParameter" eSuperTypes="#//Parameter"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//ParameterKind"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - </eStructuralFeatures> - </eClassifiers> - <eClassifiers xsi:type="ecore:EEnum" name="ParameterKind"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - <eLiterals name="IN"/> - <eLiterals name="OUT" value="1"/> - <eLiterals name="EXCEPTION" value="2"/> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="CollectionDataInstance" eSuperTypes="#//DataInstance"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false" - upperBound="-1" eType="#//StaticDataUse" containment="true"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> - </eAnnotations> - </eStructuralFeatures> - </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="VariableUse" eSuperTypes="#//DynamicDataUse"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataUse.</p>"/> @@ -822,8 +776,8 @@ <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//DataUse" - containment="true"> + <eStructuralFeatures xsi:type="ecore:EReference" name="guard" upperBound="-1" + eType="#//LocalExpression" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> @@ -845,11 +799,6 @@ <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="#//ComponentInstance"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> - </eAnnotations> - </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="PeriodicBehaviour" eSuperTypes="#//Behaviour"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> @@ -862,7 +811,7 @@ </eAnnotations> </eStructuralFeatures> <eStructuralFeatures xsi:type="ecore:EReference" name="period" lowerBound="1" - eType="#//DataUse" containment="true"> + upperBound="-1" eType="#//LocalExpression" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> @@ -912,7 +861,7 @@ <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> <eStructuralFeatures xsi:type="ecore:EReference" name="numIteration" lowerBound="1" - eType="#//DataUse" containment="true"> + upperBound="-1" eType="#//LocalExpression" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> @@ -966,7 +915,7 @@ </eAnnotations> </eStructuralFeatures> <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false" - upperBound="-1" eType="#//Variable"> + eType="#//Variable"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> </eAnnotations> @@ -999,11 +948,6 @@ <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> </eAnnotations> </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="#//ComponentInstance"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> - </eAnnotations> - </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//AtomicBehaviour"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> @@ -1113,31 +1057,20 @@ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false" - lowerBound="1" upperBound="-1" eType="#//Target" containment="true"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> - </eAnnotations> - </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false" - lowerBound="1" upperBound="-1" eType="#//DataUse" containment="true"> + <eStructuralFeatures xsi:type="ecore:EReference" name="sourceGate" lowerBound="1" + eType="#//GateReference"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> </eAnnotations> </eStructuralFeatures> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="ProcedureCall" eSuperTypes="#//Interaction"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> - </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EReference" name="procedure" lowerBound="1" - eType="#//Procedure"> + <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false" + lowerBound="1" upperBound="-1" eType="#//Target" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> </eAnnotations> </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1" - eType="#//Target" containment="true"> + <eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false" + lowerBound="1" eType="#//DataUse" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> </eAnnotations> @@ -1153,11 +1086,40 @@ <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> </eAnnotations> </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EReference" name="sourceGate" lowerBound="1" - eType="#//GateReference"> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="PredefinedFunction" eSuperTypes="#//NamedElement"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//DataType"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::AtomicBehaviour.</p>"/> + <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataDefinition.</p>"/> </eAnnotations> </eStructuralFeatures> </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="MemberReference" eSuperTypes="#//Element"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataUse.</p>"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="member" eType="#//Member"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="collectionIndex" eType="#//DataUse" + containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="PredefinedFunctionCall" eSuperTypes="#//DynamicDataUse"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::Data::DataUse.</p>"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1" + eType="#//PredefinedFunction"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="actualParameters" upperBound="-1" + eType="#//DataUse" containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="LocalExpression" eSuperTypes="#//Element"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="<p>From package TestDescriptionLanguage::TDL_MetaModel::TestBehaviour::CombinedBehaviour.</p>"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="expression" lowerBound="1" + eType="#//DataUse" containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="#//ComponentInstance"/> + </eClassifiers> </ecore:EPackage> diff --git a/plugins/org.etsi.mts.tdl.model/model/tdl.genmodel b/plugins/org.etsi.mts.tdl.model/model/tdl.genmodel index c60a0e2f00ac1a11909981a600ee6a4af3b3b28b..4430a609a69d596c94ee8afd94a4b03c9194d35a 100644 --- a/plugins/org.etsi.mts.tdl.model/model/tdl.genmodel +++ b/plugins/org.etsi.mts.tdl.model/model/tdl.genmodel @@ -122,11 +122,6 @@ <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//UnassignedMemberTreatment/AnyValue"/> <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//UnassignedMemberTreatment/AnyValueOrOmit"/> </genEnums> - <genEnums typeSafeEnumCompatible="false" ecoreEnum="tdl.ecore#//ParameterKind"> - <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//ParameterKind/IN"/> - <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//ParameterKind/OUT"/> - <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//ParameterKind/EXCEPTION"/> - </genEnums> <genEnums typeSafeEnumCompatible="false" ecoreEnum="tdl.ecore#//ComponentInstanceRole"> <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//ComponentInstanceRole/SUT"/> <genEnumLiterals ecoreEnumLiteral="tdl.ecore#//ComponentInstanceRole/Tester"/> @@ -204,7 +199,6 @@ <genClasses image="false" ecoreClass="tdl.ecore#//DataUse"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//DataUse/argument"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//DataUse/reduction"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//DataUse/collectionIndex"/> </genClasses> <genClasses ecoreClass="tdl.ecore#//ParameterBinding"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//ParameterBinding/dataUse"/> @@ -228,15 +222,6 @@ <genClasses ecoreClass="tdl.ecore#//FunctionCall"> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//FunctionCall/function"/> </genClasses> - <genClasses ecoreClass="tdl.ecore#//Procedure"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//Procedure/parameter"/> - </genClasses> - <genClasses ecoreClass="tdl.ecore#//ProcedureParameter"> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute tdl.ecore#//ProcedureParameter/kind"/> - </genClasses> - <genClasses ecoreClass="tdl.ecore#//CollectionDataInstance"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//CollectionDataInstance/member"/> - </genClasses> <genClasses ecoreClass="tdl.ecore#//VariableUse"> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//VariableUse/componentInstance"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//VariableUse/variable"/> @@ -328,7 +313,6 @@ <genClasses image="false" ecoreClass="tdl.ecore#//CombinedBehaviour"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//CombinedBehaviour/periodic"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//CombinedBehaviour/exceptional"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//CombinedBehaviour/scope"/> </genClasses> <genClasses ecoreClass="tdl.ecore#//PeriodicBehaviour"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//PeriodicBehaviour/block"/> @@ -364,7 +348,6 @@ <genClasses ecoreClass="tdl.ecore#//Assertion"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//Assertion/otherwise"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//Assertion/condition"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//Assertion/scope"/> </genClasses> <genClasses ecoreClass="tdl.ecore#//Stop"/> <genClasses ecoreClass="tdl.ecore#//Break"/> @@ -392,16 +375,27 @@ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//ComponentInstanceBinding/actualComponent"/> </genClasses> <genClasses ecoreClass="tdl.ecore#//Interaction"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//Interaction/sourceGate"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//Interaction/target"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//Interaction/argument"/> </genClasses> - <genClasses ecoreClass="tdl.ecore#//ProcedureCall"> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//ProcedureCall/procedure"/> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//ProcedureCall/source"/> - </genClasses> <genClasses ecoreClass="tdl.ecore#//Message"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute tdl.ecore#//Message/isTrigger"/> - <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//Message/sourceGate"/> + </genClasses> + <genClasses ecoreClass="tdl.ecore#//PredefinedFunction"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//PredefinedFunction/returnType"/> + </genClasses> + <genClasses ecoreClass="tdl.ecore#//MemberReference"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//MemberReference/member"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//MemberReference/collectionIndex"/> + </genClasses> + <genClasses ecoreClass="tdl.ecore#//PredefinedFunctionCall"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//PredefinedFunctionCall/function"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//PredefinedFunctionCall/actualParameters"/> + </genClasses> + <genClasses ecoreClass="tdl.ecore#//LocalExpression"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//LocalExpression/expression"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//LocalExpression/scope"/> </genClasses> </genPackages> </genmodel:GenModel>