public TemplateGeneralModelForm(
      ModelProvider<TemplateGeneralModel> modelProvider, CommonApplicationConstants constants) {
    super(modelProvider, 3, 6);
    Driver.driver.initialize(this);

    // Build a form using the FormBuilder
    formBuilder.setColumnsWidth(
        "120px", "240px", "160px"); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    formBuilder.addFormItem(new FormItem(constants.nameTemplateGeneral(), name, 0, 0));
    formBuilder.addFormItem(
        new FormItem(constants.descriptionTemplateGeneral(), description, 1, 0));
    formBuilder.addFormItem(
        new FormItem(constants.hostClusterTemplateGeneral(), hostCluster, 2, 0));
    formBuilder.addFormItem(new FormItem(constants.osTemplateGeneral(), oS, 3, 0));
    formBuilder.addFormItem(
        new FormItem(constants.defaultDisTypeTemplateGeneral(), defaultDisplayType, 4, 0));

    formBuilder.addFormItem(
        new FormItem(constants.definedMemTemplateGeneral(), definedMemory, 0, 1));
    formBuilder.addFormItem(new FormItem(constants.numOfCpuCoresTemplateGeneral(), cpuInfo, 1, 1));
    formBuilder.addFormItem(
        new FormItem(constants.numOfMonitorsTemplateGeneral(), monitorCount, 2, 1));
    formBuilder.addFormItem(
        new FormItem(constants.highlyAvailTemplateGeneral(), isHighlyAvailable, 3, 1));
    formBuilder.addFormItem(new FormItem(constants.priorityTemplateGeneral(), priority, 4, 1));
    formBuilder.addFormItem(
        new FormItem(constants.usbPolicyTemplateGeneral(), usbPolicy, 5, 1) {
          @Override
          public boolean isVisible() {
            return getModel().getHasUsbPolicy();
          }
        });

    formBuilder.addFormItem(new FormItem(constants.originTemplateGeneral(), origin, 0, 2));
    formBuilder.addFormItem(
        new FormItem(constants.isStatelessTemplateGeneral(), isStateless, 1, 2));
    formBuilder.addFormItem(
        new FormItem(constants.domainTemplateGeneral(), domain, 2, 2) {
          @Override
          public boolean isVisible() {
            return getModel().getHasDomain();
          }
        });
    formBuilder.addFormItem(
        new FormItem(constants.tzTemplateGeneral(), timeZone, 3, 2) {
          @Override
          public boolean isVisible() {
            return getModel().getHasTimeZone();
          }
        });

    formBuilder.addFormItem(
        new FormItem(constants.quotaTemplateGeneral(), quotaName, 4, 2) {
          @Override
          public boolean isVisible() {
            return getModel().isQuotaAvailable();
          }
        });
  }