1 Reply Latest reply on Apr 7, 2009 7:59 AM by Ilya Shaikovsky

    problem regarding model panel

    madhu reddy Newbie

      Hi all...

      I am facing the problem ExtendedDataTable with MODAL PANEL.In the ExtendedDataTable I am using context menu for selecting EDIT,NEW,DELETE buttons. I used MODAL PANEL for edit the selected Row object,But it displays previous rowobject not displays current row object in the modelpanel.
      i want the modalPannel to display the current row object .
      I am sending all files(xhtml and java)

      thanks in advance

      <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:s="http://jboss.com/products/seam/taglib"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:rich="http://richfaces.org/rich"

      xmlns:a="http://richfaces.org/a4j"
      template="layout/template.xhtml">

      <ui:define name="body">

      <rich:panel>
      <f:facet name="header">Countries</f:facet>



      <h:form id="countryListForm" styleClass="edit">

      <rich:contextMenu submitMode="server" id="m" attached="false">

      <rich:menuItem action="#{countryS.selectCountry}"

      value="Edit: {param}" submitMode="ajax" immediate="true"

      actionListener="#{countryS.actionListener}" icon="/img/ico_edit.gif"

      oncomplete="javascript:Richfaces.showModalPanel('countryListForm:_panel2');">

      <a:actionparam assignTo="#{countryS.param}" name="param" value="{param}">

      </a:actionparam>

      </rich:menuItem>

      <rich:menuSeparator id="menuSeparator1" />

      <rich:menuItem action="#{countryS.delete}"

      value="Delete: {param}" submitMode="ajax" immediate="true"

      actionListener="#{countryS.actionListener}" icon="/img/ico_delete.gif">

      <a:actionparam assignTo="#{countryS.param}" name="param"

      value="{param}">

      </a:actionparam>

      </rich:menuItem>

      <rich:menuSeparator id="menuSeparator2" />

      <rich:menuItem action="#{countryS.new}"

      value="New" submitMode="ajax" immediate="true"

      actionListener="#{countryS.actionListener}" icon="/img/ico_new.gif">

      </rich:menuItem>

      </rich:contextMenu>

      <h:outputText value="The country search returned no results."
      rendered="countries != null and countries.rowCount==0}"/>
      <rich:extendedDataTable id="countryListTable" var="_country"

      selectionMode="single" height="190px"

      value="#{countries}"

      rendered="#{countries.rowCount > 0}">

      <rich:column id="regionCode" width="140px" sortable="true"

      sortBy="#{_country.region.regionCode}"

      filterBy="#{_country.region.regionCode}"

      filterEvent="onkeyup" label="Region Code">

      <f:facet name="header">

      <h:outputText styleClass="headerText" value="Region Code"/>

      </f:facet>

      <h:outputText value="#{_country.region.regionCode}"/>

      </rich:column>

      <rich:column id="countryCode" width="140px" sortable="true"

      sortBy="#{_country.countryCode}"

      filterBy="#{_country.countryCode}"

      filterEvent="onkeyup" label="Country Code">

      <f:facet name="header">

      <h:outputText styleClass="headerText" value="Country Code"/>

      </f:facet>

      <h:outputText value="#{_country.countryCode}"/>

      </rich:column>

      <rich:column id="countryName" width="150px" sortable="true"

      sortBy="#{_country.name}"

      filterBy="#{_country.name}"

      filterEvent="onkeyup" label="Country Name">

      <f:facet name="header">

      <h:outputText styleClass="headerText" value="Country Name"/>

      </f:facet>

      <h:outputText value="#{_country.name}"/>

      </rich:column>

      <rich:column id="countryFActive" width="100px" sortable="true"

      sortBy="#{_country.FActive}" label="Active">

      <f:facet name="header">

      <h:outputText styleClass="headerText" value="Active"/>

      </f:facet>

      <h:outputText value="#{_country.FActive}"/>

      <rich:componentControl event="oncontextmenu" attachTo="regionCode,countryCode,countryName,countryFActive" for=":countryListForm:m"

      operation="doShow">

      <f:param name="param" value="#{_country.countryId}"></f:param>

      </rich:componentControl>

      </rich:column>

      </rich:extendedDataTable>

      <rich:modalPanel height="400" top="100" width="600" id="_panel2" controlsClass="pointerCursor" zindex="500">

      <rich:panel>

      <f:facet name="header">Country</f:facet>

      <s:decorate id="countryCodeField" template="layout/edit.xhtml">

      <ui:define name="label">Country code</ui:define>

      <h:inputText id="countryCode"

      required="true"

      size="5"

      maxlength="5"

      value="#{country.countryCode}">

      <a:support event="onblur" reRender="countryCodeField" bypassUpdates="true" ajaxSingle="true"/>

      </h:inputText>

      </s:decorate>

      <s:decorate id="regionField" template="layout/edit.xhtml">

      <ui:define name="label">Region</ui:define>

      <h:selectOneMenu value="#{country.region}" required="true" id="region">

      <s:selectItems value="#{regiones}" var="region" label="#{region.name}" noSelectionLabel="Please Select..."/>

      <s:convertEntity />

      </h:selectOneMenu>

      </s:decorate>

      <s:decorate id="nameField" template="layout/edit.xhtml">

      <ui:define name="label">Name</ui:define>

      <h:inputText id="name"

      required="true"

      size="50"

      maxlength="100"

      value="#{country.name}">

      <a:support event="onblur" reRender="nameField" bypassUpdates="true" ajaxSingle="true"/>

      </h:inputText>

      </s:decorate>

      <s:decorate id="FActiveField" template="layout/edit.xhtml">

      <ui:define name="label">F active</ui:define>

      <h:inputText id="FActive"

      required="true"

      size="2"

      maxlength="2"

      value="#{country.FActive}">

      <a:support event="onblur" reRender="FActiveField" bypassUpdates="true" ajaxSingle="true"/>

      </h:inputText>

      </s:decorate>



      *

      required fields



      </rich:panel>



      <h:commandButton id="save"

      value="Save"

      action="#{countryS.persist}"/>

      <s:button id="cancel"

      value="Cancel"

      propagation="end"/>



      </rich:modalPanel>

      </h:form>



      </rich:panel>


      </ui:define>

      </ui:composition>




      @Stateful
      @Name("countryS")
      @Scope(ScopeType.SESSION)
      public class CountrySAction implements CountryS {
      @PersistenceContext(type=PersistenceContextType.EXTENDED)
      private EntityManager em;
      @In(required=false, create=true)
      @Out(required=false)
      private Region region;
      @Logger
      private Log log;
      private int param;
      @DataModel
      private List countries;
      @DataModelSelection
      @Out(value="country", required=false)
      @In(value="country", required=false)
      private Country selectedCountry;
      @Factory
      @Observer("countryConfirmed")
      @SuppressWarnings("unchecked")
      public void getCountries()
      {
      String qry = "select country from Country country";
      countries = em.createQuery(qry).getResultList();
      }
      public void selectCountry() {
      System.out.println("Selected Country.................: " + param);
      // refetch the region, loading all lazy associations
      selectedCountry = em.find(Country.class, param);
      selectedCountry.getRegion();
      System.out.println("Selected Country.................: " + selectedCountry.getName());
      }
      public Country getSelectedCountry()
      {
      return selectedCountry;
      }
      public String addCountry() {
      selectedCountry = new Country();
      //region = new Region();
      //selectedCountry.setRegion(region);
      return "sucess";
      }
      public String persist() {
      //selectedCountry = new Country();
      log.info(":Rao:------------Country Code" + selectedCountry.getCountryCode());
      log.info(":Rao:------------Region Code" + selectedCountry.getRegion().getRegionCode());
      /*if (region != null){
      region = em.find(Region.class, region.getRegionId());
      selectedCountry.setRegion(region);
      }*/
      em.persist(selectedCountry);
      log.info(":Rao:------------persisted");
      return "success";
      }
      public String remove(){
      selectedCountry = em.find(Country.class, selectedCountry.getCountryId());
      if(selectedCountry!=null)
      em.remove(selectedCountry);
      return "String";
      }
      public String update(){
      selectedCountry = em.find(Country.class, selectedCountry.getCountryId());
      if(selectedCountry!=null)
      em.merge(selectedCountry);
      return "String";
      }
      public void selectRegion(){
      if (region != null)
      {
      region = em.find(Region.class, region.getRegionId());
      selectedCountry.setRegion(region);
      }
      }
      public int getParam() {
      return param;
      }

      public void setParam(int param) {
      this.param = param;
      }
      public void delete() {
      FacesContext context = FacesContext.getCurrentInstance();
      context.addMessage(null, new FacesMessage("Package deleted: " + param));
      //System.out.println("Bean.action()" + param);
      }
      public void edit() {
      FacesContext context = FacesContext.getCurrentInstance();
      context.addMessage(null, new FacesMessage("Package edited: " + param));
      //System.out.println("Bean.action()" + param);
      }
      /*public void actionListener(ActionEvent event) {
      log.info(":Rao:------------Bean.actionListener()" + event.getComponent());
      System.out.println("Bean.actionListener()" + event.getComponent());
      }*/
      @Destroy @Remove
      public void destroy() {}
      }