Package jsf.physiciansFlow

Source Code of jsf.physiciansFlow.search

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* $Header:$
*/
package jsf.physiciansFlow;

import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.component.html.HtmlSelectOneRadio;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.apache.beehive.netui.pageflow.FacesBackingBean;
import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.annotations.Jpf;

import org.apache.beehive.samples.netui.jsf.physician.Physician;
import jsf.physiciansFlow.Controller.PhysicianSearchForm;

/**
* This is the backing bean for JSF page "search.faces" (search.jsp).
*/
@Jpf.FacesBacking
public class search extends FacesBackingBean
{
    @Jpf.PageFlowField
    Controller pageFlow;
   
    // page flow action form containing search criteria
    // will be passed to page flow action
    public PhysicianSearchForm searchForm = new PhysicianSearchForm();

    // a bean to hold the search criteria input by the user
    private Physician criteria;
       
    // The type of physician - see "types" below
    private String physicianType = Physician.FAMILY;
     
    // start with the specialist choices disabled
    private boolean specialistsDisabled = true;
   
    // default setting is abbreviated results
    private boolean showDetailedResults = false;
           
    // The type of physician - see "types" below
    private String resultFormatType = "shortFormat";

    // Physician types
    private SelectItem[] physicianTypes = {
        new SelectItem(Physician.FAMILY, "Family Doctor"),
        new SelectItem(Physician.SPECIALIST, "Specialist")
    };
   
    // Specialist types
    private SelectItem[] specialistTypes = {
        new SelectItem("ear", "ear"),
        new SelectItem("nose", "nose"),
        new SelectItem("throat", "throat")
    };
              
    // city options
    private SelectItem[] cities = {
        new SelectItem("Boulder", "Boulder"),
        new SelectItem("Denver", "Denver")
    };
    // result format types (minimal info or lots of info)
    private SelectItem[] resultFormatTypes = {
        new SelectItem("shortFormat", "Abbreviated Physician Information"),
        new SelectItem("detailedFormat", "Detailed Physician Information"),
    };
              
    protected FacesContext getFacesContext() {
        return FacesContext.getCurrentInstance();
    }
   
    // get the current notesPreference
  protected void onCreate()
  {
      criteria = new Physician();
        criteria.setSpecialty(Physician.FAMILY);
  }
 
  protected void onDestroy()
  {
 
  }
 
    /*
     * getter for the "form" bean
     */
    public Physician getCriteria()
    {
        return this.criteria;
    }
   
    //
    // Getters and setters for component values used in the search form
    //
    public String getPhysicianType()
    {
        return this.physicianType;
    }

    public void setPhysicianType(String type)
    {
        this.physicianType = type;
    }

  public String getResultFormatType()
    {
        return this.resultFormatType;
    }
   public void setResultFormatType(String type)
    {
        this.resultFormatType = type;
    }
   
    /**
     * the specialist menu is enabled when the user chooses
     * specialist from the physician type selector
     */
    public boolean getSpecialistsDisabled()
    {
        return this.specialistsDisabled;
    }
   
    private void setSpecialistsDisabled(boolean value)
    {
        this.specialistsDisabled = value;
    }
   
  //
    // getters for all the selector components
    //
    public SelectItem[] getPhysicianTypes()
    {
        return this.physicianTypes;
    }
   
    public SelectItem[] getSpecialistTypes()
    {
        return this.specialistTypes;
    }
   
    public SelectItem[] getCities()
    {
        return this.cities;
    }

  public SelectItem[] getResultFormatTypes()
    {
        return this.resultFormatTypes;
    }
    // handler for selector interactions
    public void physicianTypeChange(javax.faces.event.ValueChangeEvent vce)
    {
        // get the new value from the component
        if (vce.getNewValue().equals(Physician.FAMILY))
        {
      setSpecialistsDisabled(true);
        }
        else
        {
      setSpecialistsDisabled(false);
        }
       
        // bypass validation of other components by jumping to render response
        getFacesContext().renderResponse();
    }

    /**
     * Action handler for the search command
     * Pass the search form to one of two Page Flow actions,
     * based on the users choice of results format
     */
    @Jpf.CommandHandler(
        raiseActions = {
            @Jpf.RaiseAction(action="displayPhysiciansWithDetail", outputFormBean="searchForm"),
            @Jpf.RaiseAction(action="displayPhysiciansAbbreviated", outputFormBean="searchForm")
        }
    )
    public String execute()
    {
        // if the physician type is set to "Family Practicioner" ignore the value of specialty
        if (physicianType.equals(Physician.FAMILY))
            criteria.setSpecialty(Physician.FAMILY);

    // put the criteria into the form that is passed to the page flow actions
        searchForm.setSearchCriteria(criteria);

        // If the user wants the detail format for results
        // we use a different page to present the results
        if (resultFormatType.equals("detailedFormat"))
        {
          return "displayPhysiciansWithDetail";
        }
        else  // abbreviated results
        {
          return "displayPhysiciansAbbreviated";
        }
    }
   
    public String sortByLastName()
    {
      pageFlow.sortByLastName();
      return null// stay on the page
    }
   
    public String sortByGender()
    {
      pageFlow.sortByGender();
      return null// stay on the page
    }
}
TOP

Related Classes of jsf.physiciansFlow.search

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.