Actualización

This commit is contained in:
Xes
2025-04-10 12:36:07 +02:00
parent 1da7c3f3b9
commit 4aff98e77b
3147 changed files with 320647 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
kampfer.require('Component');
kampfer.require('events');
kampfer.require('Menu');
kampfer.require('dom');
kampfer.provide('mindMap.Window');
//TODO 构造器使用与menu相同的逻辑
kampfer.mindMap.Window = kampfer.Component.extend({
initializer : function(id) {
var type = kampfer.type(id),
that = this, scrollX, scrollY, x, y;
if(type === 'string') {
this._element = this._doc.getElementById(id);
this._id = id;
if(!this._element) {
this.render();
}
} else {
return;
}
this.beDraged = false;
kampfer.events.addListener(this._element, 'mousedown', function(event) {
scrollX = kampfer.dom.scrollLeft(that._element);
scrollY = kampfer.dom.scrollTop(that._element);
x = event.pageX;
y = event.pageY;
if(event.which === 1) {
//不存在map或已经开始拖拽不执行处理逻辑
if( !that.beDraged && kampfer.mindMap.map && event.target.getAttribute('role') === 'map') {
that.beDraged = true;
}
}
});
kampfer.events.addListener(this._element, 'mouseup', function(event) {
if(that.beDraged) {
that.beDraged = false;
return false;
}
});
kampfer.events.addListener(this._element, 'mousemove', function(event) {
if(that.beDraged) {
that.scrollLeft(scrollX + x - event.pageX);
that.scrollTop(scrollY + y - event.pageY);
return false;
}
});
kampfer.events.addListener(this._element, 'contextmenu', function(event) {
var role = event.target.getAttribute('role'),
scrollX = kampfer.mindMap.window.scrollLeft(),
scrollY = kampfer.mindMap.window.scrollTop();
var menu;
if(role === 'content' || role === 'caption' || role === 'node') {
menu = kampfer.mindMap.nodeContextMenu;
} else if(role === 'map') {
menu = kampfer.mindMap.contextMenu;
}
if(menu) {
menu.setPosition(event.pageX + scrollX, event.pageY + scrollY);
menu.show();
}
return false;
});
kampfer.events.addListener(this._element, 'click', function() {
kampfer.mindMap.contextMenu.hide();
kampfer.mindMap.nodeContextMenu.hide();
});
},
scrollLeft : function(offset) {
var offsetX = kampfer.dom.scrollLeft(this._element, offset);
if(typeof offsetX === 'number') {
return offsetX;
}
},
scrollTop : function(offset) {
var offsetY = kampfer.dom.scrollTop(this._element, offset);
if(typeof offsetY === 'number') {
return offsetY;
}
},
beDraged : null,
dispose : function() {
kampfer.mindMap.Window.superClass.dispose.apply(this);
kampfer.events.removeListener(this._element);
}
});