Coverage Report - org.seasar.uruma.renderer.impl.TreeViewerRenderer
 
Classes in this File Line Coverage Branch Coverage Complexity
TreeViewerRenderer
100%
29/29
86%
12/14
0
 
 1  
 /*
 2  
  * Copyright 2004-2008 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.uruma.renderer.impl;
 17  
 
 18  
 import java.util.List;
 19  
 
 20  
 import org.eclipse.jface.viewers.IBaseLabelProvider;
 21  
 import org.eclipse.jface.viewers.IContentProvider;
 22  
 import org.eclipse.jface.viewers.TreeNodeContentProvider;
 23  
 import org.eclipse.jface.viewers.TreeViewer;
 24  
 import org.eclipse.swt.SWT;
 25  
 import org.eclipse.swt.widgets.Tree;
 26  
 import org.eclipse.swt.widgets.TreeItem;
 27  
 import org.seasar.uruma.component.UIComponent;
 28  
 import org.seasar.uruma.component.UICompositeComponent;
 29  
 import org.seasar.uruma.component.UIElement;
 30  
 import org.seasar.uruma.component.jface.TreeComponent;
 31  
 import org.seasar.uruma.component.jface.TreeItemComponent;
 32  
 import org.seasar.uruma.context.PartContext;
 33  
 import org.seasar.uruma.context.WidgetHandle;
 34  
 import org.seasar.uruma.viewer.GenericLabelProvider;
 35  
 import org.seasar.uruma.viewer.UrumaTreeViewer;
 36  
 
 37  
 /**
 38  
  * {@link TreeViewer} のレンダリングを行うクラスです。<br />
 39  
  * 
 40  
  * @author y-komori
 41  
  */
 42  8
 public class TreeViewerRenderer extends
 43  
         AbstractViewerRenderer<TreeComponent, UrumaTreeViewer, Tree> {
 44  
 
 45  
     @Override
 46  
     protected Class<Tree> getWidgetType() {
 47  20
         return Tree.class;
 48  
     }
 49  
 
 50  
     /*
 51  
      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#canCreateViewer(org.seasar.uruma.component.UICompositeComponent)
 52  
      */
 53  
     @Override
 54  
     protected boolean canCreateViewer(final UICompositeComponent component) {
 55  
         // TreeItemComponent が存在する場合、Viewer を生成しない
 56  8
         List<UIElement> children = component.getChildren();
 57  8
         for (UIElement child : children) {
 58  4
             if (child instanceof TreeItemComponent) {
 59  4
                 return false;
 60  
             }
 61  
         }
 62  4
         return true;
 63  
     }
 64  
 
 65  
     /*
 66  
      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#renderAfter(org.seasar.uruma.context.WidgetHandle,
 67  
      *      org.seasar.uruma.component.UIComponent,
 68  
      *      org.seasar.uruma.context.WidgetHandle,
 69  
      *      org.seasar.uruma.context.PartContext)
 70  
      */
 71  
     @Override
 72  
     public void renderAfter(final WidgetHandle handle,
 73  
             final UIComponent uiComponent, final WidgetHandle parent,
 74  
             final PartContext context) {
 75  8
         if (handle.instanceOf(Tree.class)) {
 76  4
             TreeComponent component = (TreeComponent) uiComponent;
 77  4
             Tree tree = handle.<Tree> getCastWidget();
 78  4
             int autoExpandLevel = Integer.parseInt(component.autoExpandLevel);
 79  4
             if (autoExpandLevel >= 1) {
 80  4
                 expandTree(tree.getItems(), 1, autoExpandLevel);
 81  
             }
 82  
         }
 83  8
         super.renderAfter(handle, uiComponent, parent, context);
 84  8
     }
 85  
 
 86  
     protected void expandTree(final TreeItem[] items, final int currentLevel,
 87  
             final int maxLevel) {
 88  28
         if (currentLevel >= maxLevel) {
 89  16
             return;
 90  
         }
 91  
 
 92  36
         for (TreeItem treeItem : items) {
 93  24
             treeItem.setExpanded(true);
 94  
         }
 95  
 
 96  36
         for (TreeItem treeItem : items) {
 97  24
             expandTree(treeItem.getItems(), currentLevel + 1, maxLevel);
 98  
         }
 99  12
     }
 100  
 
 101  
     /*
 102  
      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#doRenderViewer(org.seasar.uruma.component.jface.CompositeComponent,
 103  
      *      org.eclipse.jface.viewers.Viewer)
 104  
      */
 105  
     @Override
 106  
     protected void doRenderViewer(final TreeComponent uiComponent,
 107  
             final UrumaTreeViewer viewer) {
 108  4
         int autoExpandLevel = Integer.parseInt(uiComponent.autoExpandLevel);
 109  4
         viewer.setAutoExpandLevel(autoExpandLevel);
 110  4
     }
 111  
 
 112  
     /*
 113  
      * @see org.seasar.uruma.renderer.impl.AbstractRenderer#getDefaultStyle()
 114  
      */
 115  
     @Override
 116  
     protected int getDefaultStyle() {
 117  8
         return SWT.BORDER;
 118  
     }
 119  
 
 120  
     /*
 121  
      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getDefaultLabelProvider()
 122  
      */
 123  
     @Override
 124  
     protected IBaseLabelProvider getDefaultLabelProvider() {
 125  4
         return new GenericLabelProvider();
 126  
     }
 127  
 
 128  
     /*
 129  
      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getViewerType()
 130  
      */
 131  
     @Override
 132  
     protected Class<UrumaTreeViewer> getViewerType() {
 133  8
         return UrumaTreeViewer.class;
 134  
     }
 135  
 
 136  
     /*
 137  
      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getDefaultContentProvider()
 138  
      */
 139  
     @Override
 140  
     protected IContentProvider getDefaultContentProvider() {
 141  4
         return new TreeNodeContentProvider();
 142  
     }
 143  
 }