2 Replies Latest reply on Oct 21, 2009 2:31 PM by webera

    droplistener not called

    webera

      Hi,

      I tried to test the drag'n'drop support of rich faces. As far as I can see there is everything like in the examples from the documentation but the dropListener is not called.

      <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
      <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
      <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
      <!-- RichFaces tag library declaration -->
      <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
      <%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
      
      <html>
       <head>
       <title>DnD Test</title>
       </head>
       <body>
       <f:view>
       <rich:dragIndicator id="indicator" />
       <rich:scrollableDataTable value="#{cars.allCars}" var="car" id="cartable"
       frozenColCount="1"
       first="0"
       rows="5"
       width="300px"
       height="396px">
      
       <rich:column width="150px">
       <f:facet name="header" >
       <h:outputText value="Name"/>
       </f:facet>
      
       <a4j:outputPanel>
       <!-- Drag support for car.name -->
       <rich:dragSupport dragIndicator=":indicator" id="carDrag" dragType="carname" dragValue="#{car}">
       <rich:dndParam name="label" value="#{car.name}"/>
       </rich:dragSupport>
      
       <h:outputText id="cn" value="#{car.name}"/>
       </a4j:outputPanel>
      
       <f:facet name="footer">
       <h:outputText value="Name"/>
       </f:facet>
       </rich:column>
      
       <rich:column width="150px">
       <f:facet name="header">
       <h:outputText value="Price"/>
       </f:facet>
      
       <h:outputText value="#{car.price}"/>
      
       <f:facet name="footer" >
       <h:outputText value="Price"/>
       </f:facet>
       </rich:column>
       </rich:scrollableDataTable>
      
       <rich:panel id="dropPanel" style="width:100px;height:100px;">
       <f:facet name="header">
       <h:outputText value="Drop box" />
       </f:facet>
      
       <!-- Drop support for car.name -->
       <rich:dropSupport acceptedTypes="carname" dropValue="carname" reRender="cartable" dropListener="#{cars.processDrop}">
       </rich:dropSupport>
       </rich:panel>
      
      
       <rich:panel id="noDropPanel" style="width:100px;height:100px;">
       <f:facet name="header">
       <h:outputText value="No Drop box" />
       </f:facet>
      
       <!-- Drop support for car.name -->
       <rich:dropSupport acceptedTypes="noname"></rich:dropSupport>
       </rich:panel>
      
       </f:view>
       </body>
      </html>
      

      The java-code
      package handler;
      
      import java.util.ArrayList;
      import javax.faces.context.FacesContext;
      import org.richfaces.event.DropEvent;
      import org.richfaces.event.DropListener;
      
      public class DDTestHandler implements org.richfaces.event.DropListener {
      
       private ArrayList<Car> cars = null;
      
       public DDTestHandler() {
       cars = new ArrayList<Car>();
       cars.add(new Car("BMW Z3", 13000.0));
       cars.add(new Car("Audi Q7", 48000.0));
       }
      
       public ArrayList<Car> getAllCars() {
       return cars;
       }
       public void setAllCars(ArrayList<Car> cars) {}
      
      
       public void processDrop(DropEvent event) {
       FacesContext context = FacesContext.getCurrentInstance();
      
       cars.add(new Car("VW Polo", 8000.0));
       System.out.println("Registered DROP!!");
       }
      }
      ----------------------------------------------------
      package handler;
      
      public class Car {
       private String name;
       private Double price;
      
       public void setName(String name) { this.name = name; }
       public String getName() { return name; }
      
       public void setPrice(Double price) { this.price = price; }
       public Double getPrice() { return price; }
      
       public Car(String name, Double price) {
       this.name = name;
       this.price = price;
       }
      }
      


      cars is a DDTestHandler and has application scope