private void display()

in app/src/main/java/com/google/reviewit/SortChangesFragment.java [97:221]


  private void display() {
    ConfigManager cfgManager = getApp().getConfigManager();
    QueryConfig config = cfgManager.getQueryConfig();
    if (!config.isComplete()) {
      display(QuerySettingsFragment.class);
      return;
    }

    if (!isOnline()) {
      setInvisible(v(R.id.progress));
      WidgetUtil.setText(v(R.id.noResultBoxText),
          getString(R.string.no_network));
      setVisible(v(R.id.root, R.id.noResultBox));
      setGone(v(R.id.resultBox, R.id.loadingBox));
      return;
    }

    if (getSortActionHandler().isQueryNeeded()) {
      if (v(R.id.changeBox) == null) {
        setVisible(v(R.id.loadingBox));
        setInvisible(v(R.id.progress));
        disableButtons();
        showButtons(false);
      } else {
        setVisible(v(R.id.progress));
      }
    } else {
      Change change = getSortActionHandler().preview();
      if (change != null) {
        ChangeUtil.colorBackground(root, change);
      }
    }
    setVisible(v(R.id.root));

    new AsyncTask<Void, Void, ChangeData>() {
      private View progress;
      private View loadingBox;
      private ViewGroup resultBox;
      private View noResultBox;
      private TextView noResultBoxText;
      private ChangeBox changeBox;

      @Override
      protected void onPreExecute() {
        super.onPreExecute();
        progress = v(R.id.progress);
        loadingBox = v(R.id.loadingBox);
        resultBox = vg(R.id.resultBox);
        noResultBox = v(R.id.noResultBox);
        noResultBoxText = tv(R.id.noResultBoxText);
        changeBox = (ChangeBox) v(R.id.changeBox);
      }

      @Override
      protected ChangeData doInBackground(Void... v) {
        try {
          SortActionHandler actionHandler = getSortActionHandler();
          if (actionHandler.hasNext()) {
            Change change = actionHandler.next();
            int queueSize = actionHandler.getQueueSize();
            Change nextChange = null;
            if (queueSize > 0) {
              nextChange = actionHandler.preview();
            }
            return new ChangeData(change, nextChange, queueSize);
          } else {
            return ChangeData.empty();
          }
        } catch (RestApiException e) {
          // e.g. server not reachable
          Log.e(TAG, "Request failed", e);
          if (e.getCause() != null) {
            return new ChangeData(getString(R.string.error_with_cause,
                e.getMessage(), e.getCause().getMessage()));
          } else {
            return new ChangeData(e.getMessage());
          }
        }
      }

      protected void onPostExecute(ChangeData changeData) {
        if (getActivity() == null) {
          // user navigated away while we were waiting for the request
          return;
        }

        getActivity().invalidateOptionsMenu();
        setInvisible(progress);

        if (changeData.error != null) {
          noResultBoxText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
          noResultBoxText.setText(changeData.error);
          setVisible(noResultBox);
          setGone(resultBox, loadingBox);
          return;
        }

        if (changeData.change != null) {
          setVisible(resultBox);
          setGone(noResultBox, loadingBox);

          if (changeBox == null) {
            changeBox = new ChangeBox(getContext());
            resultBox.addView(changeBox);
            changeBox.display(getApp(), changeData.change);
          }
          ChangeUtil.colorBackground(root, changeData.change);

          initButtons(changeBox);
          initSwipeAnimation(changeBox);

          if (changeData.nextChange != null) {
            ChangeBox changeBox2 = new ChangeBox(getContext());
            resultBox.addView(changeBox2, resultBox.getChildCount() - 1);
            changeBox2.display(getApp(), changeData.nextChange);
          }
          pageEffect(changeData.queueSize);
        } else {
          noResultBoxText.setText(getString(R.string.no_more_changes));
          setVisible(noResultBox);
          setGone(resultBox, loadingBox);
        }
      }
    }.execute();
  }