Coverage Report - org.seasar.uruma.renderer.RendererFactory
 
Classes in this File Line Coverage Branch Coverage Complexity
RendererFactory
96%
43/45
50%
1/2
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;
 17  
 
 18  
 import java.util.HashMap;
 19  
 import java.util.Map;
 20  
 
 21  
 import org.seasar.uruma.component.UIComponent;
 22  
 import org.seasar.uruma.component.jface.BrowserComponent;
 23  
 import org.seasar.uruma.component.jface.ButtonComponent;
 24  
 import org.seasar.uruma.component.jface.CTabFolderComponent;
 25  
 import org.seasar.uruma.component.jface.CTabItemComponent;
 26  
 import org.seasar.uruma.component.jface.CanvasComponent;
 27  
 import org.seasar.uruma.component.jface.ComboComponent;
 28  
 import org.seasar.uruma.component.jface.CompositeComponent;
 29  
 import org.seasar.uruma.component.jface.CoolBarComponent;
 30  
 import org.seasar.uruma.component.jface.CoolItemComponent;
 31  
 import org.seasar.uruma.component.jface.DateTimeComponent;
 32  
 import org.seasar.uruma.component.jface.GroupComponent;
 33  
 import org.seasar.uruma.component.jface.LabelComponent;
 34  
 import org.seasar.uruma.component.jface.LinkComponent;
 35  
 import org.seasar.uruma.component.jface.MenuComponent;
 36  
 import org.seasar.uruma.component.jface.MenuItemComponent;
 37  
 import org.seasar.uruma.component.jface.ProgressBarComponent;
 38  
 import org.seasar.uruma.component.jface.SashFormComponent;
 39  
 import org.seasar.uruma.component.jface.ScaleComponent;
 40  
 import org.seasar.uruma.component.jface.SeparatorComponent;
 41  
 import org.seasar.uruma.component.jface.SliderComponent;
 42  
 import org.seasar.uruma.component.jface.SpinnerComponent;
 43  
 import org.seasar.uruma.component.jface.TabFolderComponent;
 44  
 import org.seasar.uruma.component.jface.TabItemComponent;
 45  
 import org.seasar.uruma.component.jface.TableColumnComponent;
 46  
 import org.seasar.uruma.component.jface.TableComponent;
 47  
 import org.seasar.uruma.component.jface.TableItemComponent;
 48  
 import org.seasar.uruma.component.jface.TextComponent;
 49  
 import org.seasar.uruma.component.jface.ToolBarComponent;
 50  
 import org.seasar.uruma.component.jface.ToolItemComponent;
 51  
 import org.seasar.uruma.component.jface.TreeComponent;
 52  
 import org.seasar.uruma.component.jface.TreeItemComponent;
 53  
 import org.seasar.uruma.component.jface.WindowComponent;
 54  
 import org.seasar.uruma.component.rcp.ViewPartComponent;
 55  
 import org.seasar.uruma.component.rcp.WorkbenchComponent;
 56  
 import org.seasar.uruma.core.UrumaMessageCodes;
 57  
 import org.seasar.uruma.exception.NotFoundException;
 58  
 import org.seasar.uruma.renderer.impl.BrowserRenderer;
 59  
 import org.seasar.uruma.renderer.impl.ButtonRenderer;
 60  
 import org.seasar.uruma.renderer.impl.CTabFolderRenderer;
 61  
 import org.seasar.uruma.renderer.impl.CTabItemRenderer;
 62  
 import org.seasar.uruma.renderer.impl.CanvasRenderer;
 63  
 import org.seasar.uruma.renderer.impl.ComboViewerRenderer;
 64  
 import org.seasar.uruma.renderer.impl.CompositeRenderer;
 65  
 import org.seasar.uruma.renderer.impl.CoolBarRenderer;
 66  
 import org.seasar.uruma.renderer.impl.CoolItemRenderer;
 67  
 import org.seasar.uruma.renderer.impl.DateTimeRenderer;
 68  
 import org.seasar.uruma.renderer.impl.GroupRenderer;
 69  
 import org.seasar.uruma.renderer.impl.LabelRenderer;
 70  
 import org.seasar.uruma.renderer.impl.LinkRenderer;
 71  
 import org.seasar.uruma.renderer.impl.MenuItemRenderer;
 72  
 import org.seasar.uruma.renderer.impl.MenuManagerRenderer;
 73  
 import org.seasar.uruma.renderer.impl.NullRenderer;
 74  
 import org.seasar.uruma.renderer.impl.ProgressBarRenderer;
 75  
 import org.seasar.uruma.renderer.impl.SashFormRenderer;
 76  
 import org.seasar.uruma.renderer.impl.ScaleRenderer;
 77  
 import org.seasar.uruma.renderer.impl.SeparatorRenderer;
 78  
 import org.seasar.uruma.renderer.impl.SliderRenderer;
 79  
 import org.seasar.uruma.renderer.impl.SpinnerRenderer;
 80  
 import org.seasar.uruma.renderer.impl.TabFolderRenderer;
 81  
 import org.seasar.uruma.renderer.impl.TabItemRenderer;
 82  
 import org.seasar.uruma.renderer.impl.TableColumnRenderer;
 83  
 import org.seasar.uruma.renderer.impl.TableItemRenderer;
 84  
 import org.seasar.uruma.renderer.impl.TableViewerRenderer;
 85  
 import org.seasar.uruma.renderer.impl.TextRenderer;
 86  
 import org.seasar.uruma.renderer.impl.ToolBarRenderer;
 87  
 import org.seasar.uruma.renderer.impl.ToolItemRenderer;
 88  
 import org.seasar.uruma.renderer.impl.TreeItemRenderer;
 89  
 import org.seasar.uruma.renderer.impl.TreeViewerRenderer;
 90  
 import org.seasar.uruma.renderer.impl.ViewPartRenderer;
 91  
 import org.seasar.uruma.renderer.impl.WindowRenderer;
 92  
 import org.seasar.uruma.util.AssertionUtil;
 93  
 
 94  
 /**
 95  
  * レンダラを取得するためのファクトリクラスです。<br />
 96  
  * 
 97  
  * @author y-komori
 98  
  */
 99  0
 public class RendererFactory {
 100  4
     private static final Map<Class<? extends UIComponent>, Renderer> rendererMap = new HashMap<Class<? extends UIComponent>, Renderer>();
 101  
 
 102  
     static {
 103  4
         addRenderer(WindowComponent.class, new WindowRenderer());
 104  4
         addRenderer(ViewPartComponent.class, new ViewPartRenderer());
 105  
 
 106  4
         addRenderer(CompositeComponent.class, new CompositeRenderer());
 107  4
         addRenderer(ComboComponent.class, new ComboViewerRenderer());
 108  4
         addRenderer(TabFolderComponent.class, new TabFolderRenderer());
 109  4
         addRenderer(TabItemComponent.class, new TabItemRenderer());
 110  4
         addRenderer(TableComponent.class, new TableViewerRenderer());
 111  4
         addRenderer(TableColumnComponent.class, new TableColumnRenderer());
 112  4
         addRenderer(TableItemComponent.class, new TableItemRenderer());
 113  4
         addRenderer(SpinnerComponent.class, new SpinnerRenderer());
 114  4
         addRenderer(CTabFolderComponent.class, new CTabFolderRenderer());
 115  4
         addRenderer(CTabItemComponent.class, new CTabItemRenderer());
 116  4
         addRenderer(GroupComponent.class, new GroupRenderer());
 117  4
         addRenderer(ToolBarComponent.class, new ToolBarRenderer());
 118  4
         addRenderer(ToolItemComponent.class, new ToolItemRenderer());
 119  4
         addRenderer(CoolBarComponent.class, new CoolBarRenderer());
 120  4
         addRenderer(CoolItemComponent.class, new CoolItemRenderer());
 121  4
         addRenderer(CanvasComponent.class, new CanvasRenderer());
 122  4
         addRenderer(SashFormComponent.class, new SashFormRenderer());
 123  4
         addRenderer(BrowserComponent.class, new BrowserRenderer());
 124  
 
 125  4
         addRenderer(TreeComponent.class, new TreeViewerRenderer());
 126  4
         addRenderer(TreeItemComponent.class, new TreeItemRenderer());
 127  
 
 128  4
         addRenderer(ButtonComponent.class, new ButtonRenderer());
 129  4
         addRenderer(LabelComponent.class, new LabelRenderer());
 130  4
         addRenderer(TextComponent.class, new TextRenderer());
 131  4
         addRenderer(ProgressBarComponent.class, new ProgressBarRenderer());
 132  4
         addRenderer(ScaleComponent.class, new ScaleRenderer());
 133  4
         addRenderer(SliderComponent.class, new SliderRenderer());
 134  4
         addRenderer(LinkComponent.class, new LinkRenderer());
 135  
 
 136  4
         addRenderer(MenuComponent.class, new MenuManagerRenderer());
 137  4
         addRenderer(MenuItemComponent.class, new MenuItemRenderer());
 138  4
         addRenderer(SeparatorComponent.class, new SeparatorRenderer());
 139  4
         addRenderer(DateTimeComponent.class, new DateTimeRenderer());
 140  
 
 141  4
         addRenderer(WorkbenchComponent.class, new NullRenderer());
 142  4
     }
 143  
 
 144  
     /**
 145  
      * {@link UIComponent} クラスをキーにして、レンダラを取得します。</br>
 146  
      * 
 147  
      * @param uiComponentClass
 148  
      *            レンダラに対応する {@link UIComponent} の {@link Class} オブジェクト
 149  
      * @return レンダラオブジェクト
 150  
      * @throws NotFoundException
 151  
      *             レンダラが見つからなかった場合
 152  
      */
 153  
     public static Renderer getRenderer(
 154  
             final Class<? extends UIComponent> uiComponentClass) {
 155  1852
         Renderer renderer = rendererMap.get(uiComponentClass);
 156  1852
         if (renderer != null) {
 157  1852
             return renderer;
 158  
         } else {
 159  0
             throw new NotFoundException(UrumaMessageCodes.RENDERER_NOT_FOUND,
 160  
                     uiComponentClass.getName());
 161  
         }
 162  
     }
 163  
 
 164  
     /**
 165  
      * {@link UIComponent} クラスをキーとして、レンダラを登録します。</br>
 166  
      * 
 167  
      * @param uiComponentClass
 168  
      *            {@link UIComponent} クラスの {@link Class} オブジェクト
 169  
      * @param renderer
 170  
      *            レンダラオブジェクト
 171  
      */
 172  
     public static void addRenderer(
 173  
             final Class<? extends UIComponent> uiComponentClass,
 174  
             final Renderer renderer) {
 175  136
         AssertionUtil.assertNotNull("uiComponentClass", uiComponentClass);
 176  136
         AssertionUtil.assertNotNull("renderer", renderer);
 177  136
         rendererMap.put(uiComponentClass, renderer);
 178  136
     }
 179  
 }