docs: public boolean setup(CmsObject cms, CmsToolRootHandler root, String resourcePath) {
  
          try {
              resourcePath = cms.getSitePath(cms.readResource(resourcePath));
          } catch (CmsException e) {
              // should not happen
              if (LOG.isErrorEnabled()) {
                  LOG.error(e.getLocalizedMessage(), e);
              }
          }
          CmsJspNavElement navElem = new CmsJspNavBuilder(cms).getNavigationForResource(resourcePath);
  
          String name = navElem.getNavText();
          if (CmsMessages.isUnknownKey(name)) {
              name = navElem.getTitle();
          }
          if (CmsStringUtil.isEmptyOrWhitespaceOnly(name)) {
              name = "${key." + Messages.GUI_TOOLS_DEFAULT_NAME_0 + "}";
          }
          String shortName = name;
          if (name.indexOf(VALUE_SEPARATOR) >= 0) {
              shortName = name.substring(0, name.indexOf(VALUE_SEPARATOR));
              name = name.substring(name.indexOf(VALUE_SEPARATOR) + 1);
          }
          setName(name);
          setShortName(shortName);
  
          String iconPath = navElem.getNavImage();
          if (CmsStringUtil.isEmptyOrWhitespaceOnly(iconPath)) {
              iconPath = "admin/images/default_tool_big.png:admin/images/default_tool_small.png";
          }
          String smallIconPath = iconPath;
          if (iconPath.indexOf(VALUE_SEPARATOR) >= 0) {
              smallIconPath = iconPath.substring(iconPath.indexOf(VALUE_SEPARATOR) + 1);
              iconPath = iconPath.substring(0, iconPath.indexOf(VALUE_SEPARATOR));
          }
          setIconPath(iconPath);
          setSmallIconPath(smallIconPath);
  
          String helpText = navElem.getDescription();
          if (CmsStringUtil.isEmptyOrWhitespaceOnly(helpText)) {
              helpText = "${key." + Messages.GUI_TOOLS_DEFAULT_HELP_0 + "}";
          }
          String disabledHelpText = DEFAULT_DISABLED_HELPTEXT;
          if (helpText.indexOf(VALUE_SEPARATOR) >= 0) {
              disabledHelpText = helpText.substring(helpText.indexOf(VALUE_SEPARATOR) + 1);
              helpText = helpText.substring(0, helpText.indexOf(VALUE_SEPARATOR));
          }
          setHelpText(helpText);
          setDisabledHelpText(disabledHelpText);
  
          String group = navElem.getInfo();
          if (CmsStringUtil.isEmptyOrWhitespaceOnly(group)) {
              group = "${key." + Messages.GUI_TOOLS_DEFAULT_GROUP_0 + "}";
          }
  
          String path = resourcePath;
          setLink(cms, resourcePath);
          if (CmsResource.isFolder(path)) {
              path = CmsToolManager.TOOLPATH_SEPARATOR
                  + resourcePath.substring(
                      root.getUri().length(),
                      resourcePath.lastIndexOf(CmsToolManager.TOOLPATH_SEPARATOR));
          } else {
              if (resourcePath.lastIndexOf('.') > -1) {
                  path = CmsToolManager.TOOLPATH_SEPARATOR
                      + resourcePath.substring(root.getUri().length(), resourcePath.lastIndexOf('.'));
              } else {
                  path = CmsToolManager.TOOLPATH_SEPARATOR + resourcePath.substring(root.getUri().length());
              }
          }
          // install point
          setPath(path);
          setGroup(group);
          setPosition(navElem.getNavPosition());
  
          // parameters
          setParameters(cms, resourcePath);
  
          return !path.equals(resourcePath);
      }