View Javadoc

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 org.eclipse.jface.action.MenuManager;
19  import org.eclipse.swt.widgets.Menu;
20  import org.seasar.framework.util.StringUtil;
21  import org.seasar.uruma.component.UIComponent;
22  import org.seasar.uruma.component.jface.MenuComponent;
23  import org.seasar.uruma.context.PartContext;
24  import org.seasar.uruma.context.WidgetHandle;
25  import org.seasar.uruma.context.WindowContext;
26  import org.seasar.uruma.renderer.RendererSupportUtil;
27  
28  /**
29   * {@link MenuManager} のレンダリングを行うクラスです。<br />
30   * 
31   * @author y-komori
32   */
33  public class MenuManagerRenderer extends AbstractRenderer {
34  
35      /*
36       * @see org.seasar.uruma.renderer.impl.AbstractRenderer#preRender(org.seasar.uruma.component.UIComponent,
37       *      org.seasar.uruma.context.WidgetHandle,
38       *      org.seasar.uruma.context.WindowContext)
39       */
40      @Override
41      public WidgetHandle preRender(final UIComponent uiComponent,
42              final WidgetHandle parent, final WindowContext context) {
43  
44          if (parent == null) {
45              return createWidgetHandle(uiComponent, createMenuManager());
46          } else if (parent.getUiComponent() instanceof MenuComponent) {
47              MenuComponent menuComponent = (MenuComponent) uiComponent;
48  
49              MenuManager menuManager = new MenuManager(menuComponent.text);
50              setVisivle(menuComponent, menuManager);
51  
52              MenuManager parentManager = parent.<MenuManager> getCastWidget();
53              parentManager.add(menuManager);
54  
55              WidgetHandle handle = createWidgetHandle(uiComponent, menuManager);
56  
57              return handle;
58          }
59          return null;
60      }
61  
62      /**
63       * メニューのレンダリングを行います。<br />
64       * 
65       * @param menuComponent
66       *            {@link MenuComponent} オブジェクト
67       * @param menu
68       *            {@link Menu} オブジェクト
69       */
70      public void renderMenu(final MenuComponent menuComponent, final Menu menu) {
71          String x = menuComponent.x;
72          String y = menuComponent.y;
73          if (!StringUtil.isEmpty(x) && !StringUtil.isEmpty(y)) {
74              menu.setLocation(Integer.valueOf(x), Integer.valueOf(y));
75          }
76      }
77  
78      /*
79       * @see org.seasar.uruma.renderer.Renderer#render(org.seasar.uruma.component.UIComponent,
80       *      org.seasar.uruma.context.WidgetHandle,
81       *      org.seasar.uruma.context.PartContext)
82       */
83      public WidgetHandle render(final UIComponent uiComponent,
84              final WidgetHandle parent, final PartContext context) {
85          // Do nothing.
86          return null;
87      }
88  
89      /*
90       * @see org.seasar.uruma.renderer.Renderer#renderAfter(org.seasar.uruma.context.WidgetHandle,
91       *      org.seasar.uruma.component.UIComponent,
92       *      org.seasar.uruma.context.WidgetHandle,
93       *      org.seasar.uruma.context.PartContext)
94       */
95      public void renderAfter(final WidgetHandle widget,
96              final UIComponent uiComponent, final WidgetHandle parent,
97              final PartContext context) {
98          // Do nothing.
99      }
100 
101     protected void setVisivle(final MenuComponent menuComponent,
102             final MenuManager menuManager) {
103         String visible = menuComponent.visible;
104         if (visible != null) {
105             menuManager.setVisible(RendererSupportUtil.convertBoolean(visible));
106         }
107     }
108 
109     protected MenuManager createMenuManager() {
110         return new MenuManager();
111     }
112 }