1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.svg.edit.client.gxt.widget;
19
20 import org.vectomatic.dom.svg.ui.SVGImage;
21
22 import com.extjs.gxt.ui.client.core.El;
23 import com.extjs.gxt.ui.client.util.Util;
24 import com.extjs.gxt.ui.client.widget.button.Button;
25 import com.google.gwt.user.client.Element;
26 import com.google.gwt.user.client.ui.Accessibility;
27
28
29
30
31
32
33 public class SVGButton extends Button {
34 protected SVGImage svgImage;
35
36 public SVGButton(SVGImage svgImage) {
37 setSVGImage(svgImage);
38 }
39
40 public SVGImage getSVGImage() {
41 return svgImage;
42 }
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public void setSVGImage(SVGImage svgImage) {
59 if (rendered) {
60 El oldIcon = buttonEl.selectNode("." + baseStyle + "-image");
61 if (oldIcon != null) {
62 oldIcon.remove();
63 el().removeStyleName(baseStyle + "-text-icon",
64 baseStyle + "-icon", baseStyle + "-noicon");
65 }
66 el().addStyleName(
67 (svgImage != null ? (!Util.isEmptyString(text) ? " "
68 + baseStyle + "-text-icon" : " " + baseStyle
69 + "-icon") : " " + baseStyle + "-noicon"));
70 Element e = null;
71
72 if (svgImage != null) {
73 e = (Element) svgImage.getElement().cast();
74
75 Accessibility.setRole(e, "presentation");
76 fly(e).addStyleName(baseStyle + "-image");
77
78 buttonEl.insertFirst(e);
79 El.fly(e).makePositionable(true);
80
81 }
82 autoWidth();
83 alignIcon(e);
84 }
85 this.svgImage = svgImage;
86 }
87
88 @Override
89 protected void afterRender() {
90 super.afterRender();
91 setSVGImage(svgImage);
92 }
93
94 }