0
如何實現使用帶有背景標尺/圖形的richfaces拖放組件以獲得確切的座標。如何實現使用具有背景標尺/圖形的richfaces拖放組件以獲得確切的座標
使用了下面的代碼添加組件(拖/放)在面板
<h:panelGrid columns="4" styleClass="main-tab-panel" style="width:1000px;height: 300px ">
<!-- Draggable components which can be dragged and dropped in Drop zones -->
<rich:simpleTogglePanel switchType="client" style="height:500px" bodyClass="rich-laguna-panel-no-header">
<rich:tabPanel selectedTab="createForm" style="background-color:#{richSkin.tabBackgroundColor};width:110px;">
<rich:tab id="createForm" >
<f:facet name="label"><h:outputText value="Add Fields"/></f:facet>
<rich:dataGrid id="srcTable" columns="1" value="#{dragDropService.sourceComponents}" var="_srcComponent">
<rich:column styleClass="fdAddButton">
<a:outputPanel style="width:128px;"
onmouseover="this.style.cursor='move'" layout="block">
<rich:dragSupport dragIndicator="indicator"
dragType="DRAG_COMPONENT" dragValue="#{_srcComponent}">
<rich:dndParam id="test" name="label" value="#{_srcComponent.displayName}" />
</rich:dragSupport>
<h:outputText value="#{_srcComponent.fieldName}" styleClass="fdAddButton" onmouseover="this.className='fdAddButton-act'" onmouseout="this.className='fdAddButton'"></h:outputText>
</a:outputPanel>
</rich:column>
</rich:dataGrid>
</rich:tab>
</rich:tabPanel>
</rich:simpleTogglePanel>
<rich:panel id="ctrlPanel" style="width:1000px;height:500px;">
<f:facet name="header"><h:outputText value="Drop Zone "/></f:facet>
<rich:separator></rich:separator>
<rich:dropSupport acceptedTypes="DRAG_COMPONENT" dropValue="" dropListener="#{dragDropService.processDrop}" reRender="dropTable,srcTable">
</rich:dropSupport>
<h:panelGroup id="dropTable" binding="#{dragDropService.panelGroup}">
</h:panelGroup>
我嘗試使用下面的代碼來獲取座標:
//<![CDATA[
function getOffset(){
//parent - panel Grid
var parent = document.getElementById('contentForm:dropTable');
parentObject=parent.getBoundingClientRect();
var parentTop=parentObject.top;
var parentLeft=parentObject.left;
var positions = new Array();
var delimitedValues;
var child = parent.getElementsByTagName('table');
var name = parent.getElementsByTagName('label');
for(i = 0 ; i <= child.length - 1; i++){
var component = child.item(i);
rectObject = component.getBoundingClientRect();
var childTop=rectObject.top-parentTop;
var childLeft=rectObject.left-parentLeft;
var field = name.item(i).innerHTML;
positions.push([childTop,childLeft,field]);
delimitedValues = positions.join("|");
alert(delimitedValues+" delimitedValues");
}
document.getElementById('contentForm:childOffset').value = delimitedValues;
}
//]]>
當我們拖放時組件會重疊。 雖然我在現有組件旁邊拖動新組件,但組件不是並排放置的。 如何達到這些標準。
你能解釋你想做什麼嗎?這不是很清楚。你拖動一個元素,當你放下它時,你想知道鼠標的位置? – Makhiel
首先,我需要獲取被拖動的組件位置,而不是鼠標位置。我能夠得到這個使用JavaScript片段,我已經在上面添加。但問題是我無法將組件放置在屏幕的任何位置。目前,無論我拖動組件,它們都垂直放置,即1個在另一個下面。 – user3069111
所以你想拖動組件,當你放下它時,你希望它保持在現場,它被丟棄了? – Makhiel