View Javadoc
1   /*
2    * Copyright (C) 2003-2009 eXo Platform SAS.
3    *
4    * This program is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU Affero General Public License
6    * as published by the Free Software Foundation; either version 3
7    * of the License, or (at your option) any later version.
8    *
9    * This program is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with this program; if not, see<http://www.gnu.org/licenses/>.
16   */
17  package org.exoplatform.social.webui.space;
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  
22  import org.exoplatform.social.core.space.model.Space;
23  import org.exoplatform.webui.application.WebuiRequestContext;
24  import org.exoplatform.webui.config.annotation.ComponentConfig;
25  import org.exoplatform.webui.config.annotation.EventConfig;
26  import org.exoplatform.webui.core.model.SelectItemOption;
27  import org.exoplatform.webui.event.Event;
28  import org.exoplatform.webui.event.EventListener;
29  import org.exoplatform.webui.form.UIFormInputSet;
30  import org.exoplatform.webui.form.UIFormRadioBoxInput;
31  
32  
33  @ComponentConfig(
34      template = "war:/groovy/social/webui/space/UIVisibilityFormInputSet.gtmpl",
35      events = {
36          @EventConfig(listeners = UISpaceVisibility.ChangeVisibilityActionListener.class)
37      }
38  )
39  public class UISpaceVisibility extends UIFormInputSet {
40    public static final String UI_SPACE_REGISTRATION = "UIRegistration";
41    private static final String REGISTRATION_BINDING  = "registration";
42    private String visibility;
43  
44    /**
45     * Constructor
46     * @param name
47     * @throws Exception
48     */
49    public UISpaceVisibility(String name) throws Exception {
50      super(name);
51      setComponentConfig(getClass(), null);
52      setVisibility(Space.PRIVATE);
53  
54      List<SelectItemOption<String>> spaceRegistration = new ArrayList<SelectItemOption<String>>(3);
55  
56      SelectItemOption<String> openOption = new SelectItemOption<String>(Space.OPEN);
57      openOption.setSelected(true);
58      spaceRegistration.add(openOption);
59  
60      SelectItemOption<String> validationOption = new SelectItemOption<String>(Space.VALIDATION);
61      spaceRegistration.add(validationOption);
62  
63      SelectItemOption<String> closeOption = new SelectItemOption<String>(Space.CLOSE);
64      spaceRegistration.add(closeOption);
65  
66      UIFormRadioBoxInput uiRadioRegistration = new UIFormRadioBoxInput(UI_SPACE_REGISTRATION,
67                                                                        REGISTRATION_BINDING,
68                                                                        spaceRegistration);
69      uiRadioRegistration.setValue(Space.OPEN);
70      addUIFormInput(uiRadioRegistration);
71    }
72  
73    public void setVisibility(String visibility) {
74      this.visibility = visibility;
75    }
76  
77    public String getVisibility() {
78      return visibility;
79    }
80  
81    static public class ChangeVisibilityActionListener extends EventListener<UISpaceVisibility> {
82      public void execute(Event<UISpaceVisibility> event) throws Exception {
83        UISpaceVisibility uiSpaceVisibility = event.getSource();
84        String oldVisibility = uiSpaceVisibility.getVisibility();
85        String visibility = Space.HIDDEN.equals(oldVisibility) ? Space.PRIVATE : Space.HIDDEN;
86        uiSpaceVisibility.setVisibility(visibility);
87        WebuiRequestContext ctx = event.getRequestContext();
88        ctx.addUIComponentToUpdateByAjax(uiSpaceVisibility);
89      }
90    }
91  }