content: /*
   * This library is part of OpenCms -
   * the Open Source Content Management System
   *
   * Copyright (c) Alkacon Software GmbH & Co. KG (https://www.alkacon.com)
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * For further information about Alkacon Software, please see the
   * company website: https://www.alkacon.com
   *
   * For further information about OpenCms, please see the
   * project website: https://www.opencms.org
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
  package org.opencms.gwt.client.property;
  
  import org.opencms.gwt.shared.CmsListInfoBean;
  import org.opencms.gwt.shared.property.CmsClientProperty;
  import org.opencms.gwt.shared.property.CmsClientTemplateBean;
  import org.opencms.gwt.shared.property.CmsPropertyModification;
  import org.opencms.util.CmsUUID;
  
  import java.util.List;
  import java.util.Map;
  
  /**
   * An interface for sitemap entry editor modes.<p>
   *
   * @since 8.0.0
   */
  public interface I_CmsPropertyEditorHandler {
  
      /**
       * Gets a list of the names of available properties.<p>
       *
       * @return a list of property names
       */
      List<String> getAllPropertyNames();
  
      /**
       * Returns the default file id, if available.<p>
       *
       * @return the default file id
       */
      CmsUUID getDefaultFileId();
  
      /**
       * Gets the default file path, if available.
       * 
       *  @return the default file path
       */
      String getDefaultFilePath();
  
      /**
       * Returns the default file properties, if available.<p>
       *
       * @return the default file properties
       */
      Map<String, CmsClientProperty> getDefaultFileProperties();
  
      /**
       * Returns the text which should be used for the title of the sitemap entry editor dialog.
       *
       * @return the dialog title for the sitemap entry editor
       */
      String getDialogTitle();
  
      /**
       * Returns the URL names which the new URL name of the entry must not be equal to.<p>
       *
       * @return a list of forbidden URL names
       */
      List<String> getForbiddenUrlNames();
  
      /**
       * Returns the structure id of the resource being edited.<p>
       *
       * @return the structure id of the resource being edited
       */
      CmsUUID getId();
  
      /**
       * Returns an inherited property value.<p>
       *
       * This is the value that the resource being edited would inherit if it didn't define its own value for that property.<p>
       *
       * @param name the name of the property
       * @return the inherited property
       */
      CmsClientProperty getInheritedProperty(String name);
  
      /**
       * Returns the class name which should be added when displaying resource info boxes.<p>
       *
       *
       * @return the class name to use for displaying resource info boxes
       */
      String getModeClass();
  
      /**
       * Returns the URL name with which the sitemap entry editor should be initialized.<p>
       *
       * @return the initial URL name
       */
      String getName();
  
      /**
       * Returns the properties of the resource being edited.<p>
       *
       * @return the properties of the resource being edited
       */
      Map<String, CmsClientProperty> getOwnProperties();
  
      /**
       * Returns the page info bean.<p>
       *
       * @return the page info bean
       */
      CmsListInfoBean getPageInfo();
  
      /**
       * Gets the path of the resource being edited.<p>
       *
       * @return the path of the resource being edited
       */
      String getPath();
  
      /**
       * Returns a map of beans representing the selectable templates.<p>
       *
       * @return a map of selectable templates
       */
      Map<String, CmsClientTemplateBean> getPossibleTemplates();
  
      /**
       * Handles the submit action for the sitemap entry editor.<p>
       *
       * @param newUrlName the new url name
       * @param vfsPath the new vfs path
       * @param propertyChanges the property changes
       * @param editedName if true, the URL name has been edited
       * @param reloadMode the information about which entry should reloaded
       */
      void handleSubmit(
          String newUrlName,
          String vfsPath,
          List<CmsPropertyModification> propertyChanges,
          boolean editedName,
          CmsReloadMode reloadMode);
  
      /**
       * Returns if the handled entry has an editable name.<p>
       *
       * @return <code>true</code> if the handled entry has an editable name
       */
      boolean hasEditableName();
  
      /**
       * Checks if the resource being edited is a folder.<p>
       *
       * @return true if the resource being edited is a folder
       */
      boolean isFolder();
  
      /**
       * Checks whether the property with the given name should be hidden.<p>
       *
       * @param key the property name
       *
       * @return true if the property should be hidden
       */
      boolean isHiddenProperty(String key);
  
      /**
       * Should return true if the sitemap editor is running in simple mode.<p>
       *
       * @return true if the sitemap editor is running in simple mode
       */
      boolean isSimpleMode();
  
      /**
       * Returns true if the property editor should use only ADE templates.<p>
       *
       * @return true if the property editor should use only ADE templates
       */
      boolean useAdeTemplates();
  
  }
  