View Javadoc

1   /**
2    * This file Copyright (c) 2003-2011 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  import info.magnolia.context.MgnlContext;
41  
42  import java.io.IOException;
43  import java.io.Writer;
44  import java.util.ArrayList;
45  import java.util.List;
46  
47  import javax.jcr.PropertyType;
48  import javax.jcr.RepositoryException;
49  import javax.servlet.http.HttpServletRequest;
50  import javax.servlet.http.HttpServletResponse;
51  
52  import org.apache.commons.lang.StringUtils;
53  
54  
55  /**
56   * @author Vinzenz Wyser
57   * @version $Revision$ ($Author$)
58   */
59  public class DialogEditWithButton extends DialogBox {
60  
61      private List buttons = new ArrayList();
62  
63      /**
64       * @see info.magnolia.cms.gui.dialog.DialogControl#init(HttpServletRequest, HttpServletResponse, Content, Content)
65       */
66      public void init(HttpServletRequest request, HttpServletResponse response, Content websiteNode, Content configNode)
67          throws RepositoryException {
68          super.init(request, response, websiteNode, configNode);
69          buttons.add(new Button());
70      }
71  
72      public Button getButton() {
73          return this.getButton(0);
74      }
75  
76      public Button getButton(int index) {
77          return (Button) this.getButtons().get(index);
78      }
79  
80      public void setButtons(List l) {
81          this.buttons = l;
82      }
83  
84      public List getButtons() {
85          return this.buttons;
86      }
87  
88      /**
89       * @see info.magnolia.cms.gui.dialog.DialogControl#drawHtml(Writer)
90       */
91      public void drawHtml(Writer out) throws IOException {
92          doBeforeDrawHtml();
93  
94          Edit control = new Edit(this.getName(), this.getValue());
95          control.setType(this.getConfigValue("type", PropertyType.TYPENAME_STRING)); //$NON-NLS-1$
96          if (this.getConfigValue("saveInfo").equals("false")) { //$NON-NLS-1$ //$NON-NLS-2$
97              control.setSaveInfo(false);
98          }
99          control.setCssClass(CssConstants.CSSCLASS_EDIT);
100         control.setRows(this.getConfigValue("rows", "1")); //$NON-NLS-1$ //$NON-NLS-2$
101         control.setCssStyles("width", "100%"); //$NON-NLS-1$ //$NON-NLS-2$
102         if (this.getConfigValue("onchange", null) != null) { //$NON-NLS-1$
103             control.setEvent("onchange", this.getConfigValue("onchange")); //$NON-NLS-1$ //$NON-NLS-2$
104         }
105         this.drawHtmlPre(out);
106         String width = this.getConfigValue("width", "95%"); //$NON-NLS-1$ //$NON-NLS-2$
107         out.write("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"" + width + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
108         if(StringUtils.contains(MgnlContext.getWebContext().getRequest().getHeader("User-Agent"), "MSIE 7")){
109             out.write("<tr><td style=\"width:200px\" class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">");
110         }else{
111             out.write("<tr><td style=\"width:100%\"  class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">");
112         }
113         out.write(control.getHtml());
114         if (this.getConfigValue("buttonLabel", null) != null) { //$NON-NLS-1$
115             String label = this.getConfigValue("buttonLabel"); //$NON-NLS-1$
116             label = this.getMessage(label);
117             this.getButton().setLabel(label);
118         }
119         for (int i = 0; i < this.getButtons().size(); i++) {
120             if(StringUtils.contains(MgnlContext.getWebContext().getRequest().getHeader("User-Agent"), "MSIE 7")){
121                 out.write("</td><td></td><td style=\"position:absolute\" style=\"left:420px\" class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">");
122             }else{
123                 out.write("</td><td></td><td class=\"" + CssConstants.CSSCLASS_EDITWITHBUTTON + "\">");
124             }
125             out.write(this.getButton(i).getHtml());
126         }
127         out.write("</td></tr></table>"); //$NON-NLS-1$
128 
129         this.drawHtmlPost(out);
130     }
131 
132     /**
133      * A hook method for lazy configuration of the widget.
134      */
135     protected void doBeforeDrawHtml() {
136     }
137 }