Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F885144
Anchors.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
Anchors.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.drawing.manager.Anchors"
]){
dojo
.
_hasResource
[
"dojox.drawing.manager.Anchors"
]
=
true
;
dojo
.
provide
(
"dojox.drawing.manager.Anchors"
);
dojox
.
drawing
.
manager
.
Anchors
=
dojox
.
drawing
.
util
.
oo
.
declare
(
function
(
_1
){
this
.
mouse
=
_1
.
mouse
;
this
.
undo
=
_1
.
undo
;
this
.
util
=
_1
.
util
;
this
.
drawing
=
_1
.
drawing
;
this
.
items
=
{};
},{
onAddAnchor
:
function
(
_2
){
},
onReset
:
function
(
_3
){
var
st
=
this
.
util
.
byId
(
"drawing"
).
stencils
;
st
.
onDeselect
(
_3
);
st
.
onSelect
(
_3
);
},
onRenderStencil
:
function
(){
for
(
var
nm
in
this
.
items
){
dojo
.
forEach
(
this
.
items
[
nm
].
anchors
,
function
(
a
){
a
.
shape
.
moveToFront
();
});
}
},
onTransformPoint
:
function
(
_4
){
var
_5
=
this
.
items
[
_4
.
stencil
.
id
].
anchors
;
var
_6
=
this
.
items
[
_4
.
stencil
.
id
].
item
;
var
_7
=
[];
dojo
.
forEach
(
_5
,
function
(
a
,
i
){
if
(
_4
.
id
==
a
.
id
||
_4
.
stencil
.
anchorType
!=
"group"
){
}
else
{
if
(
_4
.
org
.
y
==
a
.
org
.
y
){
a
.
setPoint
({
dx
:
0
,
dy
:
_4
.
shape
.
getTransform
().
dy
-
a
.
shape
.
getTransform
().
dy
});
}
else
{
if
(
_4
.
org
.
x
==
a
.
org
.
x
){
a
.
setPoint
({
dx
:
_4
.
shape
.
getTransform
().
dx
-
a
.
shape
.
getTransform
().
dx
,
dy
:
0
});
}
}
a
.
shape
.
moveToFront
();
}
var
mx
=
a
.
shape
.
getTransform
();
_7
.
push
({
x
:
mx
.
dx
+
a
.
org
.
x
,
y
:
mx
.
dy
+
a
.
org
.
y
});
if
(
a
.
point
.
t
){
_7
[
_7
.
length
-
1
].
t
=
a
.
point
.
t
;
}
},
this
);
_6
.
setPoints
(
_7
);
_6
.
onTransform
(
_4
);
this
.
onRenderStencil
();
},
onAnchorUp
:
function
(
_8
){
},
onAnchorDown
:
function
(
_9
){
},
onAnchorDrag
:
function
(
_a
){
},
onChangeStyle
:
function
(
_b
){
for
(
var
nm
in
this
.
items
){
dojo
.
forEach
(
this
.
items
[
nm
].
anchors
,
function
(
a
){
a
.
shape
.
moveToFront
();
});
}
},
add
:
function
(
_c
){
this
.
items
[
_c
.
id
]
=
{
item
:
_c
,
anchors
:
[]};
if
(
_c
.
anchorType
==
"none"
){
return
;
}
var
_d
=
_c
.
points
;
dojo
.
forEach
(
_d
,
function
(
p
,
i
){
if
(
p
.
noAnchor
){
return
;
}
if
(
i
==
0
||
i
==
_c
.
points
.
length
-
1
){
if
(
i
==
0
){
}
else
{
}
}
var
a
=
new
dojox
.
drawing
.
manager
.
Anchor
({
stencil
:
_c
,
point
:
p
,
pointIdx
:
i
,
mouse
:
this
.
mouse
,
util
:
this
.
util
});
this
.
items
[
_c
.
id
].
_cons
=
[
dojo
.
connect
(
a
,
"onRenderStencil"
,
this
,
"onRenderStencil"
),
dojo
.
connect
(
a
,
"reset"
,
this
,
"onReset"
),
dojo
.
connect
(
a
,
"onAnchorUp"
,
this
,
"onAnchorUp"
),
dojo
.
connect
(
a
,
"onAnchorDown"
,
this
,
"onAnchorDown"
),
dojo
.
connect
(
a
,
"onAnchorDrag"
,
this
,
"onAnchorDrag"
),
dojo
.
connect
(
a
,
"onTransformPoint"
,
this
,
"onTransformPoint"
),
dojo
.
connect
(
_c
,
"onChangeStyle"
,
this
,
"onChangeStyle"
)];
this
.
items
[
_c
.
id
].
anchors
.
push
(
a
);
this
.
onAddAnchor
(
a
);
},
this
);
if
(
_c
.
shortType
==
"path"
){
var
f
=
_d
[
0
],
l
=
_d
[
_d
.
length
-
1
],
a
=
this
.
items
[
_c
.
id
].
anchors
;
if
(
f
.
x
==
l
.
x
&&
f
.
y
==
l
.
y
){
console
.
warn
(
"LINK ANVHROS"
,
a
[
0
],
a
[
a
.
length
-
1
]);
a
[
0
].
linkedAnchor
=
a
[
a
.
length
-
1
];
a
[
a
.
length
-
1
].
linkedAnchor
=
a
[
0
];
}
}
if
(
_c
.
anchorType
==
"group"
){
dojo
.
forEach
(
this
.
items
[
_c
.
id
].
anchors
,
function
(
_e
){
dojo
.
forEach
(
this
.
items
[
_c
.
id
].
anchors
,
function
(
a
){
if
(
_e
.
id
!=
a
.
id
){
if
(
_e
.
org
.
y
==
a
.
org
.
y
){
_e
.
x_anchor
=
a
;
}
else
{
if
(
_e
.
org
.
x
==
a
.
org
.
x
){
_e
.
y_anchor
=
a
;
}
}
}
},
this
);
},
this
);
}
},
remove
:
function
(
_f
){
if
(
!
this
.
items
[
_f
.
id
]){
return
;
}
dojo
.
forEach
(
this
.
items
[
_f
.
id
].
anchors
,
function
(
a
){
a
.
destroy
();
});
dojo
.
forEach
(
this
.
items
[
_f
.
id
].
_cons
,
dojo
.
disconnect
,
dojo
);
this
.
items
[
_f
.
id
].
anchors
=
null
;
delete
this
.
items
[
_f
.
id
];
}});
dojox
.
drawing
.
manager
.
Anchor
=
dojox
.
drawing
.
util
.
oo
.
declare
(
function
(
_10
){
this
.
defaults
=
dojox
.
drawing
.
defaults
.
copy
();
this
.
mouse
=
_10
.
mouse
;
this
.
point
=
_10
.
point
;
this
.
pointIdx
=
_10
.
pointIdx
;
this
.
util
=
_10
.
util
;
this
.
id
=
_10
.
id
||
this
.
util
.
uid
(
"anchor"
);
this
.
org
=
dojo
.
mixin
({},
this
.
point
);
this
.
stencil
=
_10
.
stencil
;
if
(
this
.
stencil
.
anchorPositionCheck
){
this
.
anchorPositionCheck
=
dojo
.
hitch
(
this
.
stencil
,
this
.
stencil
.
anchorPositionCheck
);
}
this
.
_zCon
=
dojo
.
connect
(
this
.
mouse
,
"setZoom"
,
this
,
"render"
);
this
.
render
();
this
.
connectMouse
();
},{
y_anchor
:
null
,
x_anchor
:
null
,
render
:
function
(){
this
.
shape
&&
this
.
shape
.
removeShape
();
var
d
=
this
.
defaults
.
anchors
,
z
=
this
.
mouse
.
zoom
,
b
=
d
.
width
*
z
,
s
=
d
.
size
*
z
,
p
=
s
/
2
,
_11
=
{
width
:
b
,
style
:
d
.
style
,
color
:
d
.
color
,
cap
:
d
.
cap
};
var
_12
=
{
x
:
this
.
point
.
x
-
p
,
y
:
this
.
point
.
y
-
p
,
width
:
s
,
height
:
s
};
this
.
shape
=
this
.
stencil
.
container
.
createRect
(
_12
).
setStroke
(
_11
).
setFill
(
d
.
fill
);
this
.
shape
.
setTransform
({
dx
:
0
,
dy
:
0
});
this
.
util
.
attr
(
this
,
"drawingType"
,
"anchor"
);
this
.
util
.
attr
(
this
,
"id"
,
this
.
id
);
},
onRenderStencil
:
function
(
_13
){
},
onTransformPoint
:
function
(
_14
){
},
onAnchorDown
:
function
(
obj
){
this
.
selected
=
obj
.
id
==
this
.
id
;
},
onAnchorUp
:
function
(
obj
){
this
.
selected
=
false
;
this
.
stencil
.
onTransformEnd
(
this
);
},
onAnchorDrag
:
function
(
obj
){
if
(
this
.
selected
){
var
mx
=
this
.
shape
.
getTransform
();
var
pmx
=
this
.
shape
.
getParent
().
getParent
().
getTransform
();
var
_15
=
this
.
defaults
.
anchors
.
marginZero
;
var
_16
=
pmx
.
dx
+
this
.
org
.
x
,
_17
=
pmx
.
dy
+
this
.
org
.
y
,
x
=
obj
.
x
-
_16
;
y
=
obj
.
y
-
_17
;
s
=
this
.
defaults
.
anchors
.
minSize
;
var
_18
,
_19
,
_1a
,
_1b
;
var
chk
=
this
.
anchorPositionCheck
(
x
,
y
,
this
);
if
(
chk
.
x
<
0
){
console
.
warn
(
"X<0 Shift"
);
while
(
this
.
anchorPositionCheck
(
x
,
y
,
this
).
x
<
0
){
this
.
shape
.
getParent
().
getParent
().
applyTransform
({
dx
:
2
,
dy
:
0
});
}
}
if
(
chk
.
y
<
0
){
console
.
warn
(
"Y<0 Shift"
);
while
(
this
.
anchorPositionCheck
(
x
,
y
,
this
).
y
<
0
){
this
.
shape
.
getParent
().
getParent
().
applyTransform
({
dx
:
0
,
dy
:
2
});
}
}
if
(
this
.
y_anchor
){
if
(
this
.
org
.
y
>
this
.
y_anchor
.
org
.
y
){
_1a
=
this
.
y_anchor
.
point
.
y
+
s
-
this
.
org
.
y
;
_1b
=
Infinity
;
if
(
y
<
_1a
){
y
=
_1a
;
}
}
else
{
_1a
=-
_17
+
_15
;
_1b
=
this
.
y_anchor
.
point
.
y
-
s
-
this
.
org
.
y
;
if
(
y
<
_1a
){
y
=
_1a
;
}
else
{
if
(
y
>
_1b
){
y
=
_1b
;
}
}
}
}
else
{
_1a
=-
_17
+
_15
;
if
(
y
<
_1a
){
y
=
_1a
;
}
}
if
(
this
.
x_anchor
){
if
(
this
.
org
.
x
>
this
.
x_anchor
.
org
.
x
){
_18
=
this
.
x_anchor
.
point
.
x
+
s
-
this
.
org
.
x
;
_19
=
Infinity
;
if
(
x
<
_18
){
x
=
_18
;
}
}
else
{
_18
=-
_16
+
_15
;
_19
=
this
.
x_anchor
.
point
.
x
-
s
-
this
.
org
.
x
;
if
(
x
<
_18
){
x
=
_18
;
}
else
{
if
(
x
>
_19
){
x
=
_19
;
}
}
}
}
else
{
_18
=-
_16
+
_15
;
if
(
x
<
_18
){
x
=
_18
;
}
}
this
.
shape
.
setTransform
({
dx
:
x
,
dy
:
y
});
if
(
this
.
linkedAnchor
){
this
.
linkedAnchor
.
shape
.
setTransform
({
dx
:
x
,
dy
:
y
});
}
this
.
onTransformPoint
(
this
);
}
},
anchorPositionCheck
:
function
(
x
,
y
,
_1c
){
return
{
x
:
1
,
y
:
1
};
},
setPoint
:
function
(
mx
){
this
.
shape
.
applyTransform
(
mx
);
},
connectMouse
:
function
(){
this
.
_mouseHandle
=
this
.
mouse
.
register
(
this
);
},
disconnectMouse
:
function
(){
this
.
mouse
.
unregister
(
this
.
_mouseHandle
);
},
reset
:
function
(
_1d
){
},
destroy
:
function
(){
dojo
.
disconnect
(
this
.
_zCon
);
this
.
disconnectMouse
();
this
.
shape
.
removeShape
();
}});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 13:27 (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27293
Default Alt Text
Anchors.js (6 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment