Package com.ubx1.pdpscanner.client.views.project

Source Code of com.ubx1.pdpscanner.client.views.project.ProjectSizeWidget

package com.ubx1.pdpscanner.client.views.project;

import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.ubx1.pdpscanner.client.GeneralStat;
import com.ubx1.pdpscanner.client.views.AbstractView;
import com.ubx1.pdpscanner.shared.Project;

/**
* The widget for showing how extensive the code is
*
* @author wbraik
*
*/
public class ProjectSizeWidget extends AbstractView {

  /**
   * The associated Project object
   */
  protected Project project = null;

  /**
   * The current version to display the stats for
   */
  private int version;

  // View components

  private final HorizontalPanel titlePanel = new HorizontalPanel();
  private final Label titleLabel = new Label("Taille du projet");
  private final Label sourcesLabel = new Label("(d'après JavaNCSS et CLOC)");
  private final HorizontalPanel locPanel = new HorizontalPanel();
  private final Label locLabel = new Label();
  private final Label diffLocLabel = new Label();
  private final HorizontalPanel funcPanel = new HorizontalPanel();
  private final Label funcLabel = new Label();
  private final Label diffFuncLabel = new Label();
  private final HorizontalPanel clPanel = new HorizontalPanel();
  private final Label clLabel = new Label();
  private final Label diffClLabel = new Label();
  private final HorizontalPanel filePanel = new HorizontalPanel();
  private final Label fileLabel = new Label();
  private final Label diffFileLabel = new Label();
  private final HorizontalPanel pkgPanel = new HorizontalPanel();
  private final Label pkgLabel = new Label();
  private final Label diffPkgLabel = new Label();

  public ProjectSizeWidget(Project project) {

    super(new VerticalPanel());
    this.project = project;

    this.titleLabel.setStyleDependentName("widgetTitle", true);
    this.sourcesLabel.setStyleDependentName("widgetSources", true);
    this.diffLocLabel.setStyleDependentName("diff", true);
    this.diffFuncLabel.setStyleDependentName("diff", true);
    this.diffClLabel.setStyleDependentName("diff", true);
    this.diffFileLabel.setStyleDependentName("diff", true);
    this.diffPkgLabel.setStyleDependentName("diff", true);
    this.viewPanel.setStyleName("projectSizeWidget");
  }

  public void setVersion(int version) {

    this.version = version;
  }

  @Override
  public void buildView() {

    locLabel.setText("");
    diffLocLabel.setText("");
    funcLabel.setText("");
    diffFuncLabel.setText("");
    clLabel.setText("");
    diffClLabel.setText("");
    fileLabel.setText("");
    diffFileLabel.setText("");
    pkgLabel.setText("");
    diffPkgLabel.setText("");

    fillLabel(GeneralStat.LOC);
    fillLabel(GeneralStat.FUNC);
    fillLabel(GeneralStat.CL);
    fillLabel(GeneralStat.FILE);
    fillLabel(GeneralStat.PKG);
    fillDiffLabel(GeneralStat.LOC);
    fillDiffLabel(GeneralStat.FUNC);
    fillDiffLabel(GeneralStat.CL);
    fillDiffLabel(GeneralStat.FILE);
    fillDiffLabel(GeneralStat.PKG);

    locPanel.add(locLabel);
    locPanel.add(diffLocLabel);
    funcPanel.add(funcLabel);
    funcPanel.add(diffFuncLabel);
    clPanel.add(clLabel);
    clPanel.add(diffClLabel);
    pkgPanel.add(pkgLabel);
    pkgPanel.add(diffPkgLabel);
    filePanel.add(fileLabel);
    filePanel.add(diffFileLabel);

    titlePanel.add(titleLabel);
    titlePanel.add(sourcesLabel);

    viewPanel.add(titlePanel);
    viewPanel.add(locPanel);
    viewPanel.add(funcPanel);
    viewPanel.add(clPanel);
    viewPanel.add(filePanel);
    viewPanel.add(pkgPanel);
  }

  /**
   * Fill the label of a given stat kind
   *
   * @param s
   *            the stat kind
   */
  private void fillLabel(GeneralStat s) {

    Project p = this.project;
    int v = this.version;

    switch (s) {
    case LOC:
      locLabel.setText("Lignes de code : "
          + (p.getNloc(v) == -1 ? "--" : p.getNloc(v)));
      break;
    case FUNC:
      funcLabel.setText("Fonctions : "
          + (p.getNfunc(v) == -1 ? "--" : p.getNfunc(v)));
      break;
    case CL:
      clLabel.setText("Classes : "
          + (p.getNcl(v) == -1 ? "--" : p.getNcl(v)));
      break;
    case PKG:
      pkgLabel.setText("Packages : "
          + (p.getNpkg(v) == -1 ? "--" : p.getNpkg(v)));
      break;
    case FILE:
      fileLabel.setText("Fichiers : "
          + (p.getNfile(v) == -1 ? "--" : p.getNfile(v)));
      break;
    default:

    }
  }

  /**
   * Fill the label of a given stat kind for showing the differential with the
   * previous version
   *
   * @param s
   *            the stat kind
   */
  private void fillDiffLabel(GeneralStat s) {

    Project p = this.project;
    int v = this.version;

    // If there is an anterior version
    if (v > 1) {

      switch (s) {
      case LOC:
        if (p.getNloc(v) > p.getNloc(v - 1)) {
          diffLocLabel.setText("(+)");
        } else if (p.getNloc(v) < p.getNloc(v - 1)) {
          diffLocLabel.setText("(-)");
        }
        break;
      case FUNC:
        if (p.getNfunc(v) > p.getNfunc(v - 1)) {
          diffFuncLabel.setText("(+)");
        } else if (p.getNfunc(v) < p.getNfunc(v - 1)) {
          diffFuncLabel.setText("(-)");
        }
        break;
      case CL:
        if (p.getNcl(v) > p.getNcl(v - 1)) {
          diffClLabel.setText("(+)");
        } else if (p.getNcl(v) < p.getNcl(v - 1)) {
          diffClLabel.setText("(-)");
        }
        break;
      case FILE:
        if (p.getNfile(v) > p.getNfile(v - 1)) {
          diffFileLabel.setText("(+)");
        } else if (p.getNfile(v) < p.getNfile(v - 1)) {
          diffFileLabel.setText("(-)");

        }
        break;
      case PKG:
        if (p.getNpkg(v) > p.getNpkg(v - 1)) {
          diffPkgLabel.setText("(+)");
        } else if (p.getNpkg(v) < p.getNpkg(v - 1)) {
          diffPkgLabel.setText("(-)");

        }
        break;
      default:

      }
    }
  }
}
TOP

Related Classes of com.ubx1.pdpscanner.client.views.project.ProjectSizeWidget

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.