`
- 浏览:
86386 次
- 性别:
- 来自:
广州
-
ext portal+dwr+spring实现个性主页面拖拉效果的核心代码
-
个性化主页设置,左边是一棵树,左边是一个portal.点击树加载到portal中去,实现了与数据库的交互.
-
ccom.dzf.indexset=
function
(config){
-
Ext.apply(
this
,config);
-
this
.init();
-
};
-
Ext.extend(com.dzf.indexset,Ext.util.Observable,{
-
init:
function
(){
-
this
.createWin();
-
},
-
createWin:
function
(){
-
var
proxy=
this
;
-
var
win=
new
Ext.Window({
-
height:450,
-
width:800,
-
items:[{
-
xtype:
'tabpanel'
,
-
border:
false
,
-
activeTab:0,
-
defaults:{
-
height:380
-
},
-
items:[{
-
title:
'主页设置'
,
-
layout:
'column'
,
-
border:
false
,
-
items:[{
-
columnWidth:.2,
-
title:
'模块列表'
,
-
defaults:{
-
height:380
-
},
-
items:[
this
.getTree()]
-
},{
-
xtype:
'portal'
,
-
columnWidth:.8,
-
id:
'portalset'
,
-
defaults:{
-
height:380
-
}
-
}]
-
},{
-
title:
'设置密码'
-
}]
-
}],
-
buttons:[{
-
text:
'确定'
,
-
handler:
function
(){
-
win.close();
-
var
portal=Ext.getCmp(proxy.panelid);
-
-
items=portal.items.items[0].destroy();
-
-
-
-
-
-
-
-
-
new
com.dzf.index({
-
panelid:
'center-panel'
,
-
margins:
'35555'
,
-
style:
'padding:0px10px0px10px'
-
});
-
}
-
}]
-
});
-
win.show();
-
},
-
getTree:
function
(){
-
var
tree=
new
Ext.tree.TreePanel({
-
border:
false
,
-
onlyLeafCheckable:
false
,
-
checkModel:
"multiple"
,
-
id:
'tree'
,
-
autoScroll:
true
,
-
enableDD:
false
,
-
containerScroll:
true
,
-
rootVisible:
false
,
-
loader:
new
Ext.tree.DWRTreeLoader({
-
dwrCall:indexportalService.getUserModule,
-
getParams:
function
(node){
-
return
{};
-
},
-
baseAttrs:{
-
uiProvider:Ext.tree.TreeCheckNodeUI
-
}
-
}),
-
tools:[{
-
id:
'refresh'
,
-
handler:
function
(){
-
var
tree=Ext.getCmp(
'extExample-tree-checkboxTree'
);
-
tree.root.reload();
-
tree.body.mask(
'数据加载中……'
,
'x-mask-loading'
);
-
tree.root.expand(
true
,
false
,
function
(){
-
tree.body.unmask();
-
indexportalService.getPortalColumns(com.dzf.indexset.prototype.BuildPortColumn);
-
});
-
}
-
}]
-
});
-
-
var
root=
new
Ext.tree.AsyncTreeNode({
-
text:
'根'
,
-
draggable:
false
-
});
-
-
tree.setRootNode(root);
-
root.expand(
true
,
false
,
function
(){
-
indexportalService.getPortalColumns(com.dzf.indexset.prototype.BuildPortColumn);
-
});
-
-
-
-
treeCheckAction=
function
(node,checked){
-
var
id=node.id;
-
var
title=node.text;
-
var
portlet=Ext.getCmp(id+
"set"
);
-
if
(checked){
-
if
(portlet){
-
return
;
-
}
-
var
count=0;
-
var
portal=Ext.getCmp(
"portalset"
).items.items;
-
for
(
var
i=0;i<portal.length;i++){
-
var
p=portal[i].items.items;
-
for
(
var
j=0;j<p.length;j++){
-
count++;
-
}
-
}
-
if
(count<=4){
-
var
order=0;
-
var
parent=Ext.getCmp(
"portalcolumn"
+node.attributes.userid
-
+node.attributes.modulecolumn+
"set"
);
-
var
panel=
new
Ext.ux.Portlet({
-
id:id+
"set"
,
-
title:title
-
});
-
if
(!parent){
-
parent=Ext.getCmp(
"portalset"
).items.items[0];
-
}
-
parent.add(panel);
-
parent.doLayout();
-
order=parent.items.items.length-1;
-
var
params={
-
id:id,
-
order:order,
-
columnwidth:parent.columnWidth
-
};
-
indexportalService.savePortlet(params);
-
}
else
{
-
node.ui.checkbox.checked=
false
;
-
Ext.MessageBox.alert(
"提示"
,
"你最多能选择5个!"
)
-
}
-
}
else
{
-
com.dzf.indexset.prototype.removePorlet(portlet);
-
}
-
}
-
tree.on(
"check"
,treeCheckAction,
this
);
-
return
tree;
-
},
-
tools:[{
-
id:
'close'
,
-
handler:
function
(e,target,panel){
-
com.dzf.indexset.prototype.removePorlet(panel);
-
}
-
}],
-
removePorlet:
function
(panel){
-
-
-
-
-
var
id=panel.id;
-
var
columnid=panel.ownerCt.id;
-
var
params={
-
id:id,
-
columnid:columnid
-
};
-
-
indexportalService.removePorlet(params,
function
(data){
-
var
json=Ext.util.JSON.decode(data);
-
if
(json.success){
-
var
id=panel.id;
-
var
parent=panel.ownerCt;
-
parent.remove(panel,
true
);
-
parent.doLayout();
-
if
(id.indexOf(
"set"
)>0)
-
id=id.substring(0,id.indexOf(
"set"
));
-
Ext.getCmp(
"tree"
).getNodeById(id).ui.checkbox.checked=
false
;
-
}
else
{
-
Ext.Msg.alert(
'WebMessage'
,panel.title+
'删除失败!'
);
-
}
-
});
-
-
-
-
-
},
-
BuildPortColumn:
function
(data){
-
var
jsonData=Ext.util.JSON.decode(data);
-
for
(
var
i=0;i<jsonData.length;i++){
-
var
columnid=jsonData[i].fuserprocolumn_id+
"set"
;
-
var
columnwidth=jsonData[i].fuserprocolumn_width/100;
-
var
portal=Ext.getCmp(
"portalset"
);
-
var
PortalColumn=
new
Ext.ux.PortalColumn({
-
id:columnid,
-
columnWidth:columnwidth,
-
style:
'padding:10px010px10px'
,
-
defaults:{
-
tools:com.dzf.indexset.prototype.tools,
-
height:60
-
}
-
});
-
portal.add(PortalColumn);
-
portal.doLayout();
-
}
-
indexportalService
-
.getPortalPortlet(com.dzf.indexset.prototype.BuildPortletSet);
-
},
-
BuildPortletSet:
function
(data){
-
var
jsonData=Ext.util.JSON.decode(data);
-
for
(
var
i=0;i<jsonData.length;i++){
-
var
columnid=jsonData[i].fuserprocolumn_id+
"set"
;
-
var
id=jsonData[i].modelcode+
"set"
;
-
var
title=jsonData[i].modelname;
-
var
order=jsonData[i].fuserprofile_order;
-
var
parent=Ext.getCmp(columnid);
-
if
(!parent){
-
parent=Ext.getCmp(
"portalset"
).items.items[0];
-
}
-
var
panel=
new
Ext.ux.Portlet({
-
id:id,
-
title:title
-
});
-
parent.add(panel);
-
parent.doLayout();
-
if
(id.indexOf(
"set"
)>0)
-
id=id.substring(0,id.indexOf(
"set"
));
-
Ext.getCmp(
"tree"
).getNodeById(id).ui.checkbox.checked=
true
;
-
}
-
}
-
})
-
-
-
protal源码改了下可以进行移动保存
-
-
Ext.ux.Portlet=Ext.extend(Ext.Panel,{
-
anchor:
'100%'
,
-
collapsible:
true
,
-
draggable:
true
,
-
cls:
'x-portlet'
-
});
-
Ext.reg(
'portlet'
,Ext.ux.Portlet);
-
-
Ext.ux.PortalColumn=Ext.extend(Ext.Container,{
-
layout:
'anchor'
,
-
autoEl:
'div'
,
-
defaultType:
'portlet'
,
-
cls:
'x-portal-column'
-
});
-
Ext.reg(
'portalcolumn'
,Ext.ux.PortalColumn);
-
-
Ext.ux.Portal=Ext.extend(Ext.Panel,{
-
layout:
'column'
,
-
autoScroll:
true
,
-
cls:
'x-portal'
,
-
defaultType:
'portalcolumn'
,
-
-
initComponent:
function
(){
-
Ext.ux.Portal.superclass.initComponent.call(
this
);
-
this
.addEvents({
-
validatedrop:
true
,
-
beforedragover:
true
,
-
dragover:
true
,
-
beforedrop:
true
,
-
drop:
true
-
});
-
},
-
-
initEvents:
function
(){
-
Ext.ux.Portal.superclass.initEvents.call(
this
);
-
this
.dd=
new
Ext.ux.Portal.DropZone(
this
,
-
this
.dropConfig);
-
},
-
-
beforeDestroy:
function
(){
-
if
(
this
.dd){
-
this
.dd.unreg();
-
}
-
Ext.ux.Portal.superclass.beforeDestroy.call(
this
);
-
}
-
});
-
Ext.reg(
'portal'
,Ext.ux.Portal);
-
-
Ext.ux.Portal.DropZone=
function
(portal,cfg){
-
this
.portal=portal;
-
Ext.dd.ScrollManager.register(portal.body);
-
Ext.ux.Portal.DropZone.superclass.constructor.call(
this
,
-
portal.bwrap.dom,cfg);
-
portal.body.ddScrollConfig=
this
.ddScrollConfig;
-
};
-
-
Ext.extend(Ext.ux.Portal.DropZone,Ext.dd.DropTarget,{
-
ddScrollConfig:{
-
vthresh:50,
-
hthresh:-1,
-
animate:
true
,
-
increment:200
-
},
-
-
createEvent:
function
(dd,e,data,col,c,pos){
-
return
{
-
portal:
this
.portal,
-
panel:data.panel,
-
columnIndex:col,
-
column:c,
-
position:pos,
-
data:data,
-
source:dd,
-
rawEvent:e,
-
status:
this
.dropAllowed
-
};
-
},
-
-
notifyOver:
function
(dd,e,data){
-
var
xy=e.getXY(),portal=
this
.portal,px=dd.proxy;
-
-
-
if
(!
this
.grid){
-
this
.grid=
this
.getGrid();
-
}
-
-
-
var
cw=portal.body.dom.clientWidth;
-
if
(!
this
.lastCW){
-
this
.lastCW=cw;
-
}
else
if
(
this
.lastCW!=cw){
-
this
.lastCW=cw;
-
portal.doLayout();
-
this
.grid=
this
.getGrid();
-
}
-
-
-
var
col=0,xs=
this
.grid.columnX,cmatch=
false
;
-
for
(
var
len=xs.length;col<len;col++){
-
if
(xy[0]<(xs[col].x+xs[col].w)){
-
cmatch=
true
;
-
break
;
-
}
-
}
-
-
if
(!cmatch){
-
col--;
-
}
-
-
-
var
p,match=
false
,pos=0,c=portal.items.itemAt(col),items=c.items.items;
-
-
for
(
var
len=items.length;pos<len;pos++){
-
p=items[pos];
-
var
h=p.el.getHeight();
-
if
(h!==0&&(p.el.getY()+(h/2))>xy[1]){
-
match=
true
;
-
break
;
-
}
-
}
-
-
var
overEvent=
this
.createEvent(dd,e,data,col,c,match&&p
-
?pos
-
:c.items.getCount());
-
-
if
(portal.fireEvent(
'validatedrop'
,overEvent)!==
false
-
&&portal.fireEvent(
'beforedragover'
,overEvent)!==
false
){
-
-
-
px.getProxy().setWidth(
'auto'
);
-
-
if
(p){
-
px.moveProxy(p.el.dom.parentNode,match?p.el.dom:
null
);
-
}
else
{
-
px.moveProxy(c.el.dom,
null
);
-
}
-
-
this
.lastPos={
-
c:c,
-
col:col,
-
p:match&&p?pos:
false
-
};
-
this
.scrollPos=portal.body.getScroll();
-
-
portal.fireEvent(
'dragover'
,overEvent);
-
-
return
overEvent.status;;
-
}
else
{
-
return
overEvent.status;
-
}
-
-
},
-
-
notifyOut:
function
(){
-
delete
this
.grid;
-
},
-
-
notifyDrop:
function
(dd,e,data){
-
delete
this
.grid;
-
if
(!
this
.lastPos){
-
return
;
-
}
-
var
c=
this
.lastPos.c,col=
this
.lastPos.col,pos=
this
.lastPos.p;
-
-
var
dropEvent=
this
.createEvent(dd,e,data,col,c,pos!==
false
-
?pos
-
:c.items.getCount());
-
-
if
(
this
.portal.fireEvent(
'validatedrop'
,dropEvent)!==
false
-
&&
this
.portal.fireEvent(
'beforedrop'
,dropEvent)!==
false
){
-
-
dd.proxy.getProxy().remove();
-
dd.panel.el.dom.parentNode.removeChild(dd.panel.el.dom);
-
if
(pos!==
false
){
-
c.insert(pos,dd.panel);
-
}
else
{
-
c.add(dd.panel);
-
}
-
-
-
-
-
var
index=0;
-
var
portletId=dd.panel.id;
-
if
(pos!=
false
){
-
var
portlets=c.items;
-
for
(
var
i=0;i<portlets.length;i++){
-
if
(c.items.itemAt(i).id===portletId){
-
index=i;
-
break
;
-
}
-
}
-
}
else
{
-
if
(pos.toString()==
'0'
){
-
index=0;
-
}
else
{
-
index=c.items.length-1;
-
}
-
}
-
-
c.doLayout();
-
-
-
var
params={
-
id:dd.panel.id,
-
columnid:c.id,
-
forder:index
-
};
-
indexportalService.movePortlet(params);
-
-
this
.portal.fireEvent(
'drop'
,dropEvent);
-
-
-
var
st=
this
.scrollPos.top;
-
if
(st){
-
var
d=
this
.portal.body.dom;
-
setTimeout(
function
(){
-
d.scrollTop=st;
-
},10);
-
}
-
-
}
-
delete
this
.lastPos;
-
},
-
-
-
getGrid:
function
(){
-
var
box=
this
.portal.bwrap.getBox();
-
box.columnX=[];
-
this
.portal.items.each(
function
(c){
-
box.columnX.push({
-
x:c.el.getX(),
-
w:c.el.getWidth()
-
});
-
});
-
return
box;
-
},
-
-
-
unreg:
function
(){
-
-
Ext.ux.Portal.DropZone.superclass.unreg.call(
this
);
-
}
-
});
-
-
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
"EXT2+DWR+SPRING实现树"这个项目很可能是结合了这三个技术来构建一个Web应用,其中EXT2可能被用作服务器端的文件系统,用于存储和管理数据。DWR则作为前端与后端交互的桥梁,使得JavaScript可以实时获取和更新...
这个名为"ext2.0+Hibernate+dwr+spring列子"的项目,就是一个很好的实例,展示了如何将这些技术结合在一起,实现一个基础的CRUD(创建、读取、更新、删除)操作。下面我们将详细探讨这些技术及其相互作用。 首先,...
公文管理、申请审批、公告管理、会议管理、权限管理、个人办公、客户管理、人事等等。项目技术:Struts1.2 + Hibernate3.0 + Spring2 +DWR。java毕业设计 jsp毕业设计 ssh毕业设计
这个案例中,EXT 提供了丰富的用户界面组件,DWR (Direct Web Remoting) 实现了浏览器与服务器之间的异步通信,而Spring框架则作为整个应用的依赖注入和管理核心。 EXT 是一个JavaScript库,它提供了大量的可定制的...
这个"ext+Json+dwr+spring+hibernate整合项目实例与资源"就是一个典型的案例,它展示了如何将这五个关键技术融合在一起,以实现一个功能强大的前端和后端交互系统。让我们详细探讨这些技术及其整合方式。 1. **...
EXT2.0、DWR和Spring Framework是Java开发领域中的三个关键技术和框架,它们在构建高效、可扩展的Web应用程序中发挥着重要作用。下面将详细解释这三个技术,并探讨它们在实际开发中的应用。 EXT2.0是EXT JS的一个...
EXT + DWR + Struts + Hibernate + Spring 是一个经典的Java Web开发框架组合,它们共同构建了一个强大、灵活且高效的Web应用程序。以下是对这些技术及其在Demo中的应用的详细解释: 1. **EXT**:EXT(现称为Sencha...
【标题】"Ext+dwr+spring做的例子程序"是一个整合了三个关键技术的示例应用,主要展示了如何在Java Web开发中结合使用EXTJS(Ext)前端框架、Direct Web Remoting (DWR) 和Spring框架。这三个技术在现代企业级应用...
Struts2、Hibernate、Spring 和 DWR 是四个在Java Web开发中非常重要的框架,它们各自在不同的领域提供了强大的功能,并且能够通过整合实现更高效、更灵活的应用开发。接下来,我们将详细探讨这些技术以及它们如何...
本项目实例是关于"ext+json+dwr+spring+hibernate"的整合,这是一个常见的技术栈组合,用于创建功能丰富的Web应用程序。下面将详细解释这些技术及其整合方式。 1. **EXT**:EXT是一个基于JavaScript的富客户端框架...
"ext2.0+Hibernate+dwr+spring列子" 文件可能是项目的源代码,包含了具体实现这些技术集成的示例代码。 现在,让我们深入探讨一下这些技术: 1. **Ext JS(ext2)**:这是一个用于构建富互联网应用程序(RIA)的...
《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是疯狂Java体系丛书之一,前8章基本以XHTML、JavaScript和DOM编程为主,无须任何基础即可阅读;第9章以后的内容则需要掌握Spring、Hibernate等Java ...
本系统采用经典的SSH(Struts1.2、Hibernate3.0、Spring2)框架与DWR(Direct Web Remoting)技术进行构建,实现了后端与前端的高效交互。 **Struts1.2** 是一款基于MVC(Model-View-Controller)设计模式的Java ...
这个名为“ssh+ext+json+dwr技术实现的动态树”的项目结合了这些技术,为我们提供了一个生动的示例,展示了如何在实际项目中有效地整合它们。 SSH(Spring、Struts、Hibernate)是Java Web开发的三大框架,它们各自...
《Spring+Ext+DWR整合应用详解:用户管理与实战》 在当今的Web开发领域,Spring、Ext和Direct Web Remoting (DWR) 是三种非常重要的技术,它们各自在不同的层面发挥着关键作用。Spring作为Java企业级应用的框架,...
Struts2、Hibernate、Spring 和 DWR 是四个在 Java Web 开发中广泛应用的框架和技术,它们结合在一起可以构建高效、可维护的用户注册系统。以下是对这些技术的详细解释及其在用户注册中的应用: 1. **Struts2**:这...
SpringBoot 毕业设计,SpringBoot 课程设计,基于SpringBoot+Vue开发的,含有代码注释,新手也可看懂。ssm整合开发,小程序毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:...
Struts2、Spring、Hibernate和DWR是Java Web开发中常用的四大框架,它们各自负责不同的功能,协同工作能构建出高效、灵活的企业级应用。在这个小实例中,开发者结合这四个框架来展示了一个完整的后端架构。 Struts2...
具体来说,`dwrproxy.js`可能是这个示例的核心文件,它实现了EXT和DWR之间的代理配置和通信。 在EXT中,DWR通常被用来作为后端数据源,为EXT的组件如Grid、Tree或Form提供数据。`dwrproxy.js`文件可能包含了以下...