Package org.geomajas.gwt.client.widget.attribute

Source Code of org.geomajas.gwt.client.widget.attribute.EnableToggleFormItem

/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/
package org.geomajas.gwt.client.widget.attribute;

import com.google.gwt.event.shared.HandlerRegistration;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.events.ItemChangedEvent;
import com.smartgwt.client.widgets.form.events.ItemChangedHandler;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.layout.VLayout;

/**
* Base class for the default URL and IMGURL type form items. It allows to switch between 2 types of form items when
* enabled/disabled.
*
* @author Pieter De Graef
*/
public class EnableToggleFormItem extends CanvasItem {

  private static final String FORM_FIELD_NAME = "theOnlyOne";

  private VLayout layout;

  private DynamicForm enabledForm;

  private DynamicForm disabledForm;

  // ------------------------------------------------------------------------
  // Constructors:
  // ------------------------------------------------------------------------

  public EnableToggleFormItem() {
  }

  public EnableToggleFormItem(FormItem enabledItem, FormItem disabledItem) {
    initialize(enabledItem, disabledItem);
  }

  // ------------------------------------------------------------------------
  // Public methods:
  // ------------------------------------------------------------------------

  @Override
  public void clearValue() {
    super.clearValue();
    enabledForm.clearValues();
    disabledForm.clearValues();
  }

  public void initialize(FormItem enabledItem, FormItem disabledItem) {
    setWidth("*");
    setHeight(1);
    layout = new VLayout();

    enabledForm = new DynamicForm();
    enabledForm.setWidth("100%");
    enabledItem.setName(FORM_FIELD_NAME);
    enabledItem.setShowTitle(false);
    enabledItem.setWidth("*");
    enabledItem.setColSpan(3);
    enabledForm.setFields(enabledItem);
    enabledForm.setVisible(false);

    disabledForm = new DynamicForm();
    disabledForm.setWidth("100%");
    disabledItem.setName(FORM_FIELD_NAME);
    disabledItem.setShowTitle(false);
    disabledItem.setWidth("*");
    disabledForm.setFields(disabledItem);
    disabledForm.setVisible(false);

    layout.addMember(enabledForm);
    layout.addMember(disabledForm);
    setCanvas(layout);

    enabledForm.addItemChangedHandler(new ItemChangedHandler() {

      public void onItemChanged(ItemChangedEvent event) {
        String disabledValue = (event.getNewValue() == null ? null : event.getNewValue().toString());
        disabledForm.getItem(FORM_FIELD_NAME).setValue(disabledValue);
      }
    });
  }

  // ------------------------------------------------------------------------
  // Method overriding:
  // ------------------------------------------------------------------------

  public HandlerRegistration addChangedHandler(final ChangedHandler handler) {
    return enabledForm.addItemChangedHandler(new ItemChangedHandler() {

      public void onItemChanged(ItemChangedEvent event) {
        handler.onChanged(new ChangedEvent(EnableToggleFormItem.this.getJsObj()));
      }
    });

  }

  public Object getValue() {
    return enabledForm.getValue(FORM_FIELD_NAME);
  }

  public void setValue(String value) {
    enabledForm.getItem(FORM_FIELD_NAME).setValue(value);
    disabledForm.getItem(FORM_FIELD_NAME).setValue(value);
    super.setValue(value);
  }

  public void setDisabled(Boolean disabled) {
    boolean realValue = disabled.booleanValue();
    enabledForm.setVisible(!realValue);
    disabledForm.setVisible(realValue);
  }

  @Override
  public Boolean validate() {
    return enabledForm.validate();
  }


}
TOP

Related Classes of org.geomajas.gwt.client.widget.attribute.EnableToggleFormItem

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.