View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.devacfr.maven.skins.reflow.context;
20  
21  import javax.annotation.Nonnull;
22  
23  import org.devacfr.maven.skins.reflow.ISkinConfig;
24  import org.devacfr.maven.skins.reflow.SkinConfigTool;
25  import org.devacfr.maven.skins.reflow.model.Toc;
26  import org.devacfr.maven.skins.reflow.model.TocSidebar;
27  
28  import static java.util.Objects.requireNonNull;
29  
30  /**
31   * The context associate to page of frame page.
32   *
33   * @author Christophe Friederich
34   * @since 2.0
35   */
36  public class FrameContext extends Context<FrameContext> {
37  
38      /** */
39      private final String documentParent;
40  
41      /** */
42      private final Toc<?> toc;
43  
44      /**
45       * @param config
46       *            a config (can not be {@code null}).
47       * @param documentParent
48       *            name of parent.
49       */
50      public FrameContext(final @Nonnull ISkinConfig config, @Nonnull final String documentParent) {
51          super(config, ContextType.frame);
52          final String type = config.getPropertyValue(Toc.COMPONENT, String.class, "sidebar");
53          // enforce sidebar
54          if ("top".equals(type) || "sidebar".equals(type)) {
55              toc = new TocSidebar(config);
56          } else {
57              toc = new Toc<Toc<?>>("", "") {};
58          }
59  
60          this.documentParent = requireNonNull(documentParent);
61  
62          this.addChildren(this.toc);
63      }
64  
65      /**
66       * @return Returns a {@link String} representing the name of parent page.
67       */
68      public String getDocumentParent() {
69          return documentParent;
70      }
71  
72      /**
73       * @return Returns a {@link String} representing the slugged name(pageId) of parent page.
74       */
75      public String getSlugDocumentParent() {
76          return SkinConfigTool.slugFilename(documentParent);
77      }
78  
79      /**
80       * @return returns the {@link Toc}.
81       */
82      public Toc<?> getToc() {
83          return toc;
84      }
85  }