/**
   * Build and return this view's graphical components
   *
   * @return
   */
  public Layout build() {
    this.root = new VLayout();
    this.root.setWidth100();
    this.root.setHeight100();

    statsDetail = new DetailViewer();
    statsDetail.setCanSelectText(true);
    DetailViewerField sd1 = new DetailViewerField("JobSubmittingPeriod", "Job Submitting Period");
    DetailViewerField sd2 =
        new DetailViewerField("FormattedJobSubmittingPeriod", "Formatted Job Submitting Period");
    DetailViewerField sd3 = new DetailViewerField("MeanJobPendingTime", "Mean Job Pending Time");
    DetailViewerField sd4 = new DetailViewerField("ConnectedUsersCount", "Connected Users Count");
    DetailViewerField sd5 = new DetailViewerField("FinishedTasksCount", "Finished Tasks Count");
    DetailViewerField sd6 = new DetailViewerField("RunningJobsCount", "Running Jobs Count");
    DetailViewerField sd7 = new DetailViewerField("RunningTasksCount", "Running Tasks Count");
    DetailViewerField sd8 =
        new DetailViewerField("FormattedMeanJobPendingTime", "Formatted Mean Job Pending Time");
    DetailViewerField sd9 =
        new DetailViewerField("MeanJobExecutionTime", "Mean Job Execution Time");
    DetailViewerField sd10 = new DetailViewerField("PendingTasksCount", "Pending Tasks Count");
    DetailViewerField sd11 = new DetailViewerField("FinishedJobsCount", "Finished Jobs Count");
    DetailViewerField sd12 = new DetailViewerField("TotalTasksCount", "Total Tasks Count");
    DetailViewerField sd13 =
        new DetailViewerField("FormattedMeanJobExecutionTime", "Formatted Mean Job Execution Time");
    DetailViewerField sd14 = new DetailViewerField("TotalJobsCount", "Total Jobs Count");
    DetailViewerField sd15 = new DetailViewerField("PendingJobsCount", "Pending Jobs Count");
    statsDetail.setFields(
        sd1, sd2, sd3, sd4, sd5, sd6, sd7, sd8, sd9, sd10, sd11, sd12, sd13, sd14, sd15);

    accountDetail = new DetailViewer();
    accountDetail.setCanSelectText(true);
    DetailViewerField ad1 = new DetailViewerField("TotalTaskCount", "Total Task Count");
    DetailViewerField ad2 = new DetailViewerField("TotalJobDuration", "Total Job Duration");
    DetailViewerField ad3 = new DetailViewerField("TotalJobCount", "Total Job Count");
    DetailViewerField ad4 = new DetailViewerField("TotalTaskDuration", "Total Task Duration");
    accountDetail.setFields(ad1, ad2, ad3, ad4);

    l1 = new Label("<h3>Scheduler statistics</h3>");
    l1.setHeight(25);
    l1.hide();

    l2 = new Label("<h3>My account</h3>");
    l2.setHeight(25);
    l2.hide();

    this.root.addMember(l1);
    this.root.addMember(statsDetail);
    this.root.addMember(l2);
    this.root.addMember(accountDetail);

    return this.root;
  }
  @Override
  protected Canvas getCellHoverComponent(Record record, Integer rowNum, Integer colNum) {
    // only show a custom DetailViewer for the description column only
    if (colNum == 1) {

      DetailViewer detailViewer = new DetailViewer();
      detailViewer.setWidth(400);

      // Define the fields that we want to display in the details popup.
      // These
      // fields are populated from the record of the selected ValueSets.
      DetailViewerField descripitonField = new DetailViewerField("value", "Description");
      DetailViewerField formalNameField = new DetailViewerField("formalName", "Formal Name");
      detailViewer.setFields(formalNameField, descripitonField);

      detailViewer.setData(new Record[] {record});
      return detailViewer;
    }
    return null;
  }