docs: public void readResourceInfo(CmsObject cms, CmsResource resource, CmsResourceInfoBean resInfo, String locale)
      throws CmsException {
  
          I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(resource.getTypeId());
          Locale wpLocale = OpenCms.getWorkplaceManager().getWorkplaceLocale(cms);
          resInfo.setTitle(resource.getName());
          resInfo.setStructureId(resource.getStructureId());
          resInfo.setDescription(CmsWorkplaceMessages.getResourceTypeName(wpLocale, type.getTypeName()));
          resInfo.setResourcePath(cms.getSitePath(resource));
          resInfo.setResourceType(type.getTypeName());
          resInfo.setBigIconClasses(
              CmsIconUtil.getIconClasses(CmsIconUtil.getDisplayType(cms, resource), resource.getName(), false));
          // set the default file and detail type info
          String detailType = CmsResourceIcon.getDefaultFileOrDetailType(cms, resource);
          if (detailType != null) {
              resInfo.setSmallIconClasses(CmsIconUtil.getIconClasses(detailType, null, true));
          }
          resInfo.setSize((resource.getLength() / 1024) + " kb");
          resInfo.setLastModified(new Date(resource.getDateLastModified()));
          resInfo.setNoEditReason(new CmsResourceUtil(cms, resource).getNoEditReason(wpLocale, true));
          // reading default explorer-type properties
          CmsExplorerTypeSettings setting = OpenCms.getWorkplaceManager().getExplorerTypeSetting(type.getTypeName());
          List<String> properties;
          if (OpenCms.getResourceManager().matchResourceType(
              CmsResourceTypeImage.getStaticTypeName(),
              resource.getTypeId())) {
              properties = Lists.newArrayList(
                  CmsPropertyDefinition.PROPERTY_TITLE,
                  CmsPropertyDefinition.PROPERTY_COPYRIGHT);
          } else {
              properties = setting.getProperties();
              String reference = setting.getReference();
              while ((properties.size() == 0) && !CmsStringUtil.isEmptyOrWhitespaceOnly(reference)) {
                  // looking up properties from referenced explorer types if properties list is empty
                  setting = OpenCms.getWorkplaceManager().getExplorerTypeSetting(reference);
                  properties = setting.getProperties();
                  reference = setting.getReference();
              }
          }
          Map<String, String> props = new LinkedHashMap<String, String>();
          Iterator<String> propIt = properties.iterator();
          while (propIt.hasNext()) {
              String propertyName = propIt.next();
              CmsProperty property = cms.readPropertyObject(resource, propertyName, false);
              if (!property.isNullProperty()) {
                  props.put(property.getName(), property.getValue());
              } else {
                  props.put(propertyName, null);
              }
          }
          resInfo.setProperties(props);
          resInfo.setPreviewContent(getPreviewContent(cms, resource, CmsLocaleManager.getLocale(locale)));
      }