Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
K
kernel
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
af3
kernel
Commits
63986b6b
Commit
63986b6b
authored
7 years ago
by
Simon Barner
Browse files
Options
Downloads
Patches
Plain Diff
- Code style (no functional change)
refs 2898
parent
1bc5e88f
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/layout/auto/KielerAutoLayouter.java
+133
-134
133 additions, 134 deletions
...rtiss/tooling/base/ui/layout/auto/KielerAutoLayouter.java
with
133 additions
and
134 deletions
org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/layout/auto/KielerAutoLayouter.java
+
133
−
134
View file @
63986b6b
...
@@ -82,7 +82,7 @@ import de.cau.cs.kieler.klay.layered.properties.Properties;
...
@@ -82,7 +82,7 @@ import de.cau.cs.kieler.klay.layered.properties.Properties;
* @author offtermatt, barner
* @author offtermatt, barner
* @author $Author$
* @author $Author$
* @version $Rev$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash:
8BE55A0C36B936EF103CD3350B857042
* @ConQAT.Rating YELLOW Hash:
36F683174E3AD8ADC2DDDC27D7C75183
*/
*/
public
class
KielerAutoLayouter
implements
IAutoLayouter
{
public
class
KielerAutoLayouter
implements
IAutoLayouter
{
...
@@ -113,38 +113,40 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -113,38 +113,40 @@ public class KielerAutoLayouter implements IAutoLayouter {
boolean
avUpdateEnabled
=
AnnotationViewPartBase
.
isUpdateEnabled
();
boolean
avUpdateEnabled
=
AnnotationViewPartBase
.
isUpdateEnabled
();
AnnotationViewPartBase
.
setUpdateEnabled
(
false
);
AnnotationViewPartBase
.
setUpdateEnabled
(
false
);
KNode
paren
tNode
=
createKIELERGraph
(
hierarchicElement
);
KNode
roo
tNode
=
createKIELERGraph
(
hierarchicElement
);
KShapeLayout
par
=
parentNode
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
rootNodeLayout
=
rootNode
.
getData
(
KShapeLayout
.
class
);
par
.
setProperty
(
LayoutOptions
.
DIRECTION
,
Direction
.
RIGHT
);
rootNodeLayout
.
setProperty
(
LayoutOptions
.
DIRECTION
,
Direction
.
RIGHT
);
par
.
setProperty
(
LayoutOptions
.
INTERACTIVE
,
true
);
rootNodeLayout
.
setProperty
(
LayoutOptions
.
INTERACTIVE
,
true
);
par
.
setProperty
(
Properties
.
FEEDBACK_EDGES
,
true
);
rootNodeLayout
.
setProperty
(
Properties
.
FEEDBACK_EDGES
,
true
);
par
.
setProperty
(
Properties
.
INTERACTIVE_REFERENCE_POINT
,
InteractiveReferencePoint
.
TOP_LEFT
);
rootNodeLayout
.
setProperty
(
Properties
.
INTERACTIVE_REFERENCE_POINT
,
InteractiveReferencePoint
.
TOP_LEFT
);
AbstractLayoutProvider
layoutProvider
=
new
LayeredLayoutProvider
();
AbstractLayoutProvider
layoutProvider
=
new
LayeredLayoutProvider
();
IKielerProgressMonitor
progressMonitor
=
new
BasicProgressMonitor
();
IKielerProgressMonitor
progressMonitor
=
new
BasicProgressMonitor
();
layoutProvider
.
doLayout
(
paren
tNode
,
progressMonitor
);
layoutProvider
.
doLayout
(
roo
tNode
,
progressMonitor
);
applyLayout
(
paren
tNode
,
hierarchicElement
);
applyLayout
(
roo
tNode
,
hierarchicElement
);
AnnotationViewPartBase
.
setUpdateEnabled
(
avUpdateEnabled
);
AnnotationViewPartBase
.
setUpdateEnabled
(
avUpdateEnabled
);
}
}
/**
/**
* Rounds a given {@code float} value and decreases the value until it is a multiple of the grid
* Truncates a given {@code float} value and decreases the value until it is a multiple of the
* grid
* size.
* size.
*
*
* @param f
* @param f
* {@code float} to process
* {@code float} to process
*
*
* @return Given float value,
round
ed and aligned to the underlying grid.
* @return Given float value,
truncat
ed and aligned to the underlying grid.
*/
*/
private
int
round
Snap2Grid
(
float
f
)
{
private
int
truncate
Snap2Grid
(
float
f
)
{
return
round
Snap2Grid
(
f
,
false
);
return
truncate
Snap2Grid
(
f
,
false
);
}
}
/**
/**
*
Round
s a given {@code float} value and aligns it the grid size.
*
Truncate
s a given {@code float} value and aligns it the grid size.
*
*
* @param f
* @param f
* {@code float} to process
* {@code float} to process
...
@@ -152,9 +154,9 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -152,9 +154,9 @@ public class KielerAutoLayouter implements IAutoLayouter {
* @param enlarge
* @param enlarge
* Whether to enlarge the given value while aligning to the grid.
* Whether to enlarge the given value while aligning to the grid.
*
*
* @return Given float value,
round
ed and aligned to the underlying grid.
* @return Given float value,
truncat
ed and aligned to the underlying grid.
*/
*/
private
int
round
Snap2Grid
(
float
f
,
boolean
enlarge
)
{
private
int
truncate
Snap2Grid
(
float
f
,
boolean
enlarge
)
{
int
rval
=
(
int
)
f
;
int
rval
=
(
int
)
f
;
final
int
deviationFromGrid
=
rval
%
DEFAULT_GRID_SIZE
;
final
int
deviationFromGrid
=
rval
%
DEFAULT_GRID_SIZE
;
...
@@ -181,30 +183,30 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -181,30 +183,30 @@ public class KielerAutoLayouter implements IAutoLayouter {
topLevelElement
.
runAsCommand
(()
->
{
topLevelElement
.
runAsCommand
(()
->
{
filterBendPoints
(
hierarchicElement
);
filterBendPoints
(
hierarchicElement
);
for
(
IHierarchicElement
curElement
:
hierarchicElement
.
getContainedElements
())
{
for
(
IHierarchicElement
element
:
hierarchicElement
.
getContainedElements
())
{
KNode
curNode
=
modelElementsToKNodes
.
get
(
curElement
);
KNode
kNode
=
modelElementsToKNodes
.
get
(
element
);
KShapeLayout
curLayout
=
curNode
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
kNodeLayout
=
kNode
.
getData
(
KShapeLayout
.
class
);
LayoutDataUtils
.
setNodeLayoutData
((
ILayoutedModelElement
)
curElement
,
LayoutDataUtils
.
setNodeLayoutData
((
ILayoutedModelElement
)
element
,
roundSnap2Grid
(
curLayout
.
getXpos
()),
roundSnap2Grid
(
curLayout
.
getYpos
()),
truncateSnap2Grid
(
kNodeLayout
.
getXpos
()),
roundSnap2Grid
(
curLayout
.
getWidth
(),
true
),
truncateSnap2Grid
(
kNodeLayout
.
getYpos
()),
roundSnap2Grid
(
curLayout
.
getHeight
(),
true
));
truncateSnap2Grid
(
kNodeLayout
.
getWidth
(),
true
),
truncateSnap2Grid
(
kNodeLayout
.
getHeight
(),
true
));
}
}
for
(
Entry
<
IConnection
,
KEdge
>
curEntry
:
connectionsToKEdges
)
{
for
(
Entry
<
IConnection
,
KEdge
>
entry
:
connectionsToKEdges
)
{
KEdge
curEdge
=
curEntry
.
getValue
();
KEdge
kEdge
=
entry
.
getValue
();
IConnection
curConnection
=
curEntry
.
getKey
();
IConnection
connection
=
entry
.
getKey
();
KEdgeLayout
curLayout
=
curEdge
.
getData
(
KEdgeLayout
.
class
);
KEdgeLayout
kEdgeLayout
=
kEdge
.
getData
(
KEdgeLayout
.
class
);
for
(
KPoint
k
:
curLayout
.
getBendPoints
())
{
for
(
KPoint
kPoint
:
kEdgeLayout
.
getBendPoints
())
{
LayoutDataUIUtils
.
addBendPointToConnection
(
LayoutDataUIUtils
.
addBendPointToConnection
((
ILayoutedModelElement
)
connection
,
(
ILayoutedModelElement
)
curConnection
,
roundSnap2Grid
(
k
.
getX
()),
truncateSnap2Grid
(
kPoint
.
getX
()),
truncateSnap2Grid
(
kPoint
.
getY
()));
roundSnap2Grid
(
k
.
getY
()));
}
}
}
}
setPositionsFor
P
or
t
s
(
outboundConnectorsToKPorts
);
setPositionsFor
Connect
ors
(
outboundConnectorsToKPorts
);
setPositionsFor
P
or
t
s
(
inboundConnectorsToKPorts
);
setPositionsFor
Connect
ors
(
inboundConnectorsToKPorts
);
setPositionsForGlobal
P
or
t
s
(
globalInboundConnectorsToKPorts
);
setPositionsForGlobal
Connect
ors
(
globalInboundConnectorsToKPorts
);
setPositionsForGlobal
P
or
t
s
(
globalOutboundConnectorsToKPorts
);
setPositionsForGlobal
Connect
ors
(
globalOutboundConnectorsToKPorts
);
});
});
}
}
...
@@ -213,17 +215,17 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -213,17 +215,17 @@ public class KielerAutoLayouter implements IAutoLayouter {
* {@link IConnector}s. Global means in this case that the {@link IConnector}s do not have a
* {@link IConnector}s. Global means in this case that the {@link IConnector}s do not have a
* corresponding node, i.e. because they contain connections to a higher-level model.
* corresponding node, i.e. because they contain connections to a higher-level model.
*
*
* @param global
P
or
t
s
* @param global
Connect
ors
* A bijection from {@link IConnector}s to {@link KPort}s
* A bijection from {@link IConnector}s to {@link KPort}s
*/
*/
private
void
setPositionsForGlobal
P
or
t
s
(
EMap
<
IConnector
,
KPort
>
global
P
or
t
s
)
{
private
void
setPositionsForGlobal
Connect
ors
(
EMap
<
IConnector
,
KPort
>
global
Connect
ors
)
{
for
(
Entry
<
IConnector
,
KPort
>
i
:
global
P
or
t
s
)
{
for
(
Entry
<
IConnector
,
KPort
>
entry
:
global
Connect
ors
)
{
IConnector
p
or
t
=
i
.
getKey
();
IConnector
connect
or
=
entry
.
getKey
();
KPort
p
=
i
.
getValue
();
KPort
kPort
=
entry
.
getValue
();
KNode
temp
=
p
.
getNode
();
KNode
temp
Node
=
kPort
.
getNode
();
KShapeLayout
lay
=
temp
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
kLayout
=
temp
Node
.
getData
(
KShapeLayout
.
class
);
setNodePosition
((
ILayoutedModelElement
)
p
or
t
,
round
Snap2Grid
(
lay
.
getXpos
()),
setNodePosition
((
ILayoutedModelElement
)
connect
or
,
truncate
Snap2Grid
(
kLayout
.
getXpos
()),
round
Snap2Grid
(
lay
.
getYpos
()));
truncate
Snap2Grid
(
kLayout
.
getYpos
()));
}
}
}
}
...
@@ -232,15 +234,15 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -232,15 +234,15 @@ public class KielerAutoLayouter implements IAutoLayouter {
* {@link IConnector}s must have corresponding nodes, i.e. they can not contain an
* {@link IConnector}s must have corresponding nodes, i.e. they can not contain an
* {@link IConnection} to a higher-level model.
* {@link IConnection} to a higher-level model.
*
*
* @param
p
or
t
s
* @param
connect
ors
* A bijection from {@link IConnector}s to {@link KPort}s.
* A bijection from {@link IConnector}s to {@link KPort}s.
*/
*/
private
void
setPositionsFor
P
or
t
s
(
EMap
<
IConnector
,
KPort
>
p
or
t
s
)
{
private
void
setPositionsFor
Connect
ors
(
EMap
<
IConnector
,
KPort
>
connect
ors
)
{
for
(
Entry
<
IConnector
,
KPort
>
ic
:
port
s
)
{
for
(
Entry
<
IConnector
,
KPort
>
entry
:
connector
s
)
{
KPort
k
p
=
ic
.
getValue
();
KPort
k
Port
=
entry
.
getValue
();
IConnector
port
=
ic
.
getKey
();
IConnector
connector
=
entry
.
getKey
();
KShapeLayout
port
Layout
=
k
p
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
k
Layout
=
k
Port
.
getData
(
KShapeLayout
.
class
);
PortSide
side
=
port
Layout
.
getProperty
(
LayoutOptions
.
PORT_SIDE
);
PortSide
side
=
k
Layout
.
getProperty
(
LayoutOptions
.
PORT_SIDE
);
EOrientation
orientation
=
null
;
EOrientation
orientation
=
null
;
switch
(
side
)
{
switch
(
side
)
{
case
NORTH:
case
NORTH:
...
@@ -257,8 +259,8 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -257,8 +259,8 @@ public class KielerAutoLayouter implements IAutoLayouter {
break
;
break
;
}
}
setStickyConnectorLayoutData
((
ILayoutedModelElement
)
p
or
t
,
orientation
,
setStickyConnectorLayoutData
((
ILayoutedModelElement
)
connect
or
,
orientation
,
round
Snap2Grid
((
port
Layout
.
getYpos
())));
truncate
Snap2Grid
((
k
Layout
.
getYpos
())));
}
}
}
}
...
@@ -268,12 +270,10 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -268,12 +270,10 @@ public class KielerAutoLayouter implements IAutoLayouter {
* @param hierarchicElement
* @param hierarchicElement
*/
*/
private
void
filterBendPoints
(
IHierarchicElement
hierarchicElement
)
{
private
void
filterBendPoints
(
IHierarchicElement
hierarchicElement
)
{
EList
<
IConnection
>
clears
=
hierarchicElement
.
getConnections
();
for
(
IConnection
connection
:
hierarchicElement
.
getConnections
())
{
for
(
IConnection
c
:
clears
)
{
for
(
ILayoutData
layoutData
:
((
ILayoutedModelElement
)
connection
).
getLayoutData
())
{
EList
<
ILayoutData
>
l
=
((
ILayoutedModelElement
)
c
).
getLayoutData
();
if
(
layoutData
instanceof
Points
||
layoutData
instanceof
PointsImpl
)
{
for
(
ILayoutData
i
:
l
)
{
((
Points
)
layoutData
).
getPoints
().
clear
();
if
(
i
instanceof
Points
||
i
instanceof
PointsImpl
)
{
((
Points
)
i
).
getPoints
().
clear
();
}
}
}
}
}
}
...
@@ -291,7 +291,7 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -291,7 +291,7 @@ public class KielerAutoLayouter implements IAutoLayouter {
*/
*/
private
KNode
createKIELERGraph
(
IHierarchicElement
hierarchicElement
)
{
private
KNode
createKIELERGraph
(
IHierarchicElement
hierarchicElement
)
{
KNode
paren
tNode
=
KimlUtil
.
createInitializedNode
();
KNode
roo
tNode
=
KimlUtil
.
createInitializedNode
();
modelElementsToKNodes
=
new
BasicEMap
<
IHierarchicElement
,
KNode
>();
modelElementsToKNodes
=
new
BasicEMap
<
IHierarchicElement
,
KNode
>();
outboundConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
outboundConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
...
@@ -299,98 +299,97 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -299,98 +299,97 @@ public class KielerAutoLayouter implements IAutoLayouter {
connectionsToKEdges
=
new
BasicEMap
<
IConnection
,
KEdge
>();
connectionsToKEdges
=
new
BasicEMap
<
IConnection
,
KEdge
>();
undirectedConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
undirectedConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
//
c
reate nodes
//
C
reate nodes
for
(
IHierarchicElement
cur
Element
:
hierarchicElement
.
getContainedElements
())
{
for
(
IHierarchicElement
cur
rentChild
:
hierarchicElement
.
getContainedElements
())
{
if
(!(
cur
Element
instanceof
ILayoutedModelElement
))
{
if
(!(
cur
rentChild
instanceof
ILayoutedModelElement
))
{
continue
;
continue
;
}
}
KNode
curK
Node
=
KimlUtil
.
createInitializedNode
();
KNode
k
Node
=
KimlUtil
.
createInitializedNode
();
KShapeLayout
cur
Layout
=
curK
Node
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
kNode
Layout
=
k
Node
.
getData
(
KShapeLayout
.
class
);
EList
<
IConnector
>
input
P
or
t
s
=
new
BasicEList
<
IConnector
>();
EList
<
IConnector
>
input
Connect
ors
=
new
BasicEList
<
IConnector
>();
EList
<
IConnector
>
output
P
or
t
s
=
new
BasicEList
<
IConnector
>();
EList
<
IConnector
>
output
Connect
ors
=
new
BasicEList
<
IConnector
>();
EList
<
IConnector
>
genericP
or
t
s
=
new
BasicEList
<
IConnector
>();
EList
<
IConnector
>
undirectedConnect
ors
=
new
BasicEList
<
IConnector
>();
EList
<
IConnector
>
ports
=
curElement
.
getConnectors
();
for
(
IConnector
connector
:
currentChild
.
getConnectors
())
{
for
(
IConnector
curConnector
:
ports
)
{
if
(
connector
instanceof
EntryConnectorBase
)
{
if
(
curConnector
instanceof
EntryConnectorBase
)
{
inputConnectors
.
add
(
connector
);
inputPorts
.
add
(
curConnector
);
}
else
if
(
connector
instanceof
ExitConnectorBase
)
{
}
else
if
(
curConnector
instanceof
ExitConnectorBase
)
{
outputConnectors
.
add
(
connector
);
outputPorts
.
add
(
curConnector
);
}
else
{
}
else
{
output
Port
s
.
add
(
c
urC
onnector
);
output
Connector
s
.
add
(
connector
);
genericP
or
t
s
.
add
(
c
urC
onnector
);
undirectedConnect
ors
.
add
(
connector
);
}
}
}
}
Dimension
dimension
=
getNodeSize
((
ILayoutedModelElement
)
curElement
);
// Adjust size of node to number of connectors
Dimension
dimension
=
getNodeSize
((
ILayoutedModelElement
)
currentChild
);
int
portNmbr
=
Math
.
max
(
input
P
or
t
s
.
size
(),
output
P
or
t
s
.
size
());
int
numConnectors
=
Math
.
max
(
input
Connect
ors
.
size
(),
output
Connect
ors
.
size
());
cur
Layout
.
setHeight
(
Math
.
max
((
1
+
2
*
portNmbr
)
*
DEFAULT_CONNECTOR_SIZE
,
kNode
Layout
.
setHeight
(
Math
.
max
((
1
+
2
*
numConnectors
)
*
DEFAULT_CONNECTOR_SIZE
,
round
Snap2Grid
(
dimension
.
getHeight
(),
true
)));
truncate
Snap2Grid
(
dimension
.
getHeight
(),
true
)));
cur
Layout
.
setWidth
(
Math
.
max
(
DEFAULT_SHAPE_MINIMUM_HEIGHT
,
kNode
Layout
.
setWidth
(
Math
.
max
(
DEFAULT_SHAPE_MINIMUM_HEIGHT
,
round
Snap2Grid
(
dimension
.
getWidth
(),
true
)));
truncate
Snap2Grid
(
dimension
.
getWidth
(),
true
)));
curK
Node
.
setParent
(
paren
tNode
);
k
Node
.
setParent
(
roo
tNode
);
modelElementsToKNodes
.
put
(
cur
Element
,
curK
Node
);
modelElementsToKNodes
.
put
(
cur
rentChild
,
k
Node
);
for
(
IConnector
c
urPort
:
output
P
or
t
s
)
{
for
(
IConnector
c
onnector
:
output
Connect
ors
)
{
KPort
k
=
createKPortFromIConnector
(
c
urP
or
t
,
curK
Node
,
outboundConnectorsToKPorts
);
KPort
k
=
createKPortFromIConnector
(
c
onnect
or
,
k
Node
,
outboundConnectorsToKPorts
);
if
(
genericP
or
t
s
.
contains
(
c
urPort
))
{
if
(
undirectedConnect
ors
.
contains
(
c
onnector
))
{
undirectedConnectorsToKPorts
.
put
(
c
urPort
,
k
);
undirectedConnectorsToKPorts
.
put
(
c
onnector
,
k
);
}
}
}
}
for
(
IConnector
c
urPort
:
input
P
or
t
s
)
{
for
(
IConnector
c
onnector
:
input
Connect
ors
)
{
createKPortFromIConnector
(
c
urP
or
t
,
curK
Node
,
inboundConnectorsToKPorts
);
createKPortFromIConnector
(
c
onnect
or
,
k
Node
,
inboundConnectorsToKPorts
);
}
}
}
}
//
c
reate virtual nodes for global ports
//
C
reate virtual nodes for global ports
globalInboundConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
globalInboundConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
globalOutboundConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
globalOutboundConnectorsToKPorts
=
new
BasicEMap
<
IConnector
,
KPort
>();
for
(
IConnector
c
urPort
:
hierarchicElement
.
getConnectors
())
{
for
(
IConnector
c
onnector
:
hierarchicElement
.
getConnectors
())
{
KNode
v
irtual
=
KimlUtil
.
createInitializedNode
();
KNode
kNodeV
irtual
=
KimlUtil
.
createInitializedNode
();
KShapeLayout
v
irtualLayout
=
v
irtual
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
kNodeV
irtualLayout
=
kNodeV
irtual
.
getData
(
KShapeLayout
.
class
);
v
irtualLayout
.
setHeight
(
DEFAULT_CONNECTOR_SIZE
);
kNodeV
irtualLayout
.
setHeight
(
DEFAULT_CONNECTOR_SIZE
);
v
irtualLayout
.
setWidth
(
2
*
DEFAULT_CONNECTOR_SIZE
);
kNodeV
irtualLayout
.
setWidth
(
2
*
DEFAULT_CONNECTOR_SIZE
);
v
irtual
.
setParent
(
paren
tNode
);
kNodeV
irtual
.
setParent
(
roo
tNode
);
KPort
k
=
KimlUtil
.
createInitializedPort
();
KPort
k
Port
=
KimlUtil
.
createInitializedPort
();
k
.
setNode
(
v
irtual
);
k
Port
.
setNode
(
kNodeV
irtual
);
if
(
c
urPort
instanceof
ExitConnectorBase
)
{
if
(
c
onnector
instanceof
ExitConnectorBase
)
{
globalOutboundConnectorsToKPorts
.
put
(
c
urPort
,
k
);
globalOutboundConnectorsToKPorts
.
put
(
c
onnector
,
kPort
);
}
else
{
}
else
{
globalInboundConnectorsToKPorts
.
put
(
c
urPort
,
k
);
globalInboundConnectorsToKPorts
.
put
(
c
onnector
,
kPort
);
outboundConnectorsToKPorts
.
put
(
c
urPort
,
k
);
outboundConnectorsToKPorts
.
put
(
c
onnector
,
kPort
);
}
}
}
}
//
c
reate edges
//
C
reate edges
for
(
Entry
<
IConnector
,
KPort
>
out
:
outboundConnectorsToKPorts
)
{
for
(
Entry
<
IConnector
,
KPort
>
entry
:
outboundConnectorsToKPorts
)
{
for
(
IConnection
ic
:
out
.
getKey
().
getOutgoing
())
{
for
(
IConnection
connection
:
entry
.
getKey
().
getOutgoing
())
{
KEdge
cur
Edge
=
KimlUtil
.
createInitializedEdge
();
KEdge
k
Edge
=
KimlUtil
.
createInitializedEdge
();
KPort
s
ource
p
ort
=
out
.
getValue
();
KPort
kS
ource
P
ort
=
entry
.
getValue
();
cur
Edge
.
setSource
(
s
ource
p
ort
.
getNode
());
k
Edge
.
setSource
(
kS
ource
P
ort
.
getNode
());
cur
Edge
.
setSourcePort
(
s
ource
p
ort
);
k
Edge
.
setSourcePort
(
kS
ource
P
ort
);
s
ource
p
ort
.
getEdges
().
add
(
cur
Edge
);
kS
ource
P
ort
.
getEdges
().
add
(
k
Edge
);
KPort
t
arget
p
ort
=
inboundConnectorsToKPorts
.
get
(
i
c
.
getTarget
());
KPort
kT
arget
P
ort
=
inboundConnectorsToKPorts
.
get
(
c
onnection
.
getTarget
());
if
(
t
arget
p
ort
==
null
)
{
if
(
kT
arget
P
ort
==
null
)
{
t
arget
p
ort
=
globalOutboundConnectorsToKPorts
.
get
(
i
c
.
getTarget
());
kT
arget
P
ort
=
globalOutboundConnectorsToKPorts
.
get
(
c
onnection
.
getTarget
());
}
}
if
(
t
arget
p
ort
==
null
)
{
if
(
kT
arget
P
ort
==
null
)
{
t
arget
p
ort
=
undirectedConnectorsToKPorts
.
get
(
i
c
.
getTarget
());
kT
arget
P
ort
=
undirectedConnectorsToKPorts
.
get
(
c
onnection
.
getTarget
());
}
}
cur
Edge
.
setTargetPort
(
t
arget
p
ort
);
k
Edge
.
setTargetPort
(
kT
arget
P
ort
);
cur
Edge
.
setTarget
(
t
arget
p
ort
.
getNode
());
k
Edge
.
setTarget
(
kT
arget
P
ort
.
getNode
());
t
arget
p
ort
.
getEdges
().
add
(
cur
Edge
);
kT
arget
P
ort
.
getEdges
().
add
(
k
Edge
);
connectionsToKEdges
.
put
(
ic
,
cur
Edge
);
connectionsToKEdges
.
put
(
connection
,
k
Edge
);
}
}
}
}
return
paren
tNode
;
return
roo
tNode
;
}
}
/**
/**
...
@@ -400,21 +399,21 @@ public class KielerAutoLayouter implements IAutoLayouter {
...
@@ -400,21 +399,21 @@ public class KielerAutoLayouter implements IAutoLayouter {
*
*
* @param connector
* @param connector
* {@link IConnector} to be converted to {@link KPort}
* {@link IConnector} to be converted to {@link KPort}
* @param k
n
ode
* @param k
N
ode
* {@link KNode} that will contain the newly created {@link KPort}
* {@link KNode} that will contain the newly created {@link KPort}
* @param connectorsToKPorts
* @param connectorsToKPorts
* Map between {@link IConnector}s and {@link KPort}s.
* Map between {@link IConnector}s and {@link KPort}s.
*
*
* @return {@link KNode} represeting the given {@link IConnector}.
* @return {@link KNode} represe
n
ting the given {@link IConnector}.
*/
*/
private
KPort
createKPortFromIConnector
(
IConnector
connector
,
KNode
k
n
ode
,
private
KPort
createKPortFromIConnector
(
IConnector
connector
,
KNode
k
N
ode
,
EMap
<
IConnector
,
KPort
>
connectorsToKPorts
)
{
EMap
<
IConnector
,
KPort
>
connectorsToKPorts
)
{
KPort
k
=
KimlUtil
.
createInitializedPort
();
KPort
k
Port
=
KimlUtil
.
createInitializedPort
();
k
.
setNode
(
k
n
ode
);
k
Port
.
setNode
(
k
N
ode
);
KShapeLayout
p
ortLayout
=
k
.
getData
(
KShapeLayout
.
class
);
KShapeLayout
kP
ortLayout
=
k
Port
.
getData
(
KShapeLayout
.
class
);
p
ortLayout
.
setHeight
(
DEFAULT_CONNECTOR_SIZE
);
kP
ortLayout
.
setHeight
(
DEFAULT_CONNECTOR_SIZE
);
connectorsToKPorts
.
put
(
connector
,
k
);
connectorsToKPorts
.
put
(
connector
,
k
Port
);
return
k
;
return
k
Port
;
}
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment