Package com.google.testing.testify.risk.frontend.client.view.impl

Source Code of com.google.testing.testify.risk.frontend.client.view.impl.ConfigureDataViewImpl$ConfigureDataViewImplUiBinder

// Copyright 2010 Google Inc. All Rights Reseved.
//
// Licensed 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.


package com.google.testing.testify.risk.frontend.client.view.impl;

import com.google.common.collect.Maps;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.testing.testify.risk.frontend.client.presenter.DataRequestPresenter;
import com.google.testing.testify.risk.frontend.client.view.ConfigureDataView;
import com.google.testing.testify.risk.frontend.client.view.DataRequestView;
import com.google.testing.testify.risk.frontend.model.DataRequest;
import com.google.testing.testify.risk.frontend.model.DataSource;

import java.util.List;
import java.util.Map;

/**
* A widget for configuring a project's data sources.
*
* @author chrsmith@google.com (Chris Smith)
*/
public class ConfigureDataViewImpl extends Composite implements ConfigureDataView {

  interface ConfigureDataViewImplUiBinder extends UiBinder<Widget, ConfigureDataViewImpl> {}
  private static final ConfigureDataViewImplUiBinder uiBinder =
      GWT.create(ConfigureDataViewImplUiBinder.class);

  @UiField
  public ListBox standardDataSourcesListBox;

  @UiField
  public TextBox dataSourceTextBox;

  @UiField
  public Button addDataRequestButton;

  @UiField
  public VerticalPanel dataRequestsPanel;

  private List<DataRequest> dataRequests = null;
  private Map<String, DataSource> dataSources = null;

  private Presenter presenter;

  /**
   * Constructs a ConfigureDataView object.
   */
  public ConfigureDataViewImpl() {
    initWidget(uiBinder.createAndBindUi(this));
    dataSourceTextBox.getElement().setAttribute("placeholder", "Name this data source...");
  }

  @UiHandler("standardDataSourcesListBox")
  public void handleStandardDataSourcesListBoxChanged(ChangeEvent event) {
    DataSource source = getSelectedSource();
    // If this source doesn't have any defined options, it's our "Other..." source which means
    // we need them to input the name they want.
    dataSourceTextBox.setVisible(source.getParameters().size() < 1);
  }

  private DataSource getSelectedSource() {
    int dataSourceIndex = standardDataSourcesListBox.getSelectedIndex();
    String selectedSourceName = standardDataSourcesListBox.getItemText(dataSourceIndex);
    return dataSources.get(selectedSourceName);
  }

  @UiHandler("addDataRequestButton")
  public void handleAddDataRequestButtonClicked(ClickEvent event) {
    if (presenter != null) {
      DataSource source = getSelectedSource();

      if (source != null) {
        DataRequest newRequest = new DataRequest();
        newRequest.setDataSourceName(source.getName());
        if (source.getParameters().size() < 1) {
          newRequest.setCustomName(dataSourceTextBox.getText());
        }
        presenter.addDataRequest(newRequest);
      }
    }
  }

  /**
   * Binds this View to the given Presenter.
   */
  @Override
  public void setPresenter(Presenter presenter) {
    this.presenter = presenter;
  }

  @Override
  public void setDataRequests(List<DataRequest> dataRequests) {
    this.dataRequests = dataRequests;
    updateDataRequests();
  }

  @Override
  public void setDataSources(List<DataSource> dataSources) {
    this.dataSources = Maps.newHashMap();
    standardDataSourcesListBox.clear();
    for (DataSource dataSource : dataSources) {
      this.dataSources.put(dataSource.getName(), dataSource);
      standardDataSourcesListBox.addItem(dataSource.getName());
    }
    updateDataRequests();
  }

  private void updateDataRequests() {
    // We need both DataRequests and DataSources to be populated before doing this, so wait for
    // both to be non-null.
    if (dataSources != null && dataRequests != null) {
      dataRequestsPanel.clear();

      for (DataRequest request : dataRequests) {
        DataRequestView view = new DataRequestViewImpl();

        DataRequestPresenter presenter = new DataRequestPresenter(request,
            dataSources.get(request.getDataSourceName()), view, this.presenter);
        dataRequestsPanel.add(view.asWidget());
      }
    }
  }
}
TOP

Related Classes of com.google.testing.testify.risk.frontend.client.view.impl.ConfigureDataViewImpl$ConfigureDataViewImplUiBinder

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.