Package com.cubusmail.gwtui.client.panels

Source Code of com.cubusmail.gwtui.client.panels.ExtendedSearchPanel

/* ExtendedSearchPanel.java

   Copyright (c) 2009 Juergen Schlierf, All Rights Reserved
  
   This file is part of Cubusmail (http://code.google.com/p/cubusmail/).
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 3 of the License, or (at your option) any later version.
 
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
   License along with Cubusmail. If not, see <http://www.gnu.org/licenses/>.
  
*/
package com.cubusmail.gwtui.client.panels;

import java.util.ArrayList;
import java.util.List;

import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.UrlParam;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListener;
import com.gwtext.client.widgets.event.KeyListener;
import com.gwtext.client.widgets.form.DateField;
import com.gwtext.client.widgets.form.FieldSet;
import com.gwtext.client.widgets.form.FormPanel;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.FitLayout;
import com.gwtext.client.widgets.layout.TableLayout;
import com.gwtext.client.widgets.layout.TableLayoutData;

import com.cubusmail.gwtui.client.util.GWTUtil;
import com.cubusmail.gwtui.client.util.TextProvider;
import com.cubusmail.gwtui.domain.GWTMailConstants;
import com.cubusmail.gwtui.domain.SearchFields;

/**
* Extended search.
*
* @author Juergen Schlierf
*/
public class ExtendedSearchPanel extends Panel {

  private TextField from;
  private TextField to;
  private TextField cc;
  private TextField subject;
  private TextField content;
  private DateField dateFrom;
  private DateField dateTo;

  private Button searchButton;

  public ExtendedSearchPanel( boolean visible ) {

    super();
    setFrame( true );
    setBorder( false );
    setLayout( new FitLayout() );
    setVisible( visible );
    setPaddings( 1, 1, 1, 1 );

    this.from = new TextField( TextProvider.get().extended_search_panel_from(), SearchFields.FROM.name(), 150 );
    this.to = new TextField( TextProvider.get().extended_search_panel_to(), SearchFields.TO.name(), 150 );
    this.cc = new TextField( TextProvider.get().extended_search_panel_cc(), SearchFields.CC.name(), 150 );
    this.subject = new TextField( TextProvider.get().extended_search_panel_subject(), SearchFields.SUBJECT.name(),
        150 );
    this.content = new TextField( TextProvider.get().extended_search_panel_body(), SearchFields.CONTENT.name(), 400 );
    this.dateFrom = new DateField( TextProvider.get().extended_search_panel_date_from(),
        SearchFields.DATE_FROM.name(), 100 );
    this.dateFrom.setFormat( TextProvider.get().extended_search_panel_date_format() );
    this.dateTo = new DateField( TextProvider.get().extended_search_panel_date_to(), SearchFields.DATE_TO.name(),
        100 );
    this.dateTo.setFormat( TextProvider.get().extended_search_panel_date_format() );

    FieldSet fieldSet = new FieldSet( TextProvider.get().extended_search_panel_fieldset() );
    fieldSet.setLayout( new TableLayout( 3 ) );

    fieldSet.add( createFieldPanel( this.from ) );
    fieldSet.add( createFieldPanel( this.to ) );
    fieldSet.add( createFieldPanel( this.cc ) );
    fieldSet.add( createFieldPanel( this.subject ) );
    fieldSet.add( createFieldPanel( this.content ), new TableLayoutData( 2 ) );
    fieldSet.add( createFieldPanel( this.dateFrom ) );
    fieldSet.add( createFieldPanel( this.dateTo ) );

    this.searchButton = new Button( TextProvider.get().extended_search_panel_search() );
    fieldSet.add( this.searchButton );

    add( fieldSet );
  }

  public void addSearchButtonListener( ButtonListener listener ) {

    this.searchButton.addListener( listener );
  }

  public void addKeyListener( KeyListener listener ) {

    this.from.addKeyListener( EventObject.ENTER, listener );
    this.to.addKeyListener( EventObject.ENTER, listener );
    this.cc.addKeyListener( EventObject.ENTER, listener );
    this.subject.addKeyListener( EventObject.ENTER, listener );
    this.content.addKeyListener( EventObject.ENTER, listener );
    this.dateFrom.addKeyListener( EventObject.ENTER, listener );
    this.dateTo.addKeyListener( EventObject.ENTER, listener );
  }

  public void clearFields() {

    this.from.setValue( null );
    this.to.setValue( null );
    this.cc.setValue( null );
    this.subject.setValue( null );
    this.content.setValue( null );
    this.dateFrom.setValue( (String) null );
    this.dateTo.setValue( (String) null );
  }

  /**
   * @return
   */
  public UrlParam[] getParams() {

    List<String> searchFieldList = new ArrayList<String>();
    List<String> valueList = new ArrayList<String>();

    if ( GWTUtil.hasText( this.from.getText() ) ) {
      searchFieldList.add( this.from.getName() );
      valueList.add( this.from.getText() );
    }
    if ( GWTUtil.hasText( this.to.getText() ) ) {
      searchFieldList.add( this.to.getName() );
      valueList.add( this.to.getText() );
    }
    if ( GWTUtil.hasText( this.cc.getText() ) ) {
      searchFieldList.add( this.cc.getName() );
      valueList.add( this.cc.getText() );
    }
    if ( GWTUtil.hasText( this.subject.getText() ) ) {
      searchFieldList.add( this.subject.getName() );
      valueList.add( this.subject.getText() );
    }
    if ( GWTUtil.hasText( this.content.getText() ) ) {
      searchFieldList.add( this.content.getName() );
      valueList.add( this.content.getText() );
    }
    if ( GWTUtil.hasText( this.dateFrom.getText() ) ) {
      searchFieldList.add( this.dateFrom.getName() );
      valueList.add( String.valueOf( this.dateFrom.getValue().getTime() ) );
    }
    if ( GWTUtil.hasText( this.dateTo.getText() ) ) {
      searchFieldList.add( this.dateTo.getName() );
      valueList.add( String.valueOf( this.dateTo.getValue().getTime() ) );
    }

    if ( searchFieldList.size() > 0 ) {
      UrlParam[] params = new UrlParam[searchFieldList.size() + 1];
      String searchFields = "";
      for ( int i = 0; i < searchFieldList.size(); i++ ) {
        searchFields += searchFields + searchFieldList.get( i );
        if ( i < (searchFieldList.size() - 1) ) {
          searchFields += ",";
        }
        params[i] = new UrlParam( searchFieldList.get( i ), valueList.get( i ) );
      }
      params[searchFieldList.size()] = new UrlParam( GWTMailConstants.EXTENDED_SEARCH_FIELDS, searchFields );

      return params;
    } else {
      return null;
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see com.gwtext.client.widgets.Component#initComponent()
   */
  @Override
  protected void initComponent() {

    super.initComponent();
  }

  private FormPanel createFieldPanel( TextField field ) {

    FormPanel fieldPanel = new FormPanel();
    fieldPanel.setPaddings( 1, 0, 20, 0 );
    fieldPanel.setBorder( false );
    fieldPanel.setLabelWidth( 70 );
    fieldPanel.add( field );

    return fieldPanel;
  }
}
TOP

Related Classes of com.cubusmail.gwtui.client.panels.ExtendedSearchPanel

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.