Drag and Drop problem
marek187 Dec 7, 2008 12:59 PMHello all together,
im trying to get the 'Drag and Drop' example running from the demo-site.
When i start my page, all is loaded but i cant drag.
The dragindicator does not start, nothing happens.
Here is my code.
DndBean.java
import java.util.ArrayList; public class DndBean { private ArrayList<Framework> containerPHP; private ArrayList<Framework> containerCF; private ArrayList<Framework> containerDNET; private ArrayList<Framework> frameworks; public ArrayList<Framework> getContainerCF() { return containerCF; } public void setContainerCF(ArrayList<Framework> containerCF) { this.containerCF = containerCF; } public ArrayList<Framework> getContainerDNET() { return containerDNET; } public void setContainerDNET(ArrayList<Framework> containerDNET) { this.containerDNET = containerDNET; } public ArrayList<Framework> getContainerPHP() { return containerPHP; } public void setContainerPHP(ArrayList<Framework> containerPHP) { this.containerPHP = containerPHP; } public ArrayList<Framework> getFrameworks() { if (frameworks == null) { initList(); } return frameworks; } public void setFrameworks(ArrayList<Framework> frameworks) { this.frameworks = frameworks; } public void moveFramework(Object fm, Object family) { ArrayList<Framework> target = null; if ("PHP".equals(family)) { target = containerPHP; } else if ("DNET".equals(family)) { target = containerDNET; } else if ("CF".equals(family)) { target = containerCF; } if (target != null) { int ind = frameworks.indexOf(fm); if (ind > -1) { target.add(frameworks.get(ind)); frameworks.remove(ind); } } } public String reset() { initList(); return null; } private void initList() { frameworks = new ArrayList<Framework>(); frameworks.add(new Framework("Flexible Ajax", "PHP")); frameworks.add(new Framework("ajaxCFC", "CF")); frameworks.add(new Framework("AJAXEngine", "DNET")); frameworks.add(new Framework("AjaxAC", "PHP")); frameworks.add(new Framework("MonoRail", "DNET")); frameworks.add(new Framework("wddxAjax", "CF")); frameworks.add(new Framework("AJAX AGENT", "PHP")); frameworks.add(new Framework("FastPage", "DNET")); frameworks.add(new Framework("JSMX", "CF")); frameworks.add(new Framework("PAJAJ", "PHP")); frameworks.add(new Framework("Symfony", "PHP")); frameworks.add(new Framework("PowerWEB", "DNET")); containerPHP = new ArrayList<Framework>(); containerCF = new ArrayList<Framework>(); containerDNET = new ArrayList<Framework>(); } }
EventBean.java
import org.richfaces.component.Dropzone; import org.richfaces.event.DropEvent; import org.richfaces.event.DropListener; public class EventBean implements DropListener { private gwkinfo.DndBean dndBean; public void processDrop(DropEvent dropEvent) { Dropzone dropzone = (Dropzone) dropEvent.getComponent(); dndBean.moveFramework(dropEvent.getDragValue(),dropzone.getDropValue()); } public gwkinfo.DndBean getDndBean() { return dndBean; } public void setDndBean(gwkinfo.DndBean dndBean) { this.dndBean = dndBean; } }
Framework.java
public class Framework { private String name; private String family; public String getFamily() { return family; } public void setFamily(String family) { this.family = family; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Framework(String name, String family) { super(); this.name = name; this.family = family; } }
And my dnd.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <style> .panelc { width:25%; vertical-align:top; } .dropTargetPanel { width: 90%; } .footerClass { text-align: center; padding-top: 5px; } </style> <rich:dragIndicator id="indicator"/> <h:form id="form"> <h:panelGrid columnClasses="panelc" columns="4" width="100%"> <rich:panel style="width:133px"> <f:facet name="header"> <h:outputText value="Source List" /> </f:facet> <h:dataTable id="src" columns="1" value="#{dndBean.frameworks}" var="fm" footerClass="footerClass"> <h:column> <a4j:outputPanel style="width:100px;border:1px solid gray;padding:2px" layout="block"> <rich:dragSupport dragIndicator=":indicator" dragType="#{fm.name}" dragValue="#{fm}"> <rich:dndParam name="label" value="#{fm.name}" /> </rich:dragSupport> <h:outputText value="#{fm.name}"></h:outputText> </a4j:outputPanel> </h:column> <f:facet name="footer"> <a4j:commandButton action="#{dndBean.reset}" value="Start Over" reRender="src,phptable,cftable,dnettable"/> </f:facet> </h:dataTable> </rich:panel> <rich:panel styleClass="dropTargetPanel"> <f:facet name="header"> <h:outputText value="PHP Frameworks" /> </f:facet> <rich:dropSupport id="php" acceptedTypes="PHP" dropValue="PHP" dropListener="#{eventBean.processDrop}" reRender="phptable, src"> </rich:dropSupport> <h:dataTable id="phptable" columns="1" value="#{dndBean.containerPHP}" var="fm"> <h:column> <h:outputText value="#{fm.name}"></h:outputText> </h:column> </h:dataTable> </rich:panel> <rich:panel styleClass="dropTargetPanel"> <f:facet name="header"> <h:outputText value=".NET Frameworks" /> </f:facet> <rich:dropSupport id="dnet" acceptedTypes="DNET" dropValue="DNET" dropListener="#{eventBean.processDrop}" reRender="dnettable, src"> </rich:dropSupport> <h:dataTable id="dnettable" columns="1" value="#{dndBean.containerDNET}" var="fm"> <h:column> <h:outputText value="#{fm.name}"></h:outputText> </h:column> </h:dataTable> </rich:panel> <rich:panel styleClass="dropTargetPanel"> <f:facet name="header"> <h:outputText value="ColdFusion Frameworks" /> </f:facet> <rich:dropSupport id="cf" acceptedTypes="CF" dropValue="CF" dropListener="#{eventBean.processDrop}" reRender="cftable, src"> </rich:dropSupport> <h:dataTable id="cftable" columns="1" value="#{dndBean.containerCF}" var="fm"> <h:column> <h:outputText value="#{fm.name}"></h:outputText> </h:column> </h:dataTable> </rich:panel> </h:panelGrid> </h:form> <a4j:outputPanel ajaxRendered="true"> <h:messages></h:messages> </a4j:outputPanel> </ui:composition>
What im doing wrong? I need help!
Im using Richfaces 3.3.0 Beta 2
In my faces.config.xml is this code for my Beans:
<managed-bean> <managed-bean-name>fm</managed-bean-name> <managed-bean-class>gwkinfo.Framework</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>eventBean</managed-bean-name> <managed-bean-class>gwkinfo.EventBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>dndBean</managed-bean-name> <managed-bean-class>gwkinfo.DndBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
Thank you in advanced.
Leila