1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
57
58
59 public class DialogEditWithButton extends DialogBox {
60
61 private List buttons = new ArrayList();
62
63
64
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
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));
96 if (this.getConfigValue("saveInfo").equals("false")) {
97 control.setSaveInfo(false);
98 }
99 control.setCssClass(CssConstants.CSSCLASS_EDIT);
100 control.setRows(this.getConfigValue("rows", "1"));
101 control.setCssStyles("width", "100%");
102 if (this.getConfigValue("onchange", null) != null) {
103 control.setEvent("onchange", this.getConfigValue("onchange"));
104 }
105 this.drawHtmlPre(out);
106 String width = this.getConfigValue("width", "95%");
107 out.write("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"" + width + "\">");
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) {
115 String label = this.getConfigValue("buttonLabel");
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>");
128
129 this.drawHtmlPost(out);
130 }
131
132
133
134
135 protected void doBeforeDrawHtml() {
136 }
137 }