View Javadoc
1   /**
2    * This file Copyright (c) 2003-2014 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$ ($Author$)
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      @Override
64      public void init(HttpServletRequest request, HttpServletResponse response, Content websiteNode, Content configNode)
65          throws RepositoryException {
66          super.init(request, response, websiteNode, configNode);
67          buttons.add(new Button());
68      }
69  
70      public Button getButton() {
71          return this.getButton(0);
72      }
73  
74      public Button getButton(int index) {
75          return (Button) this.getButtons().get(index);
76      }
77  
78      public void setButtons(List l) {
79          this.buttons = l;
80      }
81  
82      public List getButtons() {
83          return this.buttons;
84      }
85  
86      /**
87       * @see info.magnolia.cms.gui.dialog.DialogControl#drawHtml(Writer)
88       */
89      @Override
90      public void drawHtml(Writer out) throws IOException {
91          doBeforeDrawHtml();
92  
93          Edit control = new Edit(this.getName(), this.getValue());
94          control.setType(this.getConfigValue("type", PropertyType.TYPENAME_STRING)); //$NON-NLS-1$
95          if (this.getConfigValue("saveInfo").equals("false")) { //$NON-NLS-1$ //$NON-NLS-2$
96              control.setSaveInfo(false);
97          }
98          control.setCssClass(CssConstants.CSSCLASS_EDIT);
99          control.setRows(this.getConfigValue("rows", "1")); //$NON-NLS-1$ //$NON-NLS-2$
100         control.setCssStyles("width", "100%"); //$NON-NLS-1$ //$NON-NLS-2$
101         if (this.getConfigValue("onchange", null) != null) { //$NON-NLS-1$
102             control.setEvent("onchange", this.getConfigValue("onchange")); //$NON-NLS-1$ //$NON-NLS-2$
103         }
104         this.drawHtmlPre(out);
105         String width = this.getConfigValue("width", "95%"); //$NON-NLS-1$ //$NON-NLS-2$
106         out.write("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"" + width + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
107         out.write("<tr><td style=\"width:100%\"  class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
108         out.write(control.getHtml());
109         if (this.getConfigValue("buttonLabel", null) != null) { //$NON-NLS-1$
110             String label = this.getConfigValue("buttonLabel"); //$NON-NLS-1$
111             label = this.getMessage(label);
112             this.getButton().setLabel(label);
113         }
114         for (int i = 0; i < this.getButtons().size(); i++) {
115             out.write("</td><td></td><td class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
116             out.write(this.getButton(i).getHtml());
117         }
118         out.write("</td></tr></table>"); //$NON-NLS-1$
119 
120         this.drawHtmlPost(out);
121     }
122 
123     /**
124      * A hook method for lazy configuration of the widget.
125      */
126     protected void doBeforeDrawHtml() {
127     }
128 }