This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
v020:layout [2015/11/05 15:29] deva [Compound layout constraints for nodes] |
v020:layout [2015/11/07 13:39] (current) gregobalu [Constraints for links] |
||
---|---|---|---|
Line 27: | Line 27: | ||
* ''@Left(val = A.class, from = B.class)'' : box **A** is //west// from **B** and is right next to it. | * ''@Left(val = A.class, from = B.class)'' : box **A** is //west// from **B** and is right next to it. | ||
+ | Example: Model contains these classes: **A**, **B** and **C**. | ||
+ | {{ :v020:examplesimplediagram.png?200|}} | ||
+ | <code> | ||
+ | class MyDiagram extends Diagram { | ||
+ | @North(val = A.class, from = B.class) | ||
+ | @Below(val = A.class, from = C.class) | ||
+ | @West(val = C.class, from = B.class) | ||
+ | class MyLayout extends Layout {} | ||
+ | } | ||
+ | </code> | ||
===== Compound layout constraints for nodes ===== | ===== Compound layout constraints for nodes ===== | ||
Line 39: | Line 49: | ||
* ''@LeftMost(A.class)'' : Box **A** is //west// from every other box. | * ''@LeftMost(A.class)'' : Box **A** is //west// from every other box. | ||
+ | Example: Model contains these classes: **C**, **E**, **D**, **O**, **R**, **S1** and **S2**. | ||
+ | <code> | ||
+ | class MyDiagram extends Diagram { | ||
+ | @Row({R.class, E.class, D.class}) | ||
+ | @Column({C.class, R.class, O.class, S1.class, S2.class}) | ||
+ | class MyLayout extends Layout {} | ||
+ | } | ||
+ | </code> | ||
===== Constraints for links ===== | ===== Constraints for links ===== | ||
Line 47: | Line 65: | ||
* ''@North(val = L.class, from = A.class, end = LinkEnd.End)'' : reflexive link **L**'s ending point will connect to box **A** on **A**'s northern side. | * ''@North(val = L.class, from = A.class, end = LinkEnd.End)'' : reflexive link **L**'s ending point will connect to box **A** on **A**'s northern side. | ||
* Can be used similarly with ''@East'', ''@South'' and ''@West''. | * Can be used similarly with ''@East'', ''@South'' and ''@West''. | ||
- | * ''@Priority(val = L.class, prior = 50)'' : gives link **L** a priority value of **50**. Higher priority means shorter route and less turns. | + | * ''@Priority(val = L.class, prior = 50)'' : gives link **L** a priority value of **50**. Higher priority means shorter route and less turns. |
Example: Model contains these classes: **A** and **B**. Model contains these links: **L** (A - B) and **R** (A -A). | Example: Model contains these classes: **A** and **B**. Model contains these links: **L** (A - B) and **R** (A -A). | ||
+ | {{ :v020:examplelinkdiagram.png?150|}} | ||
<code> | <code> | ||
class MyDiagram extends Diagram { | class MyDiagram extends Diagram { | ||
- | |||
@North(val = L.class, from = A.class) | @North(val = L.class, from = A.class) | ||
@East(val = L.class, from = B.class) | @East(val = L.class, from = B.class) | ||
@Above(val = A.class, from = B.class) | @Above(val = A.class, from = B.class) | ||
- | @West(val = R.class, from = A.class, LinkEnd.Start) | + | @West(val = R.class, from = A.class, end = LinkEnd.Start) |
- | @South(val = R.class, from = A.class, LinkEnd.End) | + | @South(val = R.class, from = A.class, end = LinkEnd.End) |
class MyLayout extends Layout {} | class MyLayout extends Layout {} | ||
} | } | ||
</code> | </code> | ||
- | TODO:IMAGE_HERE | ||
- | |||
===== Groups ===== | ===== Groups ===== | ||
- | In this section **A**, **B**, **C** are classes already defined in a txtUML model and **L** and **J** are associations with an endpoint at class **A**. Relative layout for the associations (links) and classes (boxes) can be given as presented. | + | In this section **A**, **B**, **C** are classes already defined in a txtUML model and **L** and **J** are associations with an endpoint at class **A**. |
- | There's two way to define a group. The first method is by inheriting a class from either ''NodeGroup'' or ''LinkGroup''. The elements of the group can be specified with the ''@Contains'' annotation. A group can contain model elements of the corresponding type or other groups containing such type of elements. In the latter case, the contained groups are 'flattened', which means that only members of the contained groups are added to the given group instead of adding the contained group objects themselves. | + | A group can be defined by defining a class inheriting either from ''NodeGroup'' or from ''LinkGroup''. The elements of the group can be specified with the ''@Contains'' annotation. A group can contain model elements of the corresponding type or other groups containing elements of the corresponding type. |
<code> | <code> | ||
Line 79: | Line 95: | ||
</code> | </code> | ||
- | If the given group is a ''NodeGroup'', the annotation ''@Alignment'' can be used to set an alignment on its elements, using items of enum //hu.elte.txtuml.layout.lang.AlignmentType//, i.e. ''TopToBottom'', ''BottomToTop'', ''RightToLeft'' or ''LeftToRight''. | + | If the given group is a ''NodeGroup'', the annotation ''@Alignment'' can be used to set the alignment of its elements, using items of enum //hu.elte.txtuml.layout.lang.AlignmentType//, i.e. ''TopToBottom'', ''BottomToTop'', ''RightToLeft'' or ''LeftToRight''. |
<code> | <code> | ||
Line 87: | Line 103: | ||
</code> | </code> | ||
- | With these groups we can use the previously mentioned statements. | + | The previously mentioned statements can be used with these groups as parameters as well. |
* ''@North(val = {A.class, B.class}, from = C.class)'' : both boxes **A** and **B** are north from **C**. The layout between **A** and **B** is not defined. | * ''@North(val = {A.class, B.class}, from = C.class)'' : both boxes **A** and **B** are north from **C**. The layout between **A** and **B** is not defined. | ||
Line 111: | Line 127: | ||
//... | //... | ||
</code> | </code> | ||
- | TODO:IMAGE_HERE | ||
===== Other ===== | ===== Other ===== | ||
Line 127: | Line 142: | ||
} | } | ||
</code> | </code> | ||
- | TODO:IMAGE_HERE(B missing) | ||
===== Contradictions and other errors ===== | ===== Contradictions and other errors ===== |