@SuppressWarnings("unchecked")
  public UIPageForm(InitParams initParams) throws Exception {
    super("UIPageForm");
    PortalRequestContext pcontext = Util.getPortalRequestContext();
    UserPortalConfigService configService = getApplicationComponent(UserPortalConfigService.class);
    List<SelectItemOption<String>> ownerTypes = new ArrayList<SelectItemOption<String>>();
    ownerTypes.add(new SelectItemOption<String>(PortalConfig.USER_TYPE));

    UserPortalConfig userPortalConfig =
        configService.getUserPortalConfig(pcontext.getPortalOwner(), pcontext.getRemoteUser());
    ExoContainer container = ExoContainerContext.getCurrentContainer();
    UserACL acl = (UserACL) container.getComponentInstanceOfType(UserACL.class);
    if (acl.hasEditPermission(userPortalConfig.getPortalConfig())) {
      ownerTypes.add(new SelectItemOption<String>(PortalConfig.PORTAL_TYPE));
    }
    ownerIdInput = new UIFormStringInput(OWNER_ID, OWNER_ID, null);
    ownerIdInput.setEditable(false).setValue(pcontext.getRemoteUser());

    UIFormSelectBox uiSelectBoxOwnerType = new UIFormSelectBox(OWNER_TYPE, OWNER_TYPE, ownerTypes);
    uiSelectBoxOwnerType.setOnChange("ChangeOwnerType");

    UIFormInputSet uiSettingSet = new UIFormInputSet("PageSetting");
    uiSettingSet
        .addUIFormInput(new UIFormStringInput("pageId", "pageId", null).setEditable(false))
        .addUIFormInput(uiSelectBoxOwnerType)
        .addUIFormInput(ownerIdInput)
        .addUIFormInput(
            new UIFormStringInput("name", "name", null)
                .addValidator(StringLengthValidator.class, 3, 30)
                .addValidator(IdentifierValidator.class)
                .addValidator(MandatoryValidator.class))
        .addUIFormInput(
            new UIFormStringInput("title", "title", null)
                .addValidator(StringLengthValidator.class, 3, 120))
        .addUIFormInput(new UIFormCheckBoxInput("showMaxWindow", "showMaxWindow", false));
    addUIFormInput(uiSettingSet);
    setSelectedTab(uiSettingSet.getId());

    // WebuiRequestContext context = WebuiRequestContext.getCurrentInstance();
    // Param param = initParams.getParam("PageTemplate");
    // List<SelectItemCategory> itemCategories =
    // (List<SelectItemCategory>)param.getMapGroovyObject(context);
    // UIFormInputItemSelector uiTemplate = new UIFormInputItemSelector("Template", "template");
    // uiTemplate.setItemCategories(itemCategories);
    // addUIFormInput(uiTemplate);

    uiPermissionSetting = createUIComponent(UIFormInputSet.class, "PermissionSetting", null);
    UIListPermissionSelector uiListPermissionSelector =
        createUIComponent(UIListPermissionSelector.class, null, null);
    uiListPermissionSelector.configure("UIListPermissionSelector", "accessPermissions");
    uiListPermissionSelector.addValidator(EmptyIteratorValidator.class);
    uiPermissionSetting.addChild(uiListPermissionSelector);
    uiPermissionSetting.setSelectedComponent(uiListPermissionSelector.getId());
    UIPermissionSelector uiEditPermission =
        createUIComponent(UIPermissionSelector.class, null, null);
    uiEditPermission.setRendered(false);
    uiEditPermission.addValidator(
        org.exoplatform.webui.organization.UIPermissionSelector.MandatoryValidator.class);
    uiEditPermission.setEditable(false);
    uiEditPermission.configure("UIPermissionSelector", "editPermission");
    uiPermissionSetting.addChild(uiEditPermission);

    // TODO: This following line is fixed for bug PORTAL-2127
    uiListPermissionSelector
        .getChild(UIFormPopupWindow.class)
        .setId("UIPageFormPopupGroupMembershipSelector");

    List<String> groups = configService.getMakableNavigations(pcontext.getRemoteUser(), true);
    if (groups.size() > 0) {
      Collections.sort(groups);
      ownerTypes.add(new SelectItemOption<String>(PortalConfig.GROUP_TYPE));
      List<SelectItemOption<String>> groupsItem = new ArrayList<SelectItemOption<String>>();
      for (String group : groups) {
        groupsItem.add(new SelectItemOption<String>(group));
      }
      groupIdSelectBox = new UIFormSelectBox(OWNER_ID, OWNER_ID, groupsItem);
      groupIdSelectBox.setOnChange("ChangeOwnerId");
      groupIdSelectBox.setParent(uiSettingSet);
    }
    setActions(new String[] {"Save", "Close"});
  }
  @Override
  public void activate() {
    UIJCRExplorer uiExplorer = getAncestorOfType(UIJCRExplorer.class);
    try {
      currentNode = uiExplorer.getCurrentNode();
      initParams();
    } catch (Exception E) {
      return;
    }

    /** node field */
    UIFormStringInput uiFormNameValueStringInput = new UIFormStringInput(NODE, NODE, nameValue_);
    uiFormNameValueStringInput.setEditable(false);

    /** visible field */
    UIFormCheckBoxInput<Boolean> uiFormVisibleValueCheckBoxInput =
        new UIFormCheckBoxInput<Boolean>(IS_VISIBLE, IS_VISIBLE, false);
    uiFormVisibleValueCheckBoxInput.setChecked(isVisible);

    /** navigation node field */
    UIFormStringInput uiFormNavigationNodeValueStringInput =
        new UIFormStringInput(
            NAVIGATION_NODE_STRING_INPUT, NAVIGATION_NODE_STRING_INPUT, navigationNode_);
    uiFormNavigationNodeValueStringInput.setEditable(false);

    UIFormInputSetWithAction navigationNodeInputSet =
        new UIFormInputSetWithAction(NAVIGATION_NODE_INPUT_SET);
    navigationNodeInputSet.setActionInfo(
        NAVIGATION_NODE_STRING_INPUT,
        new String[] {"SelectNavigationNode", "RemoveNavigationNode"});
    navigationNodeInputSet.addUIFormInput(uiFormNavigationNodeValueStringInput);

    /** index field */
    UIFormStringInput uiFormIndexValueStringInput =
        new UIFormStringInput(INDEX, INDEX, String.valueOf(index_));
    try {
      uiFormIndexValueStringInput.addValidator(NumberFormatValidator.class);
    } catch (Exception E) {
      // TODO : add log
    }

    /** clickable field */
    UIFormCheckBoxInput<Boolean> uiFormClickableValueCheckBoxInput =
        new UIFormCheckBoxInput<Boolean>(IS_CLICKABLE, IS_CLICKABLE, false);
    uiFormClickableValueCheckBoxInput.setChecked(isClickable);

    /** TARGET PAGE */
    UIFormStringInput uiFormTargetPageValueStringInput =
        new UIFormStringInput(
            LIST_TARGET_PAGE_STRING_INPUT, LIST_TARGET_PAGE_STRING_INPUT, listTargetPage_);
    uiFormTargetPageValueStringInput.setEditable(false);

    UIFormInputSetWithAction targetPageInputSet =
        new UIFormInputSetWithAction(LIST_TARGET_PAGE_INPUT_SET);

    targetPageInputSet.setActionInfo(
        LIST_TARGET_PAGE_STRING_INPUT,
        new String[] {"SelectListTargetPage", "RemoveListTargetPage"});
    targetPageInputSet.addUIFormInput(uiFormTargetPageValueStringInput);

    /** DETAIL_TARGET PAGE */
    UIFormStringInput uiFormDetailTargetPageValueStringInput =
        new UIFormStringInput(
            DETAIL_TARGET_PAGE_STRING_INPUT, DETAIL_TARGET_PAGE_STRING_INPUT, detailTargetPage_);
    uiFormDetailTargetPageValueStringInput.setEditable(false);
    UIFormInputSetWithAction detailTargetPageInputSet =
        new UIFormInputSetWithAction(DETAIL_TARGET_PAGE_INPUT_SET);
    detailTargetPageInputSet.setActionInfo(
        DETAIL_TARGET_PAGE_STRING_INPUT,
        new String[] {"SelectDetailTargetPage", "RemoveDetailTargetPage"});
    detailTargetPageInputSet.addUIFormInput(uiFormDetailTargetPageValueStringInput);

    /*
    if (!navigationNode_.equals("")) {
    	uiFormIndexValueStringInput.setEnable(false);
    	uiFormClickableValueRadioBoxInput.setEnable(false);
    }
    */
    addChild(uiFormNameValueStringInput);
    addChild(uiFormVisibleValueCheckBoxInput);
    addChild(navigationNodeInputSet);
    if (renderIndexField) {
      addChild(uiFormIndexValueStringInput);
    }
    addChild(uiFormClickableValueCheckBoxInput);
    addChild(targetPageInputSet);
    addChild(detailTargetPageInputSet);

    setActions(new String[] {"Save", "Cancel"});
  }