Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kityminder-core
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
吴志俊
kityminder-core
Commits
00505709
Commit
00505709
authored
Mar 03, 2014
by
techird
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into gh-pages
parents
8cf3fa4e
dc35c4bb
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
332 additions
and
244 deletions
+332
-244
.jshintrc
.jshintrc
+1
-0
README.md
README.md
+18
-1
dev.html
demo/dev.html
+0
-35
dev.php
dist/dev.php
+2
-1
kity
kity
+1
-1
zh-cn.js
lang/zh-cn/zh-cn.js
+2
-2
combobox.js
src/adapter/combobox.js
+1
-1
contextmenu.js
src/adapter/contextmenu.js
+1
-11
saveto.js
src/adapter/saveto.js
+4
-3
command.js
src/core/command.js
+27
-27
event.js
src/core/event.js
+11
-0
kityminder.js
src/core/kityminder.js
+32
-34
minder.event.js
src/core/minder.event.js
+26
-9
minder.js
src/core/minder.js
+22
-4
basestyle.js
src/module/basestyle.js
+6
-0
dragtree.js
src/module/dragtree.js
+2
-2
editor.js
src/module/editor.js
+16
-14
editor.receiver.js
src/module/editor.receiver.js
+53
-38
font.js
src/module/font.js
+9
-0
hand.js
src/module/hand.js
+29
-12
keyboard.js
src/module/keyboard.js
+2
-18
layout.bottom.js
src/module/layout.bottom.js
+17
-2
layout.default.js
src/module/layout.default.js
+23
-2
layout.js
src/module/layout.js
+22
-23
select.js
src/module/select.js
+4
-3
widget.js
src/ui/widget.js
+1
-1
No files found.
.jshintrc
View file @
00505709
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
"white": false,
"white": false,
"quotmark": false,
"quotmark": false,
"predef" : [
"predef" : [
"module",
"require",
"require",
"console",
"console",
"kity",
"kity",
...
...
README.md
View file @
00505709
Kity Minder
Kity Minder
==========
==========
基于 Kity 库开发的在线脑图编辑器。
##简介
\ No newline at end of file
KityMinder是百度F³团队(原UEditor团队)的又一力作。作为一款在线的脑图编辑工具,它有着不输给Native编辑工具(如xMind,MindManager等)的最佳用户体验。同时,它充分发挥了Web云存储的优势,可以直接将编辑中的脑图同步到云端。 此外,借由独创的“云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。
KM是基于SVG技术实现,使用JavaScript+html实现。支持绝大多数的主流浏览器。
支持列表如下
1.
chrome
2.
firefox
3.
safari
4.
ie9-11
##项目链接
[
直接使用链接
](
http://kitygraph.github.io/kityminder/dist/
)
##联系我们
邮件:kity@baidu.com
讨论群:374918234
...
...
demo/dev.html
deleted
100644 → 0
View file @
8cf3fa4e
<!DOCTYPE html>
<html>
<head>
<script
src=
"../dist/jquery-2.1.0.min.js"
></script>
<script
src=
"../kity/dist/kitygraph.all.js"
></script>
<script
src=
"../configure.js"
></script>
<script
src=
"../dist/dev.js"
></script>
<script
src=
"../lang/zh-cn/zh-cn.js"
charset=
"utf-8"
></script>
<link
href=
"../themes/default/css/import.css"
type=
"text/css"
rel=
"stylesheet"
>
<style>
.km_receiver
{
width
:
0
;
height
:
0
;
}
.km-minderNode
{
cursor
:
default
;
}
.kmui-container
{
height
:
100%
;
}
html
,
body
,
div
{
margin
:
0
;
padding
:
0
;
}
</style>
</head>
<body
>
<div
id=
"kityminder"
style=
"height:100%;width:100%"
onselectstart=
"return false"
>
</div>
</body>
<script>
window
.
km
=
KM
.
getKityMinder
(
'kityminder'
);
</script>
</html>
\ No newline at end of file
dist/dev.php
View file @
00505709
<?php
<?php
$dependency
=
Array
(
$dependency
=
Array
(
'src/core/kityminder.js'
'src/core/kityminder.js'
,
'src/core/utils.js'
,
'src/core/utils.js'
,
'src/core/command.js'
,
'src/core/command.js'
,
'src/core/node.js'
,
'src/core/node.js'
...
@@ -71,6 +71,7 @@ $dependency = Array(
...
@@ -71,6 +71,7 @@ $dependency = Array(
,
'src/protocal/svg.js'
,
'src/protocal/svg.js'
);
);
$content
=
""
;
$content
=
""
;
...
...
kity
@
26f98367
Subproject commit
ebccc80ba41995fa718b1fb0b8f7d79938501ed1
Subproject commit
26f9836718affd92c95196be698b14b1c6da4a95
lang/zh-cn/zh-cn.js
View file @
00505709
...
@@ -42,8 +42,8 @@ KityMinder.LANG[ 'zh-cn' ] = {
...
@@ -42,8 +42,8 @@ KityMinder.LANG[ 'zh-cn' ] = {
}
}
},
},
'node'
:
{
'node'
:
{
'appendsiblingnode'
:
'插入
兄弟
节点'
,
'appendsiblingnode'
:
'插入
同级
节点'
,
'appendchildnode'
:
'插入
孩
子节点'
,
'appendchildnode'
:
'插入子节点'
,
'removenode'
:
'删除节点'
'removenode'
:
'删除节点'
}
}
...
...
src/adapter/combobox.js
View file @
00505709
...
@@ -131,7 +131,7 @@ KM.registerToolbarUI( 'forecolor', function ( name ) {
...
@@ -131,7 +131,7 @@ KM.registerToolbarUI( 'forecolor', function ( name ) {
title
:
this
.
getLang
(
'tooltips'
)[
name
]
||
''
,
title
:
this
.
getLang
(
'tooltips'
)[
name
]
||
''
,
click
:
function
()
{
click
:
function
()
{
var
color
=
kity
.
Color
.
parse
(
getCurrentColor
()).
toHEX
();
var
color
=
kity
.
Color
.
parse
(
getCurrentColor
()).
toHEX
();
if
(
!
color
=
=
'#000000'
){
if
(
color
!
=
'#000000'
){
me
.
execCommand
(
name
,
color
);
me
.
execCommand
(
name
,
color
);
}
}
}
}
...
...
src/adapter/contextmenu.js
View file @
00505709
...
@@ -62,18 +62,8 @@ KM.registerUI( 'contextmenu', function () {
...
@@ -62,18 +62,8 @@ KM.registerUI( 'contextmenu', function () {
$menu
.
kmui
().
hide
();
$menu
.
kmui
().
hide
();
});
});
me
.
on
(
'beforemousedown'
,
function
(
e
){
me
.
on
(
'beforemousedown'
,
function
(
e
){
var
isRightMB
;
if
(
e
.
isRightMB
()){
if
(
"which"
in
e
.
originEvent
)
// Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB
=
e
.
originEvent
.
which
==
3
;
else
if
(
"button"
in
e
.
originEvent
)
// IE, Opera
isRightMB
=
e
.
originEvent
.
button
==
2
;
if
(
isRightMB
){
e
.
stopPropagationImmediately
();
e
.
stopPropagationImmediately
();
}
}
})
})
}
);
}
);
...
...
src/adapter/saveto.js
View file @
00505709
...
@@ -37,10 +37,11 @@ KM.registerToolbarUI( 'saveto', function ( name ) {
...
@@ -37,10 +37,11 @@ KM.registerToolbarUI( 'saveto', function ( name ) {
var
renderBox
=
me
.
getRenderContainer
().
getRenderBox
(
"top"
);
var
renderBox
=
me
.
getRenderContainer
().
getRenderBox
(
"top"
);
var
renderContainer
=
me
.
getRenderContainer
();
var
renderContainer
=
me
.
getRenderContainer
();
var
transform
=
renderContainer
.
getTransform
();
var
transform
=
renderContainer
.
getTransform
();
renderContainer
.
resetTransform
();
renderContainer
.
setTransform
(
new
kity
.
Matrix
().
translate
(
-
renderBox
.
x
,
-
renderBox
.
y
)
);
var
loop
=
0
;
var
svg
=
$
(
svghtml
).
attr
(
{
var
svg
=
$
(
svghtml
).
attr
(
{
width
:
renderBox
.
x
+
renderBox
.
width
,
width
:
renderBox
.
width
,
height
:
renderBox
.
y
+
renderBox
.
height
,
height
:
renderBox
.
height
,
viewBox
:
null
viewBox
:
null
}
);
}
);
var
div
=
$
(
"<div></div>"
).
append
(
svg
);
var
div
=
$
(
"<div></div>"
).
append
(
svg
);
...
...
src/core/command.js
View file @
00505709
var
Command
=
kity
.
createClass
(
"Command"
,
{
var
Command
=
kity
.
createClass
(
"Command"
,
{
constructor
:
function
()
{
constructor
:
function
()
{
this
.
_isContentChange
=
true
;
this
.
_isContentChange
=
true
;
this
.
_isSelectionChange
=
false
;
this
.
_isSelectionChange
=
false
;
},
},
execute
:
function
(
minder
,
args
)
{
execute
:
function
(
minder
,
args
)
{
},
},
setContentChanged
:
function
(
val
)
{
setContentChanged
:
function
(
val
)
{
this
.
_isContentChange
=
!!
val
;
this
.
_isContentChange
=
!!
val
;
},
},
isContentChanged
:
function
()
{
isContentChanged
:
function
()
{
return
this
.
_isContentChange
;
return
this
.
_isContentChange
;
},
},
setSelectionChanged
:
function
(
val
)
{
setSelectionChanged
:
function
(
val
)
{
this
.
_isSelectionChange
=
!!
val
;
this
.
_isSelectionChange
=
!!
val
;
},
},
isSelectionChanged
:
function
()
{
isSelectionChanged
:
function
()
{
return
this
.
_isContentChange
;
return
this
.
_isContentChange
;
},
},
queryState
:
function
(
km
)
{
queryState
:
function
(
km
)
{
return
0
;
return
0
;
},
},
queryValue
:
function
(
km
)
{
queryValue
:
function
(
km
)
{
return
0
;
return
0
;
},
},
isNeedUndo
:
function
()
{
isNeedUndo
:
function
()
{
return
true
;
return
true
;
}
}
}
);
}
);
\ No newline at end of file
src/core/event.js
View file @
00505709
...
@@ -41,5 +41,16 @@ var MinderEvent = kity.createClass( 'MindEvent', {
...
@@ -41,5 +41,16 @@ var MinderEvent = kity.createClass( 'MindEvent', {
},
},
preventDefault
:
function
(){
preventDefault
:
function
(){
this
.
originEvent
.
preventDefault
();
this
.
originEvent
.
preventDefault
();
},
isRightMB
:
function
(){
var
isRightMB
=
false
;
if
(
!
this
.
originEvent
){
return
false
;
}
if
(
"which"
in
this
.
originEvent
)
isRightMB
=
this
.
originEvent
.
which
==
3
;
else
if
(
"button"
in
this
.
originEvent
)
isRightMB
=
this
.
originEvent
.
button
==
2
;
return
isRightMB
;
}
}
}
);
}
);
\ No newline at end of file
src/core/kityminder.js
View file @
00505709
var
KityMinder
=
var
KityMinder
=
window
.
KM
=
window
.
KityMinder
=
function
()
{
window
.
KM
=
var
instanceMap
=
{},
instanceId
=
0
;
window
.
KityMinder
=
function
()
{
return
{
var
instanceMap
=
{},
instanceId
=
0
;
version
:
'1.0.0'
,
return
{
createMinder
:
function
(
renderTarget
,
options
)
{
version
:
'1.0.0'
,
options
=
options
||
{};
createMinder
:
function
(
renderTarget
,
options
)
{
options
.
renderTo
=
Utils
.
isString
(
renderTarget
)
?
document
.
getElementById
(
renderTarget
)
:
renderTarget
;
options
=
options
||
{};
var
minder
=
new
Minder
(
options
);
options
.
renderTo
=
Utils
.
isString
(
renderTarget
)
?
document
.
getElementById
(
renderTarget
)
:
renderTarget
;
this
.
addMinder
(
options
.
renderTo
,
minder
);
var
minder
=
new
Minder
(
options
);
return
minder
;
this
.
addMinder
(
options
.
renderTo
,
minder
);
},
return
minder
;
addMinder
:
function
(
target
,
minder
)
{
},
var
id
;
addMinder
:
function
(
target
,
minder
)
{
if
(
typeof
(
target
)
===
'string'
)
{
var
id
;
id
=
target
;
if
(
typeof
(
target
)
===
'string'
)
{
}
else
{
id
=
target
;
id
=
target
.
id
||
(
"KM_INSTANCE_"
+
instanceId
++
);
}
else
{
}
id
=
target
.
id
||
(
"KM_INSTANCE_"
+
instanceId
++
);
instanceMap
[
id
]
=
minder
;
}
},
instanceMap
[
id
]
=
minder
;
getMinder
:
function
(
target
,
options
)
{
},
var
id
;
getMinder
:
function
(
target
,
options
)
{
if
(
typeof
(
target
)
===
'string'
)
{
var
id
;
id
=
target
;
if
(
typeof
(
target
)
===
'string'
)
{
}
else
{
id
=
target
;
id
=
target
.
id
||
(
"KM_INSTANCE_"
+
instanceId
++
);
}
else
{
}
id
=
target
.
id
||
(
"KM_INSTANCE_"
+
instanceId
++
);
return
instanceMap
[
id
]
||
this
.
createMinder
(
target
,
options
);
}
},
return
instanceMap
[
id
]
||
this
.
createMinder
(
target
,
options
);
//挂接多语言
},
LANG
:
{}
//挂接多语言
};
LANG
:
{}
}
}();
}();
\ No newline at end of file
src/core/minder.event.js
View file @
00505709
...
@@ -27,6 +27,7 @@ kity.extendClass( Minder, {
...
@@ -27,6 +27,7 @@ kity.extendClass( Minder, {
_firePharse
:
function
(
e
)
{
_firePharse
:
function
(
e
)
{
var
beforeEvent
,
preEvent
,
executeEvent
;
var
beforeEvent
,
preEvent
,
executeEvent
;
beforeEvent
=
new
MinderEvent
(
'before'
+
e
.
type
,
e
,
true
);
beforeEvent
=
new
MinderEvent
(
'before'
+
e
.
type
,
e
,
true
);
if
(
this
.
_fire
(
beforeEvent
)
)
{
if
(
this
.
_fire
(
beforeEvent
)
)
{
return
;
return
;
...
@@ -44,6 +45,7 @@ kity.extendClass( Minder, {
...
@@ -44,6 +45,7 @@ kity.extendClass( Minder, {
},
},
_interactChange
:
function
(
e
)
{
_interactChange
:
function
(
e
)
{
var
minder
=
this
;
var
minder
=
this
;
clearTimeout
(
this
.
_interactTimeout
);
clearTimeout
(
this
.
_interactTimeout
);
this
.
_interactTimeout
=
setTimeout
(
function
()
{
this
.
_interactTimeout
=
setTimeout
(
function
()
{
var
stoped
=
minder
.
_fire
(
new
MinderEvent
(
'beforeinteractchange'
)
);
var
stoped
=
minder
.
_fire
(
new
MinderEvent
(
'beforeinteractchange'
)
);
...
@@ -59,10 +61,23 @@ kity.extendClass( Minder, {
...
@@ -59,10 +61,23 @@ kity.extendClass( Minder, {
callbacks
.
push
(
callback
);
callbacks
.
push
(
callback
);
},
},
_fire
:
function
(
e
)
{
_fire
:
function
(
e
)
{
var
callbacks
=
this
.
_eventCallbacks
[
e
.
type
.
toLowerCase
()
];
if
(
!
callbacks
)
{
return
false
;
var
status
=
this
.
getStatus
();
var
callbacks
=
this
.
_eventCallbacks
[
e
.
type
.
toLowerCase
()
]
||
[];
if
(
status
){
callbacks
=
callbacks
.
concat
(
this
.
_eventCallbacks
[
status
+
'.'
+
e
.
type
.
toLowerCase
()
]
||
[]);
}
if
(
callbacks
.
length
==
0
){
return
;
}
}
for
(
var
i
=
0
;
i
<
callbacks
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
callbacks
.
length
;
i
++
)
{
callbacks
[
i
].
call
(
this
,
e
);
callbacks
[
i
].
call
(
this
,
e
);
if
(
e
.
shouldStopPropagationImmediately
()
)
{
if
(
e
.
shouldStopPropagationImmediately
()
)
{
...
@@ -72,17 +87,19 @@ kity.extendClass( Minder, {
...
@@ -72,17 +87,19 @@ kity.extendClass( Minder, {
return
e
.
shouldStopPropagation
();
return
e
.
shouldStopPropagation
();
},
},
on
:
function
(
name
,
callback
)
{
on
:
function
(
name
,
callback
)
{
var
types
=
name
.
split
(
' '
)
;
var
km
=
this
;
for
(
var
i
=
0
;
i
<
types
.
length
;
i
++
)
{
utils
.
each
(
name
.
split
(
/
\s
+/
),
function
(
i
,
n
)
{
this
.
_listen
(
types
[
i
]
.
toLowerCase
(),
callback
);
km
.
_listen
(
n
.
toLowerCase
(),
callback
);
}
}
);
return
this
;
return
this
;
},
},
off
:
function
(
name
,
callback
)
{
off
:
function
(
name
,
callback
)
{
var
types
=
name
.
split
(
' '
);
var
types
=
name
.
split
(
/
\s
+/
);
var
i
,
j
,
callbacks
,
removeIndex
;
var
i
,
j
,
callbacks
,
removeIndex
;
for
(
i
=
0
;
i
<
types
.
length
;
i
++
)
{
for
(
i
=
0
;
i
<
types
.
length
;
i
++
)
{
callbacks
=
this
.
_eventCallbacks
[
types
[
i
].
toLowerCase
()
];
callbacks
=
this
.
_eventCallbacks
[
types
[
i
].
toLowerCase
()
];
if
(
callbacks
)
{
if
(
callbacks
)
{
removeIndex
=
null
;
removeIndex
=
null
;
for
(
j
=
0
;
j
<
callbacks
.
length
;
j
++
)
{
for
(
j
=
0
;
j
<
callbacks
.
length
;
j
++
)
{
...
...
src/core/minder.js
View file @
00505709
...
@@ -5,6 +5,7 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
...
@@ -5,6 +5,7 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
this
.
_initEvents
();
this
.
_initEvents
();
this
.
_initMinder
();
this
.
_initMinder
();
this
.
_initSelection
();
this
.
_initSelection
();
this
.
_initStatus
();
this
.
_initShortcutKey
();
this
.
_initShortcutKey
();
this
.
_initContextmenu
();
this
.
_initContextmenu
();
this
.
_initModules
();
this
.
_initModules
();
...
@@ -109,6 +110,7 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
...
@@ -109,6 +110,7 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
return
false
return
false
}
}
me
.
on
(
'keydown'
,
function
(
e
)
{
me
.
on
(
'keydown'
,
function
(
e
)
{
var
originEvent
=
e
.
originEvent
;
var
originEvent
=
e
.
originEvent
;
var
keyCode
=
originEvent
.
keyCode
||
originEvent
.
which
;
var
keyCode
=
originEvent
.
keyCode
||
originEvent
.
which
;
for
(
var
i
in
shortcutkeys
)
{
for
(
var
i
in
shortcutkeys
)
{
...
@@ -119,10 +121,7 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
...
@@ -119,10 +121,7 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
current
++
;
current
++
;
}
}
});
});
//todo 暂时通过receiver判断
if
(
me
.
isTextEditStatus
()){
return
;
}
if
(
current
==
keys
.
length
){
if
(
current
==
keys
.
length
){
if
(
me
.
queryCommandState
(
i
)
!=
-
1
)
if
(
me
.
queryCommandState
(
i
)
!=
-
1
)
me
.
execCommand
(
i
);
me
.
execCommand
(
i
);
...
@@ -147,6 +146,25 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
...
@@ -147,6 +146,25 @@ var Minder = KityMinder.Minder = kity.createClass( "KityMinder", {
},
},
getContextmenu
:
function
(){
getContextmenu
:
function
(){
return
this
.
contextmenus
;
return
this
.
contextmenus
;
},
_initStatus
:
function
(){
this
.
_status
=
"normal"
;
this
.
_rollbackStatus
=
"normal"
;
},
setStatus
:
function
(
status
){
if
(
status
){
this
.
_rollbackStatus
=
this
.
_status
;
this
.
_status
=
status
;
}
else
{
this
.
_status
=
''
;
}
return
this
;
},
rollbackStatus
:
function
(){
this
.
_status
=
this
.
_rollbackStatus
;
},
getStatus
:
function
(){
return
this
.
_status
;
}
}
}
);
}
);
...
...
src/module/basestyle.js
View file @
00505709
...
@@ -26,6 +26,9 @@ KityMinder.registerModule( "basestylemodule", function () {
...
@@ -26,6 +26,9 @@ KityMinder.registerModule( "basestylemodule", function () {
queryState
:
function
(
)
{
queryState
:
function
(
)
{
var
nodes
=
km
.
getSelectedNodes
(),
var
nodes
=
km
.
getSelectedNodes
(),
result
=
0
;
result
=
0
;
if
(
nodes
.
length
==
0
){
return
-
1
;
}
utils
.
each
(
nodes
,
function
(
i
,
n
){
utils
.
each
(
nodes
,
function
(
i
,
n
){
if
(
n
.
getData
(
'bold'
)){
if
(
n
.
getData
(
'bold'
)){
result
=
1
;
result
=
1
;
...
@@ -58,6 +61,9 @@ KityMinder.registerModule( "basestylemodule", function () {
...
@@ -58,6 +61,9 @@ KityMinder.registerModule( "basestylemodule", function () {
queryState
:
function
(
)
{
queryState
:
function
(
)
{
var
nodes
=
km
.
getSelectedNodes
(),
var
nodes
=
km
.
getSelectedNodes
(),
result
=
0
;
result
=
0
;
if
(
nodes
.
length
==
0
){
return
-
1
;
}
utils
.
each
(
nodes
,
function
(
i
,
n
){
utils
.
each
(
nodes
,
function
(
i
,
n
){
if
(
n
.
getData
(
'italic'
)){
if
(
n
.
getData
(
'italic'
)){
result
=
1
;
result
=
1
;
...
...
src/module/dragtree.js
View file @
00505709
...
@@ -261,10 +261,10 @@ KityMinder.registerModule( "DragTree", function () {
...
@@ -261,10 +261,10 @@ KityMinder.registerModule( "DragTree", function () {
this
.
_dragBox
.
dragStart
(
e
.
getPosition
()
);
this
.
_dragBox
.
dragStart
(
e
.
getPosition
()
);
}
}
},
},
mousemove
:
function
(
e
)
{
'mousemove'
:
function
(
e
)
{
this
.
_dragBox
.
dragMove
(
e
.
getPosition
()
);
this
.
_dragBox
.
dragMove
(
e
.
getPosition
()
);
},
},
mouseup
:
function
(
e
)
{
'mouseup'
:
function
(
e
)
{
this
.
_dragBox
.
dragEnd
();
this
.
_dragBox
.
dragEnd
();
}
}
},
},
...
...
src/module/editor.js
View file @
00505709
...
@@ -26,16 +26,9 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -26,16 +26,9 @@ KityMinder.registerModule( "TextEditModule", function () {
this
.
getPaper
().
addShape
(
sel
);
this
.
getPaper
().
addShape
(
sel
);
},
},
"events"
:
{
"events"
:
{
'beforemousedown'
:
function
(
e
){
'normal.beforemousedown textedit.beforemousedown'
:
function
(
e
){
var
isRightMB
;
if
(
e
.
isRightMB
()){
if
(
"which"
in
e
.
originEvent
)
// Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB
=
e
.
originEvent
.
which
==
3
;
else
if
(
"button"
in
e
.
originEvent
)
// IE, Opera
isRightMB
=
e
.
originEvent
.
button
==
2
;
if
(
isRightMB
){
e
.
stopPropagationImmediately
();
e
.
stopPropagationImmediately
();
return
;
return
;
}
}
...
@@ -48,6 +41,7 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -48,6 +41,7 @@ KityMinder.registerModule( "TextEditModule", function () {
node
=
selectionShape
.
getData
(
'relatedNode'
);
node
=
selectionShape
.
getData
(
'relatedNode'
);
e
.
stopPropagationImmediately
();
e
.
stopPropagationImmediately
();
}
}
km
.
setStatus
(
'normal'
)
}
}
if
(
node
){
if
(
node
){
var
textShape
=
node
.
getTextShape
();
var
textShape
=
node
.
getTextShape
();
...
@@ -56,6 +50,7 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -56,6 +50,7 @@ KityMinder.registerModule( "TextEditModule", function () {
if
(
this
.
isSingleSelect
()
&&
node
.
isSelected
())
{
// && e.kityEvent.targetShape.getType().toLowerCase()== 'text'
if
(
this
.
isSingleSelect
()
&&
node
.
isSelected
())
{
// && e.kityEvent.targetShape.getType().toLowerCase()== 'text'
sel
.
collapse
();
sel
.
collapse
();
node
.
getTextShape
().
setStyle
(
'cursor'
,
'text'
);
node
.
getTextShape
().
setStyle
(
'cursor'
,
'text'
);
km
.
setStatus
(
'textedit'
);
receiver
.
setTextEditStatus
(
true
)
receiver
.
setTextEditStatus
(
true
)
.
setSelection
(
sel
)
.
setSelection
(
sel
)
.
setKityMinder
(
this
)
.
setKityMinder
(
this
)
...
@@ -74,10 +69,11 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -74,10 +69,11 @@ KityMinder.registerModule( "TextEditModule", function () {
sel
.
setShow
();
sel
.
setShow
();
selectionByClick
=
false
;
selectionByClick
=
false
;
}
}
km
.
setStatus
(
'textedit'
)
}
}
}
}
},
},
'mouseup'
:
function
(
e
){
'
normal.mouseup textedit.
mouseup'
:
function
(
e
){
if
(
mouseDownStatus
){
if
(
mouseDownStatus
){
if
(
!
sel
.
collapsed
){
if
(
!
sel
.
collapsed
){
try
{
try
{
...
@@ -93,7 +89,7 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -93,7 +89,7 @@ KityMinder.registerModule( "TextEditModule", function () {
mouseDownStatus
=
false
;
mouseDownStatus
=
false
;
oneTime
=
0
;
oneTime
=
0
;
},
},
'beforemousemove'
:
function
(
e
){
'
textedit.
beforemousemove'
:
function
(
e
){
if
(
mouseDownStatus
){
if
(
mouseDownStatus
){
e
.
stopPropagationImmediately
();
e
.
stopPropagationImmediately
();
...
@@ -112,7 +108,7 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -112,7 +108,7 @@ KityMinder.registerModule( "TextEditModule", function () {
}
}
},
},
'dblclick'
:
function
(
e
){
'
normal.dblclick textedit.
dblclick'
:
function
(
e
){
var
text
=
e
.
kityEvent
.
targetShape
;
var
text
=
e
.
kityEvent
.
targetShape
;
if
(
text
.
getType
().
toLowerCase
()
==
'text'
)
{
if
(
text
.
getType
().
toLowerCase
()
==
'text'
)
{
...
@@ -121,8 +117,8 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -121,8 +117,8 @@ KityMinder.registerModule( "TextEditModule", function () {
sel
.
setEndOffset
(
text
.
getContent
().
length
);
sel
.
setEndOffset
(
text
.
getContent
().
length
);
sel
.
setShow
();
sel
.
setShow
();
receiver
.
setContainerTxt
(
text
.
getContent
()).
updateSelectionShow
(
1
)
receiver
.
setContainerTxt
(
text
.
getContent
()).
updateSelectionShow
(
1
)
.
updateRange
(
range
).
setTextEditStatus
(
true
)
.
updateRange
(
range
).
setTextEditStatus
(
true
)
;
km
.
setStatus
(
'textedit'
);
}
}
},
},
'restoreScene'
:
function
(){
'restoreScene'
:
function
(){
...
@@ -131,6 +127,7 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -131,6 +127,7 @@ KityMinder.registerModule( "TextEditModule", function () {
'stopTextEdit'
:
function
(){
'stopTextEdit'
:
function
(){
sel
.
setHide
();
sel
.
setHide
();
receiver
.
clear
().
setTextEditStatus
(
false
);
receiver
.
clear
().
setTextEditStatus
(
false
);
km
.
setStatus
(
'normal'
);
},
},
"resize"
:
function
(
e
)
{
"resize"
:
function
(
e
)
{
sel
.
setHide
();
sel
.
setHide
();
...
@@ -148,6 +145,7 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -148,6 +145,7 @@ KityMinder.registerModule( "TextEditModule", function () {
textShape
.
setStyle
(
'cursor'
,
'default'
);
textShape
.
setStyle
(
'cursor'
,
'default'
);
node
.
getTextShape
().
setStyle
(
'cursor'
,
'text'
);
node
.
getTextShape
().
setStyle
(
'cursor'
,
'text'
);
km
.
setStatus
(
'textedit'
);
receiver
.
setTextEditStatus
(
true
)
receiver
.
setTextEditStatus
(
true
)
.
setSelection
(
sel
)
.
setSelection
(
sel
)
.
setKityMinder
(
this
)
.
setKityMinder
(
this
)
...
@@ -185,8 +183,12 @@ KityMinder.registerModule( "TextEditModule", function () {
...
@@ -185,8 +183,12 @@ KityMinder.registerModule( "TextEditModule", function () {
}
}
receiver
.
clear
().
setTextEditStatus
(
false
);
receiver
.
clear
().
setTextEditStatus
(
false
);
if
(
this
.
getStatus
()
==
'textedit'
){
this
.
setStatus
(
'normal'
)
}
},
},
'selectionclear'
:
function
(){
'selectionclear'
:
function
(){
km
.
setStatus
(
'normal'
);
receiver
.
setTextEditStatus
(
false
).
clear
()
receiver
.
setTextEditStatus
(
false
).
clear
()
}
}
}
}
...
...
src/module/editor.receiver.js
View file @
00505709
...
@@ -3,6 +3,7 @@ Minder.Receiver = kity.createClass('Receiver',{
...
@@ -3,6 +3,7 @@ Minder.Receiver = kity.createClass('Receiver',{
clear
:
function
(){
clear
:
function
(){
this
.
container
.
innerHTML
=
''
;
this
.
container
.
innerHTML
=
''
;
this
.
selection
&&
this
.
selection
.
setHide
();
this
.
selection
&&
this
.
selection
.
setHide
();
this
.
range
&&
this
.
range
.
nativeSel
.
removeAllRanges
();
this
.
index
=
0
;
this
.
index
=
0
;
return
this
;
return
this
;
},
},
...
@@ -21,7 +22,7 @@ Minder.Receiver = kity.createClass('Receiver',{
...
@@ -21,7 +22,7 @@ Minder.Receiver = kity.createClass('Receiver',{
_div
.
className
=
'km_receiver'
;
_div
.
className
=
'km_receiver'
;
this
.
container
=
document
.
body
.
insertBefore
(
_div
,
document
.
body
.
firstChild
);
this
.
container
=
document
.
body
.
insertBefore
(
_div
,
document
.
body
.
firstChild
);
utils
.
addCssRule
(
'km_receiver_css'
,
' .km_receiver{position:absolute;padding:0;margin:0;word-wrap:break-word;clip:rect(1em 1em 1em 1em);}'
);
//
utils
.
addCssRule
(
'km_receiver_css'
,
' .km_receiver{position:absolute;padding:0;margin:0;word-wrap:break-word;clip:rect(1em 1em 1em 1em);}'
);
//
this
.
km
.
on
(
'
beforekeyup
'
,
utils
.
proxy
(
this
.
keyboardEvents
,
this
));
this
.
km
.
on
(
'
textedit.beforekeyup textedit.keydown
'
,
utils
.
proxy
(
this
.
keyboardEvents
,
this
));
this
.
timer
=
null
;
this
.
timer
=
null
;
this
.
index
=
0
;
this
.
index
=
0
;
},
},
...
@@ -72,51 +73,65 @@ Minder.Receiver = kity.createClass('Receiver',{
...
@@ -72,51 +73,65 @@ Minder.Receiver = kity.createClass('Receiver',{
var
me
=
this
;
var
me
=
this
;
var
orgEvt
=
e
.
originEvent
;
var
orgEvt
=
e
.
originEvent
;
var
keyCode
=
orgEvt
.
keyCode
;
var
keyCode
=
orgEvt
.
keyCode
;
switch
(
e
.
type
){
var
keys
=
KityMinder
.
keymap
;
switch
(
e
.
type
){
case
'keydown'
:
switch
(
e
.
originEvent
.
keyCode
)
{
case
keys
.
Enter
:
case
keys
.
Tab
:
this
.
selection
.
setHide
();
this
.
clear
().
setTextEditStatus
(
false
);
this
.
km
.
setStatus
(
'normal'
);
e
.
preventDefault
();
break
;
}
break
;
case
'beforekeyup'
:
case
'beforekeyup'
:
if
(
this
.
isTextEditStatus
()
){
switch
(
keyCode
){
switch
(
keyCode
){
case
keymap
.
Enter
:
case
keymap
.
Enter
:
case
keymap
.
Tab
:
case
keymap
.
Tab
:
if
(
this
.
keydownNode
===
this
.
minderNode
){
if
(
this
.
keydownNode
===
this
.
minderNode
){
this
.
rollbackStatus
();
this
.
setTextEditStatus
(
false
);
this
.
setTextEditStatus
(
false
);
this
.
clear
();
this
.
clear
();
}
}
e
.
preventDefault
();
e
.
preventDefault
();
return
;
return
;
case
keymap
.
Shift
:
case
keymap
.
Shift
:
case
keymap
.
Control
:
case
keymap
.
Control
:
case
keymap
.
Alt
:
case
keymap
.
Alt
:
case
keymap
.
Cmd
:
case
keymap
.
Cmd
:
return
;
return
;
}
}
var
text
=
this
.
container
.
textContent
.
replace
(
/
\u
200b/g
,
''
);
var
text
=
this
.
container
.
textContent
.
replace
(
/
\u
200b/g
,
''
);
if
(
this
.
textShape
.
getOpacity
()
==
0
){
if
(
this
.
textShape
.
getOpacity
()
==
0
){
this
.
textShape
.
setOpacity
(
1
);
this
.
textShape
.
setOpacity
(
1
);
}
}
this
.
textShape
.
setContent
(
text
);
this
.
textShape
.
setContent
(
text
);
this
.
setContainerStyle
();
this
.
setContainerStyle
();
this
.
minderNode
.
setText
(
text
);
this
.
minderNode
.
setText
(
text
);
if
(
text
.
length
==
0
){
if
(
text
.
length
==
0
){
this
.
textShape
.
setContent
(
'a'
);
this
.
textShape
.
setContent
(
'a'
);
this
.
textShape
.
setOpacity
(
0
);
this
.
textShape
.
setOpacity
(
0
);
}
}
this
.
km
.
updateLayout
(
this
.
minderNode
);
this
.
km
.
updateLayout
(
this
.
minderNode
);
this
.
setBaseOffset
();
this
.
setBaseOffset
();
this
.
updateTextData
();
this
.
updateTextData
();
this
.
updateIndex
();
this
.
updateIndex
();
this
.
updateSelection
();
this
.
updateSelection
();
this
.
timer
=
setTimeout
(
function
(){
this
.
timer
=
setTimeout
(
function
(){
me
.
selection
.
setShow
()
me
.
selection
.
setShow
()
},
500
);
},
500
);
return
true
;
return
true
;
}
}
}
},
},
updateIndex
:
function
(){
updateIndex
:
function
(){
this
.
index
=
this
.
range
.
getStart
().
startOffset
;
this
.
index
=
this
.
range
.
getStart
().
startOffset
;
...
...
src/module/font.js
View file @
00505709
...
@@ -51,6 +51,9 @@ KityMinder.registerModule( "fontmodule", function () {
...
@@ -51,6 +51,9 @@ KityMinder.registerModule( "fontmodule", function () {
n
.
setData
(
'fontcolor'
,
color
);
n
.
setData
(
'fontcolor'
,
color
);
n
.
getTextShape
().
fill
(
color
)
n
.
getTextShape
().
fill
(
color
)
}
)
}
)
},
queryState
:
function
(
km
){
return
km
.
getSelectedNodes
().
length
==
0
?
-
1
:
0
}
}
}
),
}
),
...
@@ -64,6 +67,9 @@ KityMinder.registerModule( "fontmodule", function () {
...
@@ -64,6 +67,9 @@ KityMinder.registerModule( "fontmodule", function () {
n
.
getTextShape
().
setAttr
(
'font-family'
,
family
);
n
.
getTextShape
().
setAttr
(
'font-family'
,
family
);
km
.
updateLayout
(
n
)
km
.
updateLayout
(
n
)
}
)
}
)
},
queryState
:
function
(
km
){
return
km
.
getSelectedNodes
().
length
==
0
?
-
1
:
0
}
}
}
),
}
),
"fontsize"
:
kity
.
createClass
(
"fontsizeCommand"
,
{
"fontsize"
:
kity
.
createClass
(
"fontsizeCommand"
,
{
...
@@ -76,6 +82,9 @@ KityMinder.registerModule( "fontmodule", function () {
...
@@ -76,6 +82,9 @@ KityMinder.registerModule( "fontmodule", function () {
n
.
getTextShape
().
setSize
(
size
);
n
.
getTextShape
().
setSize
(
size
);
km
.
updateLayout
(
n
)
km
.
updateLayout
(
n
)
}
)
}
)
},
queryState
:
function
(
km
){
return
km
.
getSelectedNodes
().
length
==
0
?
-
1
:
0
}
}
}
)
}
)
},
},
...
...
src/module/hand.js
View file @
00505709
...
@@ -27,24 +27,30 @@ var ViewDragger = kity.createClass( "ViewDragger", {
...
@@ -27,24 +27,30 @@ var ViewDragger = kity.createClass( "ViewDragger", {
lastPosition
=
null
,
lastPosition
=
null
,
currentPosition
=
null
;
currentPosition
=
null
;
this
.
_minder
.
on
(
'beforemousedown'
,
function
(
e
)
{
this
.
_minder
.
on
(
'normal.beforemousedown'
,
function
(
e
)
{
// 已经被用户打开拖放模式
if
(
dragger
.
isEnabled
()
)
{
lastPosition
=
e
.
getPosition
();
e
.
stopPropagation
();
e
.
originEvent
.
preventDefault
();
}
// 点击未选中的根节点临时开启
// 点击未选中的根节点临时开启
else
if
(
e
.
getTargetNode
()
==
this
.
getRoot
()
&&
if
(
e
.
getTargetNode
()
==
this
.
getRoot
()
&&
(
!
this
.
getRoot
().
isSelected
()
||
!
this
.
isSingleSelect
()
)
)
{
(
!
this
.
getRoot
().
isSelected
()
||
!
this
.
isSingleSelect
()
)
)
{
lastPosition
=
e
.
getPosition
();
lastPosition
=
e
.
getPosition
();
dragger
.
setEnabled
(
true
);
dragger
.
setEnabled
(
true
);
isRootDrag
=
true
;
isRootDrag
=
true
;
var
me
=
this
;
setTimeout
(
function
()
{
me
.
setStatus
(
'hand'
);
},
1
);
}
}
}
);
this
.
_minder
.
on
(
'hand.beforemousedown'
,
function
(
e
)
{
// 已经被用户打开拖放模式
if
(
dragger
.
isEnabled
()
)
{
lastPosition
=
e
.
getPosition
();
e
.
stopPropagation
();
e
.
originEvent
.
preventDefault
();
}
}
)
}
)
.
on
(
'beforemousemove'
,
function
(
e
)
{
.
on
(
'
hand.
beforemousemove'
,
function
(
e
)
{
if
(
lastPosition
)
{
if
(
lastPosition
)
{
currentPosition
=
e
.
getPosition
();
currentPosition
=
e
.
getPosition
();
...
@@ -56,23 +62,34 @@ var ViewDragger = kity.createClass( "ViewDragger", {
...
@@ -56,23 +62,34 @@ var ViewDragger = kity.createClass( "ViewDragger", {
}
}
}
)
}
)
.
on
(
'mouseup'
,
function
(
e
)
{
.
on
(
'
hand.
mouseup'
,
function
(
e
)
{
lastPosition
=
null
;
lastPosition
=
null
;
// 临时拖动需要还原状态
// 临时拖动需要还原状态
if
(
isRootDrag
)
{
if
(
isRootDrag
)
{
dragger
.
setEnabled
(
false
);
dragger
.
setEnabled
(
false
);
isRootDrag
=
false
;
isRootDrag
=
false
;
this
.
rollbackStatus
();
}
}
}
);
}
);
}
}
}
);
}
);
KityMinder
.
registerModule
(
'Hand'
,
function
()
{
KityMinder
.
registerModule
(
'Hand'
,
function
()
{
var
km
=
this
;
var
ToggleHandCommand
=
kity
.
createClass
(
"ToggleHandCommand"
,
{
var
ToggleHandCommand
=
kity
.
createClass
(
"ToggleHandCommand"
,
{
base
:
Command
,
base
:
Command
,
execute
:
function
(
minder
)
{
execute
:
function
(
minder
)
{
minder
.
_viewDragger
.
setEnabled
(
!
minder
.
_viewDragger
.
isEnabled
()
);
minder
.
_viewDragger
.
setEnabled
(
!
minder
.
_viewDragger
.
isEnabled
()
);
if
(
minder
.
_viewDragger
.
isEnabled
()
)
{
minder
.
setStatus
(
'hand'
);
}
else
{
minder
.
rollbackStatus
();
}
},
},
queryState
:
function
(
minder
)
{
queryState
:
function
(
minder
)
{
return
minder
.
_viewDragger
.
isEnabled
()
?
1
:
0
;
return
minder
.
_viewDragger
.
isEnabled
()
?
1
:
0
;
...
@@ -103,9 +120,9 @@ KityMinder.registerModule( 'Hand', function () {
...
@@ -103,9 +120,9 @@ KityMinder.registerModule( 'Hand', function () {
e
.
originEvent
.
preventDefault
();
e
.
originEvent
.
preventDefault
();
},
},
dblclick
:
function
()
{
dblclick
:
function
()
{
var
viewport
=
this
.
getPaper
().
getViewPort
();
var
viewport
=
this
.
getPaper
().
getViewPort
();
var
offset
=
this
.
getRoot
().
getRenderContainer
(
this
.
getRenderContainer
()
).
getTransform
().
getTranslate
();
var
offset
=
this
.
getRoot
().
getRenderContainer
(
this
.
getRenderContainer
()
).
getTransform
().
getTranslate
();
var
dx
=
viewport
.
center
.
x
-
offset
.
x
,
var
dx
=
viewport
.
center
.
x
-
offset
.
x
,
dy
=
viewport
.
center
.
y
-
offset
.
y
;
dy
=
viewport
.
center
.
y
-
offset
.
y
;
//this.getRenderContainer().fxTranslate(dx, dy, 300);
//this.getRenderContainer().fxTranslate(dx, dy, 300);
...
...
src/module/keyboard.js
View file @
00505709
...
@@ -66,26 +66,10 @@ KityMinder.registerModule( "KeyboardModule", function () {
...
@@ -66,26 +66,10 @@ KityMinder.registerModule( "KeyboardModule", function () {
contentchange
:
function
()
{
contentchange
:
function
()
{
buildPositionNetwork
(
this
.
getRoot
()
);
buildPositionNetwork
(
this
.
getRoot
()
);
},
},
keydown
:
function
(
e
)
{
"normal.keydown"
:
function
(
e
)
{
var
keys
=
KityMinder
.
keymap
;
var
keys
=
KityMinder
.
keymap
;
if
(
this
.
receiver
.
isTextEditStatus
()
)
{
switch
(
e
.
originEvent
.
keyCode
)
{
case
keys
.
Enter
:
case
keys
.
Tab
:
this
.
fire
(
'stopTextEdit'
);
e
.
preventDefault
();
break
;
case
keys
.
Backspace
:
case
keys
.
Del
:
case
keys
.
Left
:
case
keys
.
Up
:
case
keys
.
Right
:
case
keys
.
Down
:
break
;
}
return
;
}
var
node
=
e
.
getTargetNode
();
var
node
=
e
.
getTargetNode
();
this
.
receiver
.
keydownNode
=
node
;
this
.
receiver
.
keydownNode
=
node
;
switch
(
e
.
originEvent
.
keyCode
)
{
switch
(
e
.
originEvent
.
keyCode
)
{
...
...
src/module/layout.bottom.js
View file @
00505709
...
@@ -348,6 +348,12 @@ KityMinder.registerModule( "LayoutBottom", function () {
...
@@ -348,6 +348,12 @@ KityMinder.registerModule( "LayoutBottom", function () {
default
:
default
:
break
;
break
;
}
}
this
.
_fire
(
new
MinderEvent
(
"beforeRenderNode"
,
{
node
:
node
},
false
)
);
this
.
_fire
(
new
MinderEvent
(
"RenderNode"
,
{
node
:
node
},
false
)
);
},
},
updateLayout
:
function
(
node
)
{
updateLayout
:
function
(
node
)
{
this
.
_fire
(
new
MinderEvent
(
"beforeRenderNode"
,
{
this
.
_fire
(
new
MinderEvent
(
"beforeRenderNode"
,
{
...
@@ -408,9 +414,11 @@ KityMinder.registerModule( "LayoutBottom", function () {
...
@@ -408,9 +414,11 @@ KityMinder.registerModule( "LayoutBottom", function () {
appendChildNode
:
function
(
parent
,
node
,
sibling
)
{
appendChildNode
:
function
(
parent
,
node
,
sibling
)
{
node
.
clearLayout
();
node
.
clearLayout
();
var
parentLayout
=
parent
.
getLayout
();
var
parentLayout
=
parent
.
getLayout
();
var
expand
=
parent
.
getData
(
"expand"
);
//设置分支类型
//设置分支类型
if
(
parent
.
getType
()
===
"root"
)
{
if
(
parent
.
getType
()
===
"root"
)
{
node
.
setType
(
"main"
);
node
.
setType
(
"main"
);
node
.
setData
(
"expand"
,
true
);
minder
.
handelNodeInsert
(
node
);
minder
.
handelNodeInsert
(
node
);
}
else
{
}
else
{
node
.
setType
(
"sub"
);
node
.
setType
(
"sub"
);
...
@@ -490,8 +498,15 @@ KityMinder.registerModule( "LayoutBottom", function () {
...
@@ -490,8 +498,15 @@ KityMinder.registerModule( "LayoutBottom", function () {
}
}
},
},
expandNode
:
function
(
ico
)
{
expandNode
:
function
(
ico
)
{
var
isExpand
=
ico
.
icon
.
switchState
();
var
isExpand
,
node
;
var
node
=
ico
.
icon
.
_node
;
if
(
ico
instanceof
MinderNode
)
{
node
=
ico
;
isExpand
=
node
.
getLayout
().
shicon
.
switchState
();
}
else
{
isExpand
=
ico
.
icon
.
switchState
();
node
=
ico
.
icon
.
_node
;
}
node
.
setData
(
"expand"
,
isExpand
);
var
_buffer
=
node
.
getChildren
();
var
_buffer
=
node
.
getChildren
();
var
_cleanbuffer
=
[];
var
_cleanbuffer
=
[];
...
...
src/module/layout.default.js
View file @
00505709
...
@@ -412,6 +412,12 @@ KityMinder.registerModule( "LayoutDefault", function () {
...
@@ -412,6 +412,12 @@ KityMinder.registerModule( "LayoutDefault", function () {
default
:
default
:
break
;
break
;
}
}
this
.
_fire
(
new
MinderEvent
(
"beforeRenderNode"
,
{
node
:
node
},
false
)
);
this
.
_fire
(
new
MinderEvent
(
"RenderNode"
,
{
node
:
node
},
false
)
);
},
},
updateLayout
:
function
(
node
)
{
updateLayout
:
function
(
node
)
{
this
.
_fire
(
new
MinderEvent
(
"beforeRenderNode"
,
{
this
.
_fire
(
new
MinderEvent
(
"beforeRenderNode"
,
{
...
@@ -537,6 +543,14 @@ KityMinder.registerModule( "LayoutDefault", function () {
...
@@ -537,6 +543,14 @@ KityMinder.registerModule( "LayoutDefault", function () {
node
.
setType
(
"main"
);
node
.
setType
(
"main"
);
}
else
{
}
else
{
node
.
setType
(
"sub"
);
node
.
setType
(
"sub"
);
var
isExpand
=
parent
.
getData
(
"expand"
);
if
(
isExpand
===
undefined
)
{
isExpand
=
true
;
parent
.
setData
(
"expand"
,
isExpand
);
}
// if ( !isExpand ) {
// return false;
// }
}
}
//计算位置等流程
//计算位置等流程
updateBg
(
node
);
updateBg
(
node
);
...
@@ -600,8 +614,15 @@ KityMinder.registerModule( "LayoutDefault", function () {
...
@@ -600,8 +614,15 @@ KityMinder.registerModule( "LayoutDefault", function () {
}
}
},
},
expandNode
:
function
(
ico
)
{
expandNode
:
function
(
ico
)
{
var
isExpand
=
ico
.
icon
.
switchState
();
var
isExpand
,
node
;
var
node
=
ico
.
icon
.
_node
;
if
(
ico
instanceof
MinderNode
)
{
node
=
ico
;
isExpand
=
node
.
getLayout
().
shicon
.
switchState
();
}
else
{
isExpand
=
ico
.
icon
.
switchState
();
node
=
ico
.
icon
.
_node
;
}
node
.
setData
(
"expand"
,
isExpand
);
var
_buffer
=
node
.
getChildren
();
var
_buffer
=
node
.
getChildren
();
var
_cleanbuffer
=
[];
var
_cleanbuffer
=
[];
...
...
src/module/layout.js
View file @
00505709
...
@@ -106,6 +106,9 @@ KityMinder.registerModule( "LayoutModule", function () {
...
@@ -106,6 +106,9 @@ KityMinder.registerModule( "LayoutModule", function () {
base
:
Command
,
base
:
Command
,
execute
:
function
(
km
,
node
)
{
execute
:
function
(
km
,
node
)
{
var
parent
=
km
.
getSelectedNode
();
var
parent
=
km
.
getSelectedNode
();
if
(
parent
.
getType
()
!==
"root"
&&
parent
.
getChildren
().
length
!==
0
&&
parent
.
getData
(
"expand"
)
===
false
)
{
km
.
expandNode
(
parent
);
}
km
.
appendChildNode
(
parent
,
node
);
km
.
appendChildNode
(
parent
,
node
);
km
.
select
(
node
,
true
);
km
.
select
(
node
,
true
);
return
node
;
return
node
;
...
@@ -129,7 +132,6 @@ KityMinder.registerModule( "LayoutModule", function () {
...
@@ -129,7 +132,6 @@ KityMinder.registerModule( "LayoutModule", function () {
node
.
setType
(
"main"
);
node
.
setType
(
"main"
);
km
.
appendChildNode
(
selectedNode
,
node
);
km
.
appendChildNode
(
selectedNode
,
node
);
}
else
{
}
else
{
node
.
setType
(
"sub"
);
km
.
appendSiblingNode
(
selectedNode
,
node
);
km
.
appendSiblingNode
(
selectedNode
,
node
);
}
}
km
.
select
(
node
,
true
);
km
.
select
(
node
,
true
);
...
@@ -203,29 +205,26 @@ KityMinder.registerModule( "LayoutModule", function () {
...
@@ -203,29 +205,26 @@ KityMinder.registerModule( "LayoutModule", function () {
this
.
initStyle
(
this
.
getRoot
()
);
this
.
initStyle
(
this
.
getRoot
()
);
}
}
},
},
'contextmenu'
:[
'contextmenu'
:
[
{
{
label
:
this
.
getLang
(
'node.appendsiblingnode'
),
label
:
this
.
getLang
(
'node.appendsiblingnode'
),
exec
:
function
()
{
exec
:
function
(){
this
.
execCommand
(
'appendsiblingnode'
,
new
MinderNode
(
this
.
getLang
(
'topic'
)
)
)
this
.
execCommand
(
'appendsiblingnode'
,
new
MinderNode
(
this
.
getLang
(
'topic'
)))
},
},
cmdName
:
'appendsiblingnode'
cmdName
:
'appendsiblingnode'
},
{
},
label
:
this
.
getLang
(
'node.appendchildnode'
),
{
exec
:
function
()
{
label
:
this
.
getLang
(
'node.appendchildnode'
),
this
.
execCommand
(
'appendchildnode'
,
new
MinderNode
(
this
.
getLang
(
'topic'
)
)
)
exec
:
function
(){
},
this
.
execCommand
(
'appendchildnode'
,
new
MinderNode
(
this
.
getLang
(
'topic'
)))
cmdName
:
'appendchildnode'
},
},
{
cmdName
:
'appendchildnode'
label
:
this
.
getLang
(
'node.removenode'
),
},
cmdName
:
'removenode'
{
},
{
label
:
this
.
getLang
(
'node.removenode'
),
divider
:
1
cmdName
:
'removenode'
}
},{
divider
:
1
}
],
],
"defaultOptions"
:
{
"defaultOptions"
:
{
"defaultlayoutstyle"
:
"default"
,
"defaultlayoutstyle"
:
"default"
,
"node"
:
{
"node"
:
{
...
...
src/module/select.js
View file @
00505709
...
@@ -93,7 +93,7 @@ KityMinder.registerModule( "Select", function () {
...
@@ -93,7 +93,7 @@ KityMinder.registerModule( "Select", function () {
var
lastDownNode
=
null
;
var
lastDownNode
=
null
;
return
{
return
{
"events"
:
{
"events"
:
{
mousedown
:
function
(
e
)
{
"normal.mousedown textedit.mousedown"
:
function
(
e
)
{
var
downNode
=
e
.
getTargetNode
();
var
downNode
=
e
.
getTargetNode
();
// 没有点中节点:
// 没有点中节点:
...
@@ -101,6 +101,7 @@ KityMinder.registerModule( "Select", function () {
...
@@ -101,6 +101,7 @@ KityMinder.registerModule( "Select", function () {
if
(
!
downNode
)
{
if
(
!
downNode
)
{
this
.
removeAllSelectedNodes
();
this
.
removeAllSelectedNodes
();
marqueeActivator
.
selectStart
(
e
);
marqueeActivator
.
selectStart
(
e
);
this
.
setStatus
(
'normal'
)
}
}
// 点中了节点,并且按了 shift 键:
// 点中了节点,并且按了 shift 键:
...
@@ -122,8 +123,8 @@ KityMinder.registerModule( "Select", function () {
...
@@ -122,8 +123,8 @@ KityMinder.registerModule( "Select", function () {
lastDownNode
=
downNode
;
lastDownNode
=
downNode
;
}
}
},
},
mousemove
:
marqueeActivator
.
selectMove
,
"normal.mousemove textedit.mousemove"
:
marqueeActivator
.
selectMove
,
mouseup
:
function
(
e
)
{
"normal.mouseup textedit.mouseup"
:
function
(
e
)
{
var
upNode
=
e
.
getTargetNode
();
var
upNode
=
e
.
getTargetNode
();
// 如果 mouseup 发生在 lastDownNode 外,是无需理会的
// 如果 mouseup 发生在 lastDownNode 外,是无需理会的
...
...
src/ui/widget.js
View file @
00505709
...
@@ -142,7 +142,7 @@
...
@@ -142,7 +142,7 @@
return
obj
.
root
()[
_prefix
+
className
].
apply
(
obj
.
root
(),
arguments
)
return
obj
.
root
()[
_prefix
+
className
].
apply
(
obj
.
root
(),
arguments
)
}
else
{
}
else
{
$el
&&
obj
.
root
(
$el
);
$el
&&
obj
.
root
(
$el
);
obj
.
init
&&
obj
.
init
(
!
options
||
$
.
isPlainObject
(
options
)
?
$
.
extend2
(
options
||
{},
obj
.
defaultOpt
||
{},
true
)
:
options
);
obj
.
init
&&
obj
.
init
(
utils
.
clonePlainObject
(
!
options
||
$
.
isPlainObject
(
options
)
?
$
.
extend2
(
options
||
{},
obj
.
defaultOpt
||
{},
true
)
:
options
)
);
try
{
try
{
obj
.
root
().
find
(
'a'
).
click
(
function
(
evt
)
{
obj
.
root
().
find
(
'a'
).
click
(
function
(
evt
)
{
evt
.
preventDefault
()
evt
.
preventDefault
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment