View Javadoc

1   /**
2    * This file Copyright (c) 2003-2010 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.cms.gui.dialog;
35  
36  import info.magnolia.cms.core.Content;
37  import info.magnolia.cms.gui.control.Button;
38  import info.magnolia.cms.gui.control.Edit;
39  import info.magnolia.cms.gui.misc.CssConstants;
40  
41  import java.io.IOException;
42  import java.io.Writer;
43  import java.util.ArrayList;
44  import java.util.List;
45  
46  import javax.jcr.PropertyType;
47  import javax.jcr.RepositoryException;
48  import javax.servlet.http.HttpServletRequest;
49  import javax.servlet.http.HttpServletResponse;
50  
51  
52  /**
53   * @author Vinzenz Wyser
54   * @version $Revision: 32667 $ ($Author: gjoseph $)
55   */
56  public class DialogEditWithButton extends DialogBox {
57  
58      private List buttons = new ArrayList();
59  
60      /**
61       * @see info.magnolia.cms.gui.dialog.DialogControl#init(HttpServletRequest, HttpServletResponse, Content, Content)
62       */
63      public void init(HttpServletRequest request, HttpServletResponse response, Content websiteNode, Content configNode)
64          throws RepositoryException {
65          super.init(request, response, websiteNode, configNode);
66          buttons.add(new Button());
67      }
68  
69      public Button getButton() {
70          return this.getButton(0);
71      }
72  
73      public Button getButton(int index) {
74          return (Button) this.getButtons().get(index);
75      }
76  
77      public void setButtons(List l) {
78          this.buttons = l;
79      }
80  
81      public List getButtons() {
82          return this.buttons;
83      }
84  
85      /**
86       * @see info.magnolia.cms.gui.dialog.DialogControl#drawHtml(Writer)
87       */
88      public void drawHtml(Writer out) throws IOException {
89          doBeforeDrawHtml();
90  
91          Edit control = new Edit(this.getName(), this.getValue());
92          control.setType(this.getConfigValue("type", PropertyType.TYPENAME_STRING)); //$NON-NLS-1$
93          if (this.getConfigValue("saveInfo").equals("false")) { //$NON-NLS-1$ //$NON-NLS-2$
94              control.setSaveInfo(false);
95          }
96          control.setCssClass(CssConstants.CSSCLASS_EDIT);
97          control.setRows(this.getConfigValue("rows", "1")); //$NON-NLS-1$ //$NON-NLS-2$
98          control.setCssStyles("width", "100%"); //$NON-NLS-1$ //$NON-NLS-2$
99          if (this.getConfigValue("onchange", null) != null) { //$NON-NLS-1$
100             control.setEvent("onchange", this.getConfigValue("onchange")); //$NON-NLS-1$ //$NON-NLS-2$
101         }
102         this.drawHtmlPre(out);
103         String width = this.getConfigValue("width", "95%"); //$NON-NLS-1$ //$NON-NLS-2$
104         out.write("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"" + width + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
105         out.write("<tr><td style=\"width:100%\"  class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
106         out.write(control.getHtml());
107         if (this.getConfigValue("buttonLabel", null) != null) { //$NON-NLS-1$
108             String label = this.getConfigValue("buttonLabel"); //$NON-NLS-1$
109             label = this.getMessage(label);
110             this.getButton().setLabel(label);
111         }
112         for (int i = 0; i < this.getButtons().size(); i++) {
113             out.write("</td><td></td><td class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
114             out.write(this.getButton(i).getHtml());
115         }
116         out.write("</td></tr></table>"); //$NON-NLS-1$
117 
118         this.drawHtmlPost(out);
119     }
120 
121     /**
122      * A hook method for lazy configuration of the widget.
123      */
124     protected void doBeforeDrawHtml() {
125     }
126 }