Nevron Forum
Home
»
Nevron Open Vision for NET
»
NOV Diagram for .NET
»
NPort Event on Glued/Snapped Item Change
Login
Register
Login
Register
Home
»
Nevron Open Vision for NET
»
NOV Diagram for .NET
»
NPort Event on Glued/Snapped Item Change
NPort Event on Glued/Snapped Item Change
Post Reply
NPort
Event
on
Glued
/
Snap
ped
Item
Change
View
Flat Ascending
Flat Descending
Threaded
Options
Subscribe to topic
Print This Topic
Goto Topics Forum
Author
Message
RLDP 2000
RLDP 2000
posted Last Year
ANSWER
Topic Details
Group: Forum Members
Posts: 11,
Visits: 387
Hi
,
I
would
like
to
ask
if
there
is
an
existing
event
under
NPort
object
that
triggers
whenever
the
glued
or
snap
ped
object
change
s
?
I
would
like
to
use
this
feature
to
track
connection
change
s
on
one
of
my
NShape
ports
. &
nbsp
;
Kindly
advise
if
it
is
available
on
NOV
library
.
Tags
NPort
Reply
Like
1
Nevron Support
Nevron Support
posted Last Year
ANSWER
Post Details
Group: Administrators
Posts: 3.1K,
Visits: 4.2K
You
can
use
the
following
method
to
get
the
shapes
glued
to
a
port
:
private
static
NList
&
lt
;
NShape
&
gt
;
GetGluedShapes
(
NPort
port
)
{
&
nbsp
;&
nbsp
;&
nbsp
;
NList
&
lt
;
NShape
&
gt
;
gluedShapes
=
new
NList
&
lt
;
NShape
&
gt
;();
&
nbsp
;&
nbsp
;&
nbsp
;
if
(
port
.
OwnerShape
==
null
)
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
return
gluedShapes
;
&
nbsp
;&
nbsp
;&
nbsp
;
int
portIndex
=
port
.
GetAggregationInfo
().
Index
;
&
nbsp
;&
nbsp
;&
nbsp
; //
Check
incoming
shapes
&
nbsp
;&
nbsp
;&
nbsp
;
NList
&
lt
;
NShape
&
gt
;
shapes
=
port
.
OwnerShape
.
GetIncomingShapes
();
&
nbsp
;&
nbsp
;&
nbsp
;
for
(
int
i
=
0
;
i
&
lt
;
shapes
.
Count
;
i
++)
&
nbsp
;&
nbsp
;&
nbsp
; {
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
NShape
shape
=
shapes
[
i
];
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
if
(
shape
.
EndPointGlue
is
NEndPointGlueToPort
portGlue
&
amp
;&
amp
;
portGlue
.
PortIndex
==
portIndex
)
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; {
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;
gluedShapes
.
Add
(
shape
);
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; }
&
nbsp
;&
nbsp
;&
nbsp
; }
&
nbsp
;&
nbsp
;&
nbsp
; //
Check
outgoing
shapes
&
nbsp
;&
nbsp
;&
nbsp
;
shapes
=
port
.
OwnerShape
.
GetOutgoingShapes
();
&
nbsp
;&
nbsp
;&
nbsp
;
for
(
int
i
=
0
;
i
&
lt
;
shapes
.
Count
;
i
++)
&
nbsp
;&
nbsp
;&
nbsp
; {
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
NShape
shape
=
shapes
[
i
];
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
if
(
shape
.
BeginPointGlue
is
NEndPointGlueToPort
portGlue
&
amp
;&
amp
;
portGlue
.
PortIndex
==
portIndex
)
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; {
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;&
nbsp
;
gluedShapes
.
Add
(
shape
);
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; }
&
nbsp
;&
nbsp
;&
nbsp
; }
&
nbsp
;&
nbsp
;&
nbsp
;
return
gluedShapes
;
}
We
will
add
this
method
to
the
NPort
class
,
so
in
the
next
version
of
NOV
Diagram
,
you
will
be
able
to
just
use
NPort
.
GetGluedShapes
method
.
Then
subscribe
to
the
Deactivated
event
of
the
NDragHandleTool
of
the
drawing
view
.
The
following
method
is
a
complete
code
example
that
creates
a
diagram
with
2
shapes
,
a
connector
and
shows
a
message
box
when
a
new
connector
is
glued
to
the
right
port
of
the
red
rectangle
shape
or
you
disconnect
and
then
reconnect
the
connector
:
private
static
void
CreateSampleDiagram
(
NDrawingView
drawingView
)
{
&
nbsp
;&
nbsp
;&
nbsp
;
NPage
page
=
drawingView
.
ActivePage
;
&
nbsp
;&
nbsp
;&
nbsp
;
NBasicShapeFactory
factory
=
new
NBasicShapeFactory
();
&
nbsp
;&
nbsp
;&
nbsp
; //
Create
2
shapes
&
nbsp
;&
nbsp
;&
nbsp
;
NShape
shape1
=
factory
.
CreateShape
(
ENBasicShape
.
Rectangle
);
&
nbsp
;&
nbsp
;&
nbsp
;
shape1
.
Text
= "
Rectangle
";
&
nbsp
;&
nbsp
;&
nbsp
;
shape1
.
SetBounds
(
100
,
100
,
150
,
100
);
&
nbsp
;&
nbsp
;&
nbsp
;
shape1
.
Geometry
.
Fill
=
new
NColorFill
(
NColor
.
Red
);
&
nbsp
;&
nbsp
;&
nbsp
;
page
.
Items
.
Add
(
shape1
);
&
nbsp
;&
nbsp
;&
nbsp
;
NShape
shape2
=
factory
.
CreateShape
(
ENBasicShape
.
Circle
);
&
nbsp
;&
nbsp
;&
nbsp
;
shape2
.
Text
= "
Circle
";
&
nbsp
;&
nbsp
;&
nbsp
;
shape2
.
SetBounds
(
350
,
300
,
150
,
100
);
&
nbsp
;&
nbsp
;&
nbsp
;
shape2
.
Geometry
.
Fill
=
new
NColorFill
(
NColor
.
Green
);
&
nbsp
;&
nbsp
;&
nbsp
;
page
.
Items
.
Add
(
shape2
);
&
nbsp
;&
nbsp
;&
nbsp
; //
Create
a
connector
and
connect
the
shapes
&
nbsp
;&
nbsp
;&
nbsp
;
NRoutableConnector
connector
=
new
NRoutableConnector
();
&
nbsp
;&
nbsp
;&
nbsp
;
connector
.
UserClass
=
NDR
.
StyleSheetNameConnectors
;
&
nbsp
;&
nbsp
;&
nbsp
;
page
.
Items
.
Add
(
connector
);
&
nbsp
;&
nbsp
;&
nbsp
;
connector
.
GlueBeginToShape
(
shape1
);
&
nbsp
;&
nbsp
;&
nbsp
;
connector
.
GlueEndToShape
(
shape2
);
&
nbsp
;&
nbsp
;&
nbsp
; //
Get
the
right
port
of
the
rectangle
shape
&
nbsp
;&
nbsp
;&
nbsp
;
NPort
port
=
shape1
.
Ports
.
GetPortByName
("
Right
");
&
nbsp
;&
nbsp
;&
nbsp
;
NShape
portConnector
;
&
nbsp
;&
nbsp
;&
nbsp
;
GetGluedShapes
(
port
).
TryGetFirst
(
null
,
out
portConnector
);
&
nbsp
;&
nbsp
;&
nbsp
; //
Subscribe
to
the
deactivated
event
of
the
drag
handle
tool
&
nbsp
;&
nbsp
;&
nbsp
;
NDragHandleTool
dragHandleTool
=
drawingView
.
Interactor
.
GetTool
&
lt
;
NPointerTool
&
gt
;().
GetTool
&
lt
;
NDragHandleTool
&
gt
;();
&
nbsp
;&
nbsp
;&
nbsp
;
dragHandleTool
.
Deactivated
+= (
NEventArgs
arg
) =&
gt
;
&
nbsp
;&
nbsp
;&
nbsp
; {
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
NShape
curPortConnector
;
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
GetGluedShapes
(
port
).
TryGetFirst
(
null
,
out
curPortConnector
);
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
if
(
curPortConnector
!=
null
&
amp
;&
amp
;
curPortConnector
!=
portConnector
)
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; {
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
;
NMessageBox
.
Show
("
New
connector
connected
to
port
.", "
New
Connection
");
&
nbsp
;&
nbsp
;&
nbsp
; &
nbsp
;&
nbsp
;&
nbsp
; }
&
nbsp
;&
nbsp
;&
nbsp
; };
}
Best Regards,
Nevron Support Team
Reply
Like
1
GO
Merge Selected
Merge into selected topic...
Merge into merge target...
Merge into a specific topic ID...
Open Merge
Post Reply
Similar Topics
Post Quoted Reply
Reading This Topic
1 active, 1 guest, 0 members, 0 anonymous
No members currently viewing this topic!
Login
Login
Remember Me
Reset Password
Resend Validation Email
Login
Explore
Messages
Mentions
Search