All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.day.cq.wcm.api.designer.Designer Maven / Gradle / Ivy

There is a newer version: 2024.11.18751.20241128T090041Z-241100
Show newest version
/*
 * Copyright 1997-2008 Day Management AG
 * Barfuesserplatz 6, 4001 Basel, Switzerland
 * All Rights Reserved.
 *
 * This software is the confidential and proprietary information of
 * Day Management AG, ("Confidential Information"). You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Day.
 */

package com.day.cq.wcm.api.designer;


import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.NameConstants;
import com.day.cq.wcm.api.PageManager;
import org.apache.sling.api.resource.Resource;
import org.osgi.annotation.versioning.ProviderType;

/**
 * Specifies the interface of the designer. It provides methods for retrieving
 * design information.
 * Designs mirror the contents structure to some extend.
 * The pages hold path references to the designs.
 * If not path reference is specified or not inherited, the default design provided by
 * {@link #getDefaultDesign()} is used.
 */
@ProviderType
public interface Designer {

    /**
     * Home of the designs
     * @deprecated since 5.8.
     */
    String DESIGN_HOME = "/etc/designs";

    /**
     * path to default design
     * @deprecated since 5.8. use {@link #getDefaultDesign()} instead.
     */
    String DEFAULT_DESIGN_PATH = "/etc/designs/default";

    /**
     * node type for design nodes. use pages for now.
     */
    String NT_DESIGN = NameConstants.NT_PAGE;

    /**
     * Returns the path to the design of the given page. If it does not specify
     * such a path, the page's parent design path is returned or if the page
     * does not have a parent, default design {@link #getDefaultDesign()}
     * is returned
     * @param page the page
     * @return the design path or null if page is null;
     */
    String getDesignPath(Page page);

    /**
     * Returns the design for the given page.
     * @param page the page to retrieve the design from.
     * @return the design or null if the page is null.
     */
    Design getDesign(Page page);

    /**
     * Checks if the design with the given id exists.
     * @param id the design id
     * @return true if the design exists.
     */
    boolean hasDesign(String id);

    /**
     * Returns a design by id.
     * @param id id of the design
     * @return the design or the default design if it does not exist.
     * @see Design#getId()
     */
    Design getDesign(String id);

    /**
     * Returns the style for a given resource and cell path. It's a convenience
     * method that retrieves the containing page of the resource, resolves
     * its design and then gets the style. if cellPath is
     * null the name of the resource is used.
     *
     * @param res the resource
     * @param cellPath the path of the design cell
     * @return the style or null
     * @see PageManager#getContainingPage(Resource)
     * @see #getDesign(Page)
     * @see Design#getStyle(String)
     */
    Style getStyle(Resource res, String cellPath);

    /**
     * Returns the style for a given resource. It's a convenience
     * method that retrieves the containing page of the resource, resolves
     * its design and then gets the style. the cell path is constructed by walking
     * the content path.
     *
     * @param res the resource
     * @return the style or null
     * @see PageManager#getContainingPage(Resource)
     * @see #getDesign(Page)
     * @see Design#getStyle(String)
     */
    Style getStyle(Resource res);

    /**
     * Returns the default Design
     * @return the default Design
     * @see Design
     */
    Design getDefaultDesign();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy