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  
20  package org.apache.myfaces.tobago.renderkit.html.scarborough.standard.tag;
21  
22  import org.apache.myfaces.tobago.context.Markup;
23  import org.apache.myfaces.tobago.internal.component.AbstractUIData;
24  import org.apache.myfaces.tobago.internal.component.AbstractUITree;
25  import org.apache.myfaces.tobago.internal.component.AbstractUITreeNode;
26  import org.apache.myfaces.tobago.renderkit.LayoutComponentRendererBase;
27  import org.apache.myfaces.tobago.util.ComponentUtils;
28  
29  import javax.faces.component.UIComponent;
30  import javax.faces.context.FacesContext;
31  import java.io.IOException;
32  
33  public class TreeNodeRendererBase extends LayoutComponentRendererBase {
34  
35    @Override
36    public void prepareRender(FacesContext facesContext, UIComponent component) throws IOException {
37      super.prepareRender(facesContext, component);
38  
39      final AbstractUITreeNode node = (AbstractUITreeNode) component;
40      final AbstractUIData data = ComponentUtils.findAncestor(node, AbstractUIData.class);
41      if (data instanceof AbstractUITree && ((AbstractUITree) data).getSelectedState().isSelected(node.getPath())) {
42        ComponentUtils.addCurrentMarkup(node, Markup.SELECTED);
43      }
44      if (node.isFolder()) {
45        ComponentUtils.addCurrentMarkup(node, Markup.FOLDER);
46        if (data.getExpandedState().isExpanded(node.getPath())) {
47          ComponentUtils.addCurrentMarkup(node, Markup.EXPANDED);
48        }
49      }
50    }
51  
52  }