Package com.tll.client.test

Source Code of com.tll.client.test.TestFieldPanel$TestIndexedFieldPanel

package com.tll.client.test;

import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.tll.client.ui.field.FieldGroup;
import com.tll.client.ui.field.FlowFieldPanel;
import com.tll.client.ui.field.FlowPanelFieldComposer;
import com.tll.client.ui.field.IFieldGroupProvider;
import com.tll.client.ui.field.IFieldRenderer;
import com.tll.client.ui.field.IFieldWidget;
import com.tll.client.ui.field.IIndexedFieldBoundWidget;
import com.tll.client.ui.field.TabbedIndexedFieldPanel;
import com.tll.common.model.Model;
import com.tll.common.model.PropertyPathException;
import com.tll.common.model.test.TestModelStubber;
import com.tll.model.test.AccountStatus;
import com.tll.model.test.AddressType;

/**
* TestFieldPanel - Contains a simple field panel mocking a related one
* model, and an indexed field panel mocking a related many model collection.
* @author jpk
*/
public class TestFieldPanel extends FlowFieldPanel {

  /**
   * TestIndexFieldPanel
   * @author jpk
   */
  static class TestIndexFieldPanel extends FlowFieldPanel {

    @Override
    protected FieldGroup generateFieldGroup() {
      return new TestFieldGroupProviders.AccountAddressFieldsProvider().getFieldGroup();
    }

    @Override
    public IFieldRenderer<FlowPanel> getRenderer() {
      return new IFieldRenderer<FlowPanel>() {

        public void render(FlowPanel pnl, FieldGroup fg) {
          final FlowPanelFieldComposer cmpsr = new FlowPanelFieldComposer();
          cmpsr.setCanvas(pnl);

          // account address type/name row
          cmpsr.addField(fg.getFieldWidget("type"));
          cmpsr.addField(fg.getFieldWidget("aa" + Model.NAME_PROPERTY));

          // address row
          cmpsr.newRow();
          final FlowPanel fp = new FlowPanel();
          (new IFieldRenderer<FlowPanel>() {

            @Override
            public void render(FlowPanel widget, FieldGroup fgroup) {
              final FlowPanelFieldComposer c = new FlowPanelFieldComposer();
              c.setCanvas(widget);

              c.addField(fgroup.getFieldWidget("adrsEmailAddress"));

              c.newRow();
              c.addField(fgroup.getFieldWidget("adrsFirstName"));
              c.addField(fgroup.getFieldWidget("adrsMi"));
              c.addField(fgroup.getFieldWidget("adrsLastName"));

              //cmpsr.newRow();
              //cmpsr.addField(fg.getFieldWidgetByName("adrsAttn"));
              //cmpsr.addField(fg.getFieldWidgetByName("adrsCompany"));

              //cmpsr.newRow();
              //cmpsr.addField(fg.getFieldWidgetByName("adrsAddress1"));

              //cmpsr.newRow();
              //cmpsr.addField(fg.getFieldWidgetByName("adrsAddress2"));

              c.newRow();
              c.addField(fgroup.getFieldWidget("adrsCity"));
              c.addField(fgroup.getFieldWidget("adrsProvince"));

              c.newRow();
              //cmpsr.addField(fg.getFieldWidgetByName("adrsPostalCode"));
              c.addField(fgroup.getFieldWidget("adrsCountry"));

              c.addField(fgroup.getFieldWidget("adrsBoolean"));
              c.addField(fgroup.getFieldWidget("adrsFloat"));
              c.addField(fgroup.getFieldWidget("adrsDouble"));
            }
          }).render(fp, (FieldGroup) fg.getFieldByName("address"));
          cmpsr.addWidget(fp);
        }
      };
    }

  } // TestIndexFieldPanel

  /**
   * TestIndexedFieldPanel
   * @author jpk
   */
  static class TestIndexedFieldPanel extends TabbedIndexedFieldPanel<TestIndexFieldPanel> {

    /**
     * Constructor
     */
    public TestIndexedFieldPanel() {
      super("Addresses", "addresses", true, true);
    }

    @Override
    protected String getIndexTypeName() {
      return "Account Address";
    }

    @Override
    protected String getInstanceName(TestIndexFieldPanel index) {
      AddressType type;
      String aaName;
      try {
        type = (AddressType) index.getModel().getProperty("type");
        aaName = (String) index.getModel().getProperty("name");
      }
      catch(final PropertyPathException e) {
        throw new IllegalStateException(e);
      }

      return aaName + " (" + type.getName() + ")";
    }

    @Override
    protected Model createPrototypeModel() {
      final Model m = TestModelStubber.stubAccountAddress(null, TestModelStubber.stubAddress(1), 1);
      m.clearPropertyValues(false, true);
      return m;
    }

    @Override
    protected TestIndexFieldPanel createIndexPanel() {
      return new TestIndexFieldPanel();
    }

  } // TestIndexedFieldPanel

  final TestIndexedFieldPanel indexedPanel;

  /**
   * Constructor
   */
  public TestFieldPanel() {
    super();
    indexedPanel = new TestIndexedFieldPanel();
  }

  @Override
  public IFieldRenderer<FlowPanel> getRenderer() {
    return new IFieldRenderer<FlowPanel>() {

      public void render(FlowPanel widget, FieldGroup fg) {
        final FlowPanelFieldComposer cmpsr = new FlowPanelFieldComposer();
        cmpsr.setCanvas(widget);

        // first row
        cmpsr.addField(fg.getFieldWidget("acnt" + Model.NAME_PROPERTY));
        cmpsr.addField(fg.getFieldWidget("acntStatus"));
        cmpsr.addField(fg.getFieldWidget("acntDateCancelled"));
        cmpsr.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
        cmpsr.addField(fg.getFieldWidget("acntParentName"));
        cmpsr.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
        cmpsr.addField(fg.getFieldWidget("acnt" + Model.DATE_CREATED_PROPERTY));
        cmpsr.stopFlow();
        cmpsr.addField(fg.getFieldWidget("acnt" + Model.DATE_MODIFIED_PROPERTY));

        // second row (billing)
        cmpsr.newRow();
        cmpsr.addField(fg.getFieldWidget("acntBillingModel"));
        cmpsr.addField(fg.getFieldWidget("acntBillingCycle"));
        cmpsr.addField(fg.getFieldWidget("acntDateLastCharged"));
        cmpsr.addField(fg.getFieldWidget("acntNextChargeDate"));

        // related one panel
        cmpsr.newRow();
        cmpsr.addField(fg.getFieldWidget("ccType"));

        cmpsr.addField(fg.getFieldWidget("ccNum"));
        cmpsr.addField(fg.getFieldWidget("ccCvv2"));
        cmpsr.addField(fg.getFieldWidget("ccExpMonth"));
        cmpsr.addField(fg.getFieldWidget("ccExpYear"));

        cmpsr.newRow();
        cmpsr.addField(fg.getFieldWidget("ccName"));

        // related many (indexed) panel
        cmpsr.newRow();
        cmpsr.addWidget(indexedPanel);
      }
    };
  }

  @SuppressWarnings("unchecked")
  @Override
  protected FieldGroup generateFieldGroup() {
    final FieldGroup fg = (new IFieldGroupProvider() {

      public FieldGroup getFieldGroup() {
        final FieldGroup fgroup = (new TestFieldGroupProviders.AccountFieldsProvider()).getFieldGroup();
        fgroup.addField("paymentInfo", (new TestFieldGroupProviders.PaymentInfoFieldsProvider()).getFieldGroup());
        fgroup.addField("addresses", indexedPanel.getFieldGroup());
        return fgroup;
      }
    }).getFieldGroup();

    //relatedOnePanel.getFieldGroup().setFeedbackWidget(dpPaymentInfo);
    //addressesPanel.getFieldGroup().setFeedbackWidget(dpAddresses);

    fg.getFieldWidgetByProperty("parent.name").setReadOnly(true);

    ((IFieldWidget<AccountStatus>) fg.getFieldWidgetByProperty("status"))
    .addValueChangeHandler(new ValueChangeHandler<AccountStatus>() {

      @Override
      public void onValueChange(ValueChangeEvent<AccountStatus> event) {
        final boolean closed = event.getValue() == AccountStatus.CLOSED;
        final IFieldWidget<?> f = getFieldGroup().getFieldWidgetByProperty("dateCancelled");
        f.setVisible(closed);
        f.setRequired(closed);
      }
    });

    ((IFieldWidget<Boolean>) fg.getFieldWidgetByProperty("persistPymntInfo"))
    .addValueChangeHandler(new ValueChangeHandler<Boolean>() {

      public void onValueChange(ValueChangeEvent<Boolean> event) {
        indexedPanel.getFieldGroup().setEnabled(event.getValue());
      }
    });

    return fg;
  }

  @Override
  public IIndexedFieldBoundWidget[] getIndexedChildren() {
    return new IIndexedFieldBoundWidget[] { indexedPanel };
  }
}
TOP

Related Classes of com.tll.client.test.TestFieldPanel$TestIndexedFieldPanel

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.